USB驅動分為兩塊,一塊是USB的bus驅動,這個東西,Linux內核已經做好了,我們可以不管,我們只需要了解它的功能。形象的說,USB的bus驅動相當于鋪出一條路來,讓所有的信息都可以通過這條USB通道到達該到的地方,這部分工作由usb_core(drivers/usb/usb.c)來完成。當USB設備接到USB控制器接口時,usb_core就檢測該設備的一些信息,如生產廠商的ID(VID)和產品的ID(PID),或者是設備所屬的class、subclass跟protocol,以便確定應該調用哪一個驅動處理該設備。里面復雜細節我們不用管,我們要做的是另一塊工作——usb的設備驅動。也就是說,我們就等著usb_core告訴我們要工作了,我們才工作。
OHCI(Open?Host?Controller?Interface)是支持USB1.1的標準,但它不僅僅是針對USB,還支持其他的一些接口,比如它還支持Apple的火線(Firewire,IEEE?1394)接口。與UHCI相比,OHCI的硬件復雜,硬件做的事情更多,所以實現對應的軟件驅動的任務,就相對較簡單。主要用于非x86的USB,如擴展卡、嵌入式開發板的USB主控。本文也是基于OHCI來介紹usb設備驅動的。
USB從設備的分類可以從USB設備接口描述符(Standard?Interface???Descriptor)對應的的bInterfaceClass這一個byte得到。bInterfaceClass的典型代碼為1,2,3,6,7,8,9,10,11,255。分別代表的意思為
1-audio:表示一個音頻設備。
2-communication??device:通訊設備,如電話,moden等等。
3-HID:人機交互設備,如鍵盤,鼠標等。
6-image圖象設備,如掃描儀,攝像頭等,有時數碼相機也可歸到這一類。
7-打印機類。如單向,雙向打印機等。
8-mass?storage海量存儲類。所有帶有一定存儲功能的都可以歸到這一類。
9-hub類。
11-chip?card/smart?card。
255-vendor?specific.廠家的自定義類,主要用于一些特殊的設備。如接口轉接卡等。
USB?4種傳輸方式
針對設備對系統資源需求的不同,在USB規范中規定了4種數據傳輸方式:
(1)等時傳輸。該方式用來連接需要連續傳輸,且對數據的正確性要求不高而對時間極為敏感的外部設備,如麥克風、音響及電話等。等時傳輸方式以固定的傳輸速率,連續不斷地在主機與USB設備之間傳輸數據,在傳輸數據發生錯誤是,USB并不處理這些錯誤,而是繼續傳送信的數據。
(2)中斷傳輸。改方式傳輸的數據量很小,但這些數據需要及時處理,以達到實時效果,以此方式主要用在鍵盤、鼠標以及游戲手柄等外部設備上。
(3)控制傳輸。改方式用來處理主機的USB設備的數據傳輸。包括設備控制指令、設備狀態查詢及確認命令。當USB設備收到這些數據和命令后,將依據先進先出的原則按隊列方式處理到達的數據。
(4)批量傳輸、該方式用來傳輸要求正確無誤的數據。通常打印機、掃描儀和數碼相機以這種方式與主機連接。
在這4種數據傳輸方式中,除等時傳輸方式外,其他3種方式在數據傳輸發生錯誤是,都會試圖重行發送數據以保證其正確性。
3.USB枚舉
枚舉就是從設備讀取一些信息,知道設備是什么樣的設備,如何進行通信,這樣主機就可以根據這些信息來加載合適的驅動程序。調試USB設備,很重要的一點就是USB的枚舉過程,只要枚舉成功了,那么就已經成功大半了。
3.1?USB枚舉過程概述
USB主機檢測到USB設備插入后,就會先對設備復位。設備復位后,USB主機就會對地址為0的設備發送獲取設備描述符的標準請求。所有的USB設備在總線復位后其他地址都為0,這樣主機可以跟那些剛剛插入的設備通過地址0通信。主機在建立階段發出獲取設備描述符的輸入請求,設備受到請求后,將設備描述符返回給主機。主機在成功獲取到一個數據包的設備描述符后并且確認沒有錯誤后(有些usb設備的斷點0大小不足18字節,但至少有8字節,而標準的設備描述符有18個字節,在這種情況下,USB設備只能暫時按最大包將部分設備描述符返回,而主機在成功獲取到前面一部分描述符后,就不會在請求剩下的設備描述符部分,而是進入設置地址階段),就會返回一個0長度的狀態數據包給設備。
然后主機再對設備復位一下,接下來就會靜茹到設置地址階段。這時USB主機發出一個設置地址的請求(建立過程,設置地址無數據過程),地址包含在建立包過程,具體的地址USB主機會負責管理,它會分配一個唯一的地址給新的設備。USB設備在收到地址后,返回0長度的狀態包,主機收到0長度的狀態包后,會返回一個ACK給設備。設備在收到這個ACK后,就可以啟用這個新地址了。這樣設備就分配到了一個唯一的設備地址,以后主機就通過它來訪問該設備。
然后主機再次獲取設備描述符,這次跟第一次可能有點不一樣,這次需要獲取全部的18個字節的設備描述符。當然,若果你的端點0緩沖大小大于18個自己的話,那就跟第一次的情形一樣了。
接下來,主機會獲取配置描述符。配置描述符總共為9個字節。主機在獲得到配置描述符后,根據里面的配置集合總長度,再獲得配置集合。配置集合包括配置描述符,接口描述符,端點描述符等。
如果有字符串描述符的話,還要獲取字符串描述符。另外HID設備還有HID描述符等。
USB設備枚舉過程主要可分為8個部分:
1、獲取設備描述符
2、復位
3、設置地址
4、再次獲取設備描述符
5、獲取配置描述符
6、獲取接口、端點描述符
7、獲取字符串描述符
8、選擇設備配置
(附3是HP1108打印機插到pc上時通過Bus Hound抓到的枚舉過程,可以以作為一個很好的學習例子。)
3.2?USB枚舉過程詳解
USB協議定義了設備的6種狀態,僅在枚舉過程中,設備就經歷了4個狀態的遷移:上電狀態(Powered),默認狀態(Default),地址狀態(Address)和配置狀態(Configured)(其他兩種是連接狀態和掛起狀態(Suspend))。
(1)用戶把USB設備插入USB端口或系統啟動時給設備上電
這里的USB端口指的是主機下的根hub或主機下行端口上的hub端口。Hub給端口供電(hub.c:usb_hub_power_on()),連接著的設備處于上電狀態。此時,USB設備處于加電狀態,它所連接的端口是無效的。
(2)?Hub監測它各個端口數據線上(D+/D-)的電壓
在hub端,數據線D+和D-都有一個阻值在14.25k到24.8k的下拉電阻Rpd,而在設備端,D+(全速,高速)和D-(低速)上有一個1.5k的上拉電阻Rpu。當設備插入到hub端口時,有上拉電阻的一根數據線被拉高到幅值的90%的電壓(大致是3V)。hub檢測到它的一根數據線是高電平,就認為是有設備插入,并能根據是D+還是D-被拉高來判斷到底是什么設備(全速/低速)插入端口。檢測到設備后,hub繼續給設備供電,但并不急于與設備進行USB傳輸。
USB接口定義如下圖所示:
(3)Host了解連接的設備
每個hub利用它自己的中斷端點向主機報告它的各個端口的狀態(hub.c:usb_hub_events()),報告的內容只是hub端口的設備連接/斷開的事件。如果有連接/斷開事件發生(hub.c:usb_hub_port_connect_change()),那么host會發送一個?usb_hub_port_status請求給hub以了解此次狀態改變的確切含義。usb_hub_port_status等請求屬于所有hub都要求支持的hub類標準請求(standard?hub-class?requests)。
(4)?Hub檢測所插入的設備是高速還是低速設備
hub通過檢測USB總線空閑(Idle)時差分線的高低電壓來判斷所連接設備的速度類型,當host發來usb_hub_port_status請求時,hub就可以將此設備的速度類型信息回復給host。
(5)?hub復位設備
主機一旦得知新設備已連上以后,它至少等待100ms以使得插入操作的完成以及設備電源穩定工作。然后主機控制器就向hub發出一個?usb_set_port_feature請求讓hub復位其管理的端口(剛才設備插上的端口)。hub通過驅動數據線到復位狀態(D+和D-全為低電平?),并持續至少10ms。當然,hub不會把這樣的復位信號發送給其他已有設備連接的端口,所以其他連在該hub上的設備自然看不到復位信號,不受影響。
(6)?Host檢測所連接的全速設備是否是支持高速模式
對于USB1.1協議,host不進行高速檢測,設備將一直以全速工作。如果是USB?2.0協議,高速(High?Speed)設備在初始時是默認全速(Full?Speed?)狀態運行,所以對于一個支持USB?2.0的高速hub,當它發現它的端口連接的是一個全速設備時,會進行高速檢測,看看目前這個設備是否還支持高速傳輸,如果是,那就切到高速信號模式,否則就一直在全速狀態下工作。
????同樣的,從設備的角度來看,如果是一個高速設備,在剛連接bub或上電時只能用全速信號模式運行(根據USB?2.0協議,高速設備必須向下兼容USB?1.1的全速模式)。隨后hub會進行高速檢測,之后這個設備才會切換到高速模式下工作。
(7)?Hub建立設備和主機之間的信息通道
主機通過usb_hub_port_wait_reset不停地向hub發送usb_hub_port_status請求,以查詢設備是否復位成功。Hub返回的報告信息中有專門的一位用來標志設備的復位狀態。
????當hub撤銷了復位信號,設備就處于默認/空閑狀態(Default?state),準備接收主機發來的請求。設備和主機之間的通信通過控制傳輸,默認地址0,端點號0進行。此時,設備能從總線上得到的最大電流是100mA。(所有的USB設備在總線復位后其地址都為0,這樣主機就可以跟那些剛剛插入的設備通過地址0通信。)
(8)?主機發送usb_get_device_descriptor請求獲取默認管道的最大包長度
默認管道(Default?Pipe)在設備一端來看就是端點0。主機此時發送的請求是默認地址0,端點0,雖然所有未分配地址的設備都是通過地址0來獲取主機發來的請求,但由于枚舉過程不是多個設備并行處理,而是一次枚舉一個設備的方式進行,所以不會發生多個設備同時響應主機發來的請求。
? 設備描述符(附1)的第8字節(bMaxPacketSize)代表設備端點0的最大包大小。雖然說設備所返回的設備描述符(Device?Descriptor)長度只有18字節,但系統也不在乎,此時,描述符的長度信息對它來說是最重要的。當完成第一次的控制傳輸后,也就是完成控制傳輸的狀態階段,系統會要求hub對設備進行再一次的復位操作(USB規范里面可沒這要求)。再次復位的目的是使設備進入一個確定的狀態。
(9)?主機給設備分配一個地址
主機控制器通過usb_set_address請求向設備分配一個唯一的地址。在完成這次傳輸之后,設備進入地址狀態(Address?state),之后就啟用新地址繼續與主機通信。這個地址對于設備來說是終生制的,設備在,地址在;設備消失(被拔出,復位,系統重啟),地址被收回。同一個設備當再次被枚舉后得到的地址不一定是上次那個了。
(10)?主機獲取設備的信息
主機發送?usb_get_device_descriptor請求到新地址讀取設備描述符,這次主機發送usb_get_device_descriptor會認真解析設備描述符的內容。設備描述符內信息包括端點0的最大包長度,設備所支持的配置(Configuration)個數,設備類型,VID(Vendor?ID,由USB-IF分配),?PID((Product?ID,由廠商自己定制)等信息。Get_Descriptor請求(Device?type)和設備描述符(已抹去VID,PID等信息)
之后主機發送usb_get_configuration請求,讀取配置描述符(附2),字符串等,逐一了解設備更詳細的信息。事實上,對于配置描述符的標準請求中,有時bLength(附2)一項會大于實際配置描述符的長度(9字節),比如255。這樣的效果便是:主機發送了一個usb_get_configuration?的請求,設備會把接口描述符,端點描述符等后續描述符一并回給主機,主機則根據描述符頭部的標志判斷送上來的具體是何種描述符。
????接下來,主機就會獲取配置描述符。配置描述符總共為9字節。主機在獲取到配置描述符后,根據里面的配置集合總長度,再獲取配置集合。配置集合包括配置描述符,接口描述符,端點描符等等。
????如果有字符串描述符的話,還要獲取字符串描述符。另外HID設備還有HID描述符等。
(11)??主機給設備掛載驅動
主機通過解析描述符后對設備有了足夠的了解,會通過usb_find_drivers選擇一個最合適的驅動給設備。然后tell?the?world(announce_device)說明設備已經找到了,最后調用設備模型提供的接口usbdevfs_add_device將設備添加到?usb?總線的設備列表里,然后?usb總線會遍歷驅動列表usb_driver_list里的每個驅動,調用自己的?usb_match_id?函數看它們和當前連接的設備或接口是否匹配,匹配的話就將控制權交到相應的設備驅動了。???
對于復合設備,通常應該是不同的接口(Interface)配置給不同的驅動,因此,需要等到當設備被配置并把接口使能后才可以把驅動掛載上去。
(12)?設備驅動選擇一個配置
驅動(注意,這里是驅動,之后的事情都是由驅動來接管負責與設備的通信)根據前面設備回復的信息,發送usb_set_configuration請求來正式確定選擇設備的哪個配置(Configuration)作為工作配置(對于大多數設備來說,一般只有一個配置被定義)。至此,設備處于配置狀態(Configured),當然,設備也應該使能它的各個接口(Interface)。
????對于復合設備,主機會在這個時候根據設備接口信息,給它們掛載驅動。至此,USB枚舉過程結束,設備可以正常使用了。
附1??設備描述符結構體
//設備描述符
struct?usb_device_descriptor?{
????__u8??bLength;//端點描述符長度,單位為Byte
????__u8??bDescriptorType;//描述符的類型
????__le16?bcdUSB;//以bcd碼,標出的usb的版本號
????__u8??bDeviceClass;//該設備所屬的類
????__u8??bDeviceSubClass;//該設備所屬的子類
????__u8??bDeviceProtocol;//該設備所用的協議
????__u8??bMaxPacketSize0;//端點0的最大包大小
????__le16?idVendor;//廠商id
????__le16?idProduct;//產品id
????__le16?bcdDevice;//設備版本號
????__u8??iManufacturer;//制造商描述符串索引
????__u8??iProduct;//產品描述符串索引
????__u8??iSerialNumber;//usb串號串索引
????__u8??bNumConfigurations;//該設備所擁有的配置個數
}?__attribute__?((packed));
附2??配置描述符結構體
struct?usb_config_descriptor?{
????__u8??bLength;//端點描述符長度,單位為Byte
????__u8??bDescriptorType;//描述符的類型
????__le16?wTotalLength;//配置描述符的總長度
????__u8??bNumInterfaces;//該配置下的接口個數
????__u8??bConfigurationValue;//該配置的索引
????__u8??iConfiguration;//配置描述符串索引
????__u8??bmAttributes;
????__u8??bMaxPower;//該配置所能供應的最大電流,以2mA為單位
}?__attribute__?((packed));
附3? BUS HOUND 抓usb打印機HP1108的枚舉過程
Bus Hound 5.04capture on Windows XP Service Pack 3. Complements of?www.perisoft.net
Device -Device ID (followed by the endpoint for USB devices)
??????????? (19)Prolific USB-to-Serial Comm Port (COM2)
??????????? (21) USBComposite Device
??????????? (22) HPSmart Install [ROM=1.0 ]
??????????? (23) USBPrinting Support
??????????? (24) P1100USB EWS Device Driver
??????????? (25) HPLaserJet Professional P1108
? Phase? - Phase Type
???????????CMD?? SCSI/ATAPIcommand???????? RESET bus reset
???????????CTL?? USB control transfer?????? SENSESCSI sense data
???????????IN??? Data intransfer?????????? USTS?USB status
???????????OUT?? Data outtransfer?????????ok??? command complete
? Data?? - Hex dump of the data transferred
? Descr? - Description of the phase
? Cmd... - Position in the captured data
Device? Phase? Data???????????????????????????????????????????????????????????????????????????????????????????????????Description?????? Cmd.Phase.Ofs(rep)
------? -----?------------------------------------------------------------------------------------------------------?----------------? ------------------
? 21.0? CTL??? 80 06 00 03? 00 00 ff00???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR??????????1.1.0(2)?????
? 21.0? IN???? 04 03 0904????????????????????????????????????????????????????????????????????????????????????????????....????????????????????1.2.0????????
? 21.0? CTL??? 80 06 02 03? 09 04 ff00???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR??????????2.1.0(2)?????
? 21.0? IN???? 3e 03 48 00? 50 00 2000? 4c 00 61 00? 73 00 65 00? 72 00 4a 00? 65 00 7400? 20 00 50 00? 72 00 6f 00? >.H.P..L.a.s.e.???????? 2.2.0????????
??????????????66 00 65 00? 73 00 73 00? 69 00 6f 00? 6e 00 61 00? 6c 0020 00? 50 00 31 00? 31 00 30 00? 3800???????f.e.s.s.i.o.n.a.????????2.2.32???????
? 21.0? CTL??? 80 06 00 01? 00 00 1200???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR??????????5.1.0????????
? 21.0? IN???? 12 01 00 02? 00 00 0040? f0 03 2a 00? 00 01 01 02? 0301??????????????????????????????????????????????.......@..*.....????????5.2.0????????
? 21.0? CTL??? 80 06 00 02? 00 00 0900???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR?????????? 6.1.0????????
? 21.0? IN???? 09 02 20 00? 01 01 00c0?31???????????????????????????????????????????????????????????????????????????.......1???????????????6.2.0????????
? 21.0? CTL??? 80 06 00 02? 00 00 2000???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR??????????7.1.0????????
? 21.0? IN???? 09 02 20 00? 01 01 00c0? 31 09 04 00? 00 02 08 06? 50 05 07 05? 04 02 0002? 00 07 05 84? 02 00 02 00? .......1.......???????? 7.2.0????????
? 21.0? CTL??? 80 06 00 03? 00 00 0200???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR??????????8.1.0????????
? 21.0? IN???? 0403??????????????????????????????????????????????????????????????????????????????????????????????????..??????????????????????8.2.0????????
? 21.0? CTL??? 80 06 00 03? 00 00 0400???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR??????????9.1.0????????
? 21.0? IN???? 04 03 0904????????????????????????????????????????????????????????????????????????????????????????????....????????????????????9.2.0????????
? 21.0? CTL??? 80 06 03 03? 09 04 0200???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR?????????10.1.0????????
? 21.0? IN???? 2a03??????????????????????????????????????????????????????????????????????????????????????????????????*.?????????????????????10.2.0????????
? 21.0? CTL??? 80 06 03 03? 09 04 2a00???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR?????????11.1.0????????
? 21.0? IN???? 2a 03 30 00? 30 00 3000? 30 00 30 00? 30 00 30 00? 30 00 30 00? 51 00 3800? 37 00 57 00? 42 00 50 00?*.0.0.0.0.0.0.0.??????? 11.2.0????????
??????????????52 00 53 00? 49 00 31 00? 6300????????????????????????????????????????????????????????????????????????R.S.I.1.c.?????????????11.2.32???????
? 21.0? CTL??? 00 09 01 00? 00 00 0000???????????????????????????????????????????????????????????????????????????????SETCONFIG?????????????12.1.0????????
? 21.0? CTL??? 01 0b 00 00? 00 00 0000???????????????????????????????????????????????????????????????????????????????SET INTERFACE??????????13.1.0????????
? 21.0? CTL??? a1 fe 00 00? 00 00 01 00???????????????????????????????????????????????????????????????????????????????GET MAX LUN????????????14.1.0????????
? 21.0? IN????00?????????????????????????????????????????????????????????????????????????????????????????????????????.??????????????????????14.2.0????????
? 21.4? OUT??? 55 53 42 43? 08 90 9e 89? 2400 00 00? 80 00 06 12? 00 00 00 24? 00 00 00 00? 00 00 0000? 00 00 00????USBC....$.......???????15.1.0????????
? 21.4? IN???? 05 80 02 02? 1f 00 0000? 48 50 20 20? 20 20 20 20? 53 6d 61 72? 74 20 496e? 73 74 61 6c? 6c 20 20 20?........HP?????????????16.1.0????????
??????????????31 2e 3020????????????????????????????????????????????????????????????????????????????????????????????1.0????????????????????16.1.32???????
? 21.4? IN???? 55 53 42 53? 08 90 9e89? 00 00 00 00?00??????????????????????????????????????????????????????????????USBS.........?????????? 17.1.0????????
? 22??? CMD??? 12 00 00 00? 2400?????????????????????????????????????????????????????????????????????????????????????INQUIRY????????????????18.1.0????????
? 22??? IN???? 05 80 02 02? 1f 0000 00? 48 50 20 20? 20 20 20 20? 53 6d 61 72? 74 20 496e? 73 74 61 6c? 6c 20 20 20?........HP?????????????18.2.0????????
??????????????31 2e 3020????????????????????????????????????????????????????????????????????????????????????????????1.0????????????????????18.2.32???????
? 22??? CMD??? 12 00 00 00? 2400?????????????????????????????????????????????????????????????????????????????????????INQUIRY????????????????19.1.0(2)?????
? 21.4? OUT??? 55 53 42 43? 00 8e ae 8a? 2400 00 00? 80 00 06 12? 00 00 00 24? 00 00 00 00? 00 00 0000? 00 00 00????USBC....$.......???????20.1.0(2)?????
? 21.4? IN???? 05 80 02 02? 1f 00 0000? 48 50 20 20? 20 20 20 20? 53 6d 61 72? 74 20 496e? 73 74 61 6c? 6c 20 20 20?........HP?????????????21.1.0(2)?????
??????????????31 2e 3020????????????????????????????????????????????????????????????????????????????????????????????1.0????????????????????21.1.32???????
? 21.4? IN???? 55 53 42 53? 00 8e ae8a? 00 00 00 00?00??????????????????????????????????????????????????????????????USBS.........??????????22.1.0(2)?????
? 22??? IN???? 05 80 02 02? 1f 0000 00? 48 50 20 20? 20 20 20 20? 53 6d 61 72? 74 20 496e? 73 74 61 6c? 6c 20 20 20? ........HP?????????????19.2.0????????
??????????????31 2e 3020????????????????????????????????????????????????????????????????????????????????????????????1.0????????????????????19.2.32???????
? 22??? CMD??? 25 00 00 00? 00 00 0000? 0000????????????????????????????????????????????????????????????????????????READ CAPACITY??????????27.1.0(2)?????
? 21.4? OUT??? 55 53 42 43? 08 90 9e 89? 0800 00 00? 80 00 0a 25? 00 00 00 00? 00 00 00 00? 00 00 0000? 00 00 00????USBC...........%???????28.1.0(2)?????
? 21.4? USTS?? 04 00 00c0????????????????????????????????????????????????????????????????????????????????????????????stallpid??????????????29.1.0(2)?????
? 21.4?RESET?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????30.1.0(2)?????
? 21.4? IN???? 55 53 42 53? 08 90 9e89? 08 00 00 00?01??????????????????????????????????????????????????????????????USBS.........??????????31.1.0(2)?????
? 21.4? OUT??? 55 53 42 43? 08 90 9e 89? 1200 00 00? 80 00 0c 03? 00 00 00 12? 00 00 00 00? 00 00 0000? 00 00 00????USBC............???????32.1.0(2)?????
? 21.4? IN???? 70 00 06 00? 00 00 000a? 00 00 00 00? 28 00 00 00? 0000??????????????????????????????????????????????p...........(...??????? 33.1.0(2)?????
? 21.4? IN???? 55 53 42 53? 08 90 9e89? 00 00 00 00?00??????????????????????????????????????????????????????????????USBS.........??????????34.1.0(2)?????
? 22??? SENSE? 70 00 06 00? 00 00 00 0a? 0000 00 00? 28 00 00 00? 0000??????????????????????????????????????????????medium changed?????????27.2.0????????
? 22??? CMD??? 4a 01 00 00? 00 00 0000? 0800????????????????????????????????????????????????????????????????????????GET EVENT STATUS???????43.1.0(2)?????
? 21.4? OUT??? 55 53 42 43? 98 16 ae 8a? 0800 00 00? 80 00 0a 4a? 01 00 00 00? 00 00 00 08? 00 00 0000? 00 00 00????USBC...........J???????44.1.0(2)?????
? 21.4? IN???? 00 00 00 00? 00 00 0000???????????????????????????????????????????????????????????????????????????????........???????????????45.1.0(2)?????
? 21.4? IN???? 55 53 42 53? 98 16 ae8a? 00 00 00 00?00??????????????????????????????????????????????????????????????USBS.........??????????46.1.0(2)?????
? 22??? IN???? 00 00 00 00? 00 000000???????????????????????????????????????????????????????????????????????????????........???????????????43.2.0????????
? 22??? CMD??? 00 00 00 00? 0000?????????????????????????????????????????????????????????????????????????????????????TEST UNIT READY????????51.1.0(4)?????
? 21.4? OUT??? 55 53 42 43? 08 50 c7 89? 0000 00 00? 00 00 06 00? 00 00 00 00? 00 00 00 00? 00 00 0000? 00 00 00????USBC.P..........??????? 52.1.0(4)?????
? 21.4? IN???? 55 53 42 53? 08 50 c789? 00 00 00 00?01??????????????????????????????????????????????????????????????USBS.P.......??????????53.1.0(4)?????
? 21.4? OUT??? 55 53 42 43? 08 50 c7 89? 1200 00 00? 80 00 0c 03? 00 00 00 12? 00 00 00 00? 00 00 0000? 00 00 00????USBC.P..........???????54.1.0(4)?????
? 21.4? IN???? 70 00 06 00? 00 00 000a? 00 00 00 00? 28 00 00 00? 0000??????????????????????????????????????????????p...........(...???????55.1.0(4)?????
? 21.4? IN???? 55 53 42 53? 08 50 c789? 00 00 00 00?00??????????????????????????????????????????????????????????????USBS.P.......??????????56.1.0(4)?????
? 22??? SENSE? 70 00 06 00? 00 00 00 0a? 0000 00 00? 28 00 00 00? 0000??????????????????????????????????????????????medium changed?????????51.2.0????????
? 22??? CMD??? d0 00 00 00? 0000?????????????????????????????????????????????????????????????????????????????????????????????????????????????75.1.0????????
? 21.4? OUT??? 55 53 42 43? 08 50 c7 89? 0000 00 00? 00 00 06 d0? 00 00 00 00? 00 00 00 00? 00 00 0000? 00 00 00????USBC.P..........???????76.1.0????????
? 21.4? IN???? 55 53 42 53? 08 50 c789? 00 00 00 00?00??????????????????????????????????????????????????????????????USBS.P.......?????????? 77.1.0????????
? 22???ok????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????75.2.0????????
? 21.0? CTL??? 80 06 00 03? 00 00 ff00???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR?????????78.1.0(2)?????
? 21.0? IN???? 04 03 0904????????????????????????????????????????????????????????????????????????????????????????????....???????????????????78.2.0????????
? 21.0? CTL??? 80 06 02 03? 09 04 ff00???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR?????????79.1.0(2)?????
? 21.0? IN???? 3e 03 48 00? 50 00 2000? 4c 00 61 00? 73 00 65 00? 72 00 4a 00? 65 00 7400? 20 00 50 00? 72 00 6f 00? >.H.P..L.a.s.e.??????? 79.2.0????????
??????????????66 00 65 00? 73 00 73 00? 69 00 6f 00? 6e 00 61 00? 6c 0020 00? 50 00 31 00? 31 00 30 00? 3800???????f.e.s.s.i.o.n.a.???????79.2.32???????
? 21.0? CTL??? 80 06 00 01? 00 00 1200???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR?????????82.1.0????????
? 21.0? IN???? 12 01 00 02? 00 00 0040? f0 03 2a 00? 00 01 01 02? 0301??????????????????????????????????????????????.......@..*.....???????82.2.0????????
? 21.0? CTL??? 80 06 00 02? 00 00 0900???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR?????????83.1.0????????
? 21.0? IN???? 09 02 3e 00? 02 01 00c0?31???????????????????????????????????????????????????????????????????????????..>.....1??????????????83.2.0????????
? 21.0? CTL??? 80 06 00 02? 00 00 3e00???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR?????????84.1.0????????
? 21.0? IN???? 09 02 3e 00? 02 01 00c0? 31 09 04 00? 00 02 07 01? 02 04 07 05? 01 02 0002? 00 07 05 81? 02 00 02 00?..>.....1.......???????84.2.0????????
??????????????09 04 01 00? 03 ff 02 10? 06 07 05 02? 02 00 02 00? 07 0582 02? 00 02 00 07? 05 83 03 08? 000c???????................???????84.2.32???????
? 21.0? CTL??? 00 09 01 00? 00 00 0000???????????????????????????????????????????????????????????????????????????????SETCONFIG?????????????85.1.0????????
? 21.0? CTL??? 80 06 04 03? 09 04 ff00???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR?????????86.1.0????????
? 21.0? IN???? 10 03 50 00? 72 00 6900? 6e 00 74 00? 65 00 7200?????????????????????????????????????????????????????..P.r.i.n.t.e.r.??????? 86.2.0????????
? 21.0? CTL??? 80 06 06 03? 09 04 ff00???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR?????????87.1.0????????
? 21.0? IN???? 0e 03 48 00? 50 00 2000? 45 00 57 00? 5300???????????????????????????????????????????????????????????..H.P. .E.W.S.?????????87.2.0????????
? 23.0? CTL??? 80 06 00 02? 00 00 0901???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR?????????88.1.0????????
? 23.0? IN???? 09 02 20 00? 01 01 00c0? 31 09 04 00? 00 02 07 01? 02 04 07 05? 01 02 0002? 00 07 05 81? 02 00 02 00? .. .....1.......???????88.2.0????????
? 23.0? CTL??? 00 09 01 00? 00 00 0000???????????????????????????????????????????????????????????????????????????????SETCONFIG?????????????89.1.0????????
? 23.0? CTL??? 80 06 00 01? 00 00 1200???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR?????????90.1.0????????
? 23.0? IN???? 12 01 00 02? 00 00 0040? f0 03 2a 00? 00 01 01 04? 0301??????????????????????????????????????????????.......@..*.....???????90.2.0????????
? 23.0? CTL??? a1 00 00 00? 00 00 f103???????????????????????????????????????????????????????????????????????????????GET DEVICE ID??????????91.1.0????????
? 23.0? IN???? 00 8c 4d 46? 47 3a 4865? 77 6c 65 74? 74 2d 50 61? 63 6b 61 72? 64 3b 4d44? 4c 3a 48 50? 20 4c 61 73?..MFG:Hewlett-Pa???????91.2.0????????
??????????????65 72 4a 65? 74 20 50 72? 6f 66 65 73? 73 69 6f 6e? 61 6c20 50? 31 31 30 38? 3b 43 4d 44? 3a 5a 4a 53? erJetProfession???????91.2.32???????
??????????????2c 50 4a 4c? 2c 41 43 4c? 2c 48 54 54? 50 3b 43 4c? 53 3a50 52? 49 4e 54 45? 52 3b 44 45? 53 3a 48 50?,PJL,ACL,HTTP;CL???????91.2.64???????
??????????????20 4c 61 73? 65 72 4a 65? 74 20 50 72? 6f 66 65 73? 73 696f 6e? 61 6c 20 50? 31 31 30 38? 3b 46 57 56??LaserJet Profes??????? 91.2.96???????
??????????????45 52 3a 32? 30 31 32 30? 38 31 343b??????????????????????????????????????????????????????????????????ER:20120814;???????????91.2.128??????
? 24.0? CTL??? 80 06 00 01? 00 00 1200???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR?????????92.1.0????????
? 24.0? IN???? 12 01 00 02? 00 00 0040? f0 03 2a 00? 00 01 01 06? 0301??????????????????????????????????????????????.......@..*.....???????92.2.0????????
? 24.0? CTL??? 80 06 00 02? 00 00 0900???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR?????????93.1.0????????
? 24.0? IN???? 09 02 27 00? 01 01 00c0?31???????????????????????????????????????????????????????????????????????????..'.....1??????????????93.2.0????????
? 24.0? CTL??? 80 06 00 02? 00 00 2700???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR?????????94.1.0????????
? 24.0? IN???? 09 02 27 00? 01 01 00c0? 31 09 04 01? 00 03 ff 02? 10 06 07 05? 02 02 0002? 00 07 05 82? 02 00 02 00?..'.....1.......???????94.2.0????????
??????????????07 05 83 03? 08 000c??????????????????????????????????????????????????????????????????????????????????.......????????????????94.2.32???????
? 24.0? CTL??? 80 00 00 00? 00 00 0200???????????????????????????????????????????????????????????????????????????????GETSTATUS?????????????95.1.0????????
? 24.0? IN???? 0100??????????????????????????????????????????????????????????????????????????????????????????????????..?????????????????????95.2.0????????
? 24.0? CTL??? 00 09 01 00? 00 00 0000???????????????????????????????????????????????????????????????????????????????SETCONFIG?????????????96.1.0????????
? 21.0? CTL??? 01 0b 00 00? 01 00 0000???????????????????????????????????????????????????????????????????????????????SET INTERFACE??????????97.1.0????????
? 21.0? CTL??? 80 06 00 02? 00 00 3e00???????????????????????????????????????????????????????????????????????????????GET DESCRIPTOR?????????98.1.0????????
? 21.0? IN???? 09 02 20 00? 01 01 00c0? 31 09 04 00? 00 02 08 06? 50 05 07 05? 04 02 0002? 00 07 05 84? 02 00 02 00? .......1.......??????? 98.2.0? ??
?
評論
查看更多