日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android通过cat /sys/kernel/debug/usb/devices获取USB信息

發(fā)布時(shí)間:2025/4/16 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android通过cat /sys/kernel/debug/usb/devices获取USB信息 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

cat /sys/kernel/debug/usb/devices得到的信息如下

下圖是我們產(chǎn)品USB 拓?fù)鋱D

?

USB設(shè)備通過debugfs導(dǎo)出/sys/kernel/debug/usb/devices顯示內(nèi)核已知的每個(gè)USB設(shè)備及其配置描述符,比如下面EHCI控制器的信息

每個(gè)設(shè)備debugfs文件系統(tǒng)對(duì)應(yīng)的文件內(nèi)容包含有如下內(nèi)容:

T = Topology (etc.)拓?fù)浣Y(jié)構(gòu)

B = Bandwidth (applies only to USB host controllers, which are

??? virtualized as root hubs)帶寬信息,只用于USB Host控制器,它被虛擬為一個(gè)root hub

D = Device descriptor info.設(shè)備描述符信息

P = Product ID info. (from Device descriptor, but they won't fit

??? together on one line)產(chǎn)品ID信息,來至于設(shè)備描述符。

S = String descriptors.字符串描述符

C = Configuration descriptor info. (* = active configuration)配置描述符信息

I = Interface descriptor info.接口描述符信息

E = Endpoint descriptor info.端點(diǎn)描述符信息

?

  • T拓?fù)浣Y(jié)構(gòu)信息
  • T:? Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=? 1 Spd=480? MxCh= 1

    Bus:表示總線號(hào)。

    Lev:表示此USB設(shè)備位于所在總線拓?fù)浣Y(jié)構(gòu)的層次,見圖1,EHCI控制器對(duì)應(yīng)的Lev=00,其下面掛接的HUB的Lev=01,掛載在HUB下的USB網(wǎng)卡的Lev=02。

    Prnt:表示父設(shè)備數(shù)量,比如EHCI控制器是root,位于最頂層,其Prnt=0,其下面掛接的HUB的Prnt=01,掛載在HUB下的USB網(wǎng)卡的Prnt=02(包括EHCI控制器和HUB)。

    Port:此USB設(shè)備的父設(shè)備上的連接器/端口,比如HUB的父設(shè)備是EHCI控制器

    For reasons lost in the mists of time, the Port number is always

    ??? too low by 1(意思是從0開始).? For example, a device plugged into port 4 will

    ??? show up with "Port=03".

    EHCI是第1層:Port=00。

    HUB是第2層:為Port=00:其父設(shè)備是EHCI,而且只有一個(gè),根據(jù)規(guī)則(端口號(hào)從0開始編號(hào)),所以也是0

    USB攝像頭、USB網(wǎng)卡和U盤是第3層:port的值分別是00、01、02。

    ?

    Cnt:這層的枚舉到的第幾個(gè)USB設(shè)備,比如USB攝像頭的Cnt=01,USB網(wǎng)卡的Cnt=02,U盤的Cnt=03。

    ?

    Dev:表示設(shè)備編號(hào),EHCI為1,HUB為2,USB網(wǎng)卡為3,U盤為4,按順序排列的,一個(gè)總線上最多掛127個(gè);可以有多個(gè)總線。

    Spd:設(shè)備速率,單位為Mbps

    可能的速率為

    ??? 1.5?? Mbit/s for low speed USB

    ?????? 12??? Mbit/s for full speed USB

    ?????? 480? Mbit/s for high speed USB (added for USB 2.0);

    ????????????? ? also used for Wireless USB, which has no fixed speed

    ?????? 5000?????? Mbit/s for SuperSpeed USB (added for USB 3.0)

    MxCh:當(dāng)前設(shè)備可連接的子設(shè)備最大數(shù)量,比如EHCI的MxCh=1表示EHCI下可以連接一個(gè)USB設(shè)備;HUB的MxCh=4表示此HUB可最多連接4個(gè)USB設(shè)備;USB網(wǎng)卡的MxCh=0表示它下面不能連接USB設(shè)備了,也就是最底層。

    ?

    2.B帶寬信息

    Alloc:該總線分配得到的帶寬。寬帶分配在使用中是一個(gè)近似值,此值表示一幀需要多少ms。

    Int:中斷請求數(shù)

    Iso:同步請求數(shù),USB有四大傳輸,中斷、控制、批量和同步。

    ?

    3. D設(shè)備描述符信息

    Ver:USB協(xié)議版本,比如Ver=2.00。

    Cls:由USB-IF(USB Implementers Forum)分配的設(shè)備類類碼,Hub對(duì)應(yīng)09;廠家自定義的為ff;如果該字段為0x00,表示由接口描述符bInterfaceClass來指定。

    ?

    官方鏈接:https://www.usb.org/defined-class-codes

    ?

    Cls=08h,可知是Mass Storage類

    Sub:設(shè)備子類,USB子類代碼,由USB-IF分配。

    Prot:設(shè)備協(xié)議碼,由USB-IF分配。如果D的Cls和Sub都為00,則該字段也必須為00,采用I的Prot=50。

    MxPs:默認(rèn)斷電的最大包大小,只有8、16、32或64有效。

    Cfgs:表示設(shè)備支持的配置數(shù)量。僅表示當(dāng)前運(yùn)行速度下的配置數(shù)量。計(jì)數(shù)中不包括其他運(yùn)行速度的配置。 如果特定速度的設(shè)備有特定配置,則bNumConfigurations字段僅反映單個(gè)速度的配置數(shù)量,而不是兩個(gè)速度的配置總數(shù)量。這里的EHCI、HUB、USB網(wǎng)卡和U盤下的Cfgs都是1,因?yàn)橹皇褂昧艘粋€(gè)配置,所以設(shè)置為1

    ?

    4. P產(chǎn)品ID信息

    Vendor:廠商ID,比如ECHI的vendor=1d6b

    ProdID:廠商產(chǎn)品的ID,比如ECHI的ProdID=0002表示支持USB2.0的產(chǎn)品。

    Rev:產(chǎn)品版本號(hào),比如3.18這里指linux內(nèi)核版本。

    USB-IF為廠商分配的vendor和product ID的鏈接http://www.linux-usb.org/usb.ids。

    5.?S字符串描述符信息

    Manufacturer:從設(shè)備中讀到的生產(chǎn)商描述性信息,比如USB網(wǎng)卡Manufacturer=ASIX Elec. Corp.

    Product:從設(shè)備中讀取的產(chǎn)品描述性信息,比如USB網(wǎng)卡Product=AX88772B,比如EHCI控制器的Product=EHCI Host Controller,這在kernel\msm-3.18\drivers\usb\host\ehci-hcd.c中定義。

    SerialNumber:從設(shè)備中讀取的產(chǎn)品序列號(hào)

    ?

    6. C配置描述符信息

    Ifs:此配置支持的USB接口數(shù)量,每個(gè)配置有一個(gè)或多個(gè)接口組成,每個(gè)接口具有獨(dú)特的功能,并且綁定到不同的USB設(shè)備驅(qū)動(dòng)。一個(gè)常見的例子是一個(gè)USB播放器,它帶有一個(gè)播放的音頻接口和一個(gè)用于音量控制的HID接口。EHCI、HUB,HUB下的U盤和USB網(wǎng)卡的Ifs都是1,說明它們支持1個(gè)USB接口。HUB下的USB攝像頭的Ifs是2,說明它支持2個(gè)USB接口。

    Cfg:此配置配置數(shù)量,這里我們的都是01。

    Atr:屬性,供電配置,位詳細(xì)定義如下:

    ????????????????????????? D7????????????? 保留,必須置1

    ????????????????????????? D6????????????? 自供電模式

    ????????????????????????? D5????????????? 遠(yuǎn)程喚醒

    ????????????????????????? D4~D0????? 保留

    MPwr:最大功耗,以2mA為單位,例如0x32為50*2=100mA。 USB設(shè)備供電有兩種方式,self-powered和bus-powered兩種方式,驅(qū)動(dòng)代碼會(huì)判斷設(shè)備標(biāo)志寄存器是否過流的。最大500mA。

    ?

    7.I接口描述符信息

    If:該接口編號(hào),接口編號(hào)從0開始分配,當(dāng)一個(gè)配置有多個(gè)接口時(shí),就用該字段來區(qū)分不同的接口。我們這里的If都為0

    Alt:USB設(shè)備配置與USB配置描述符是一一對(duì)應(yīng)的, 即一個(gè)配置只能有一個(gè)配置描述符。雖然由bInterfaceNumber字段可知, 每一個(gè)接口都有一個(gè)惟一確定的接口編號(hào), 但是一個(gè)接口卻可以由不只一個(gè)接口描述符來描述它。USB 允許多個(gè)接口描述符來描述同一個(gè)接口, 且這些描述符都可通過命令切換。此字段就是每一個(gè)這類描述符惟一的編號(hào)。USB可通過調(diào)用這個(gè)字段來切換描述同一個(gè)接口的不同描述符。控制傳輸中的Get_Inter face 命令可以用來得到目前正在使用的描述一個(gè)確定接口的接口描述符的編號(hào), 即此字段。而Set_Inte rface 命令則以此字段值為參數(shù), 用來使相應(yīng)的接口描述符描述某個(gè)確定的接口。我們這里的Alt都為0。

    Eps:端點(diǎn)數(shù)量,不包括端點(diǎn)0。USB網(wǎng)卡AX88772C這里的Alt=3(不包括Endpoint0)

    AX88772C關(guān)于端點(diǎn)的說明

    Cls:接口類碼,比如HUB的為09h,USB-IF分配的類代碼,0預(yù)覽未來使用,0xFF表示接口類是廠家自定義,其他值由USB-IF指定。

    Sub:接口子類碼。USB-IF分配的子類代碼,由Cls限制

    Prot:接口的協(xié)議,如果一個(gè)接口支持特定類請求,此代碼標(biāo)識(shí)由特定設(shè)備類定義的協(xié)議,如果該字段為0,設(shè)備部在此接口不使特定類的協(xié)議,如果該字段為0xFF,設(shè)備為此接口使用廠家自定義協(xié)議。

    Driver:驅(qū)動(dòng)名字

    ?

    8.E端點(diǎn)描述符信息。

    Ad:端點(diǎn)地址(I=In,O=out)

    Atr:端點(diǎn)屬性。

    MxPS:端點(diǎn)所支持最大數(shù)據(jù)包的長度。

    Ivl:端點(diǎn)數(shù)據(jù)傳輸?shù)脑L問時(shí)間間隔。對(duì)于全速/低速的中斷端點(diǎn),取值范圍為 1~255,對(duì)于高速中斷端點(diǎn),取值范圍為1~16,詳細(xì)定義可以參考USB協(xié)議。比如HUB的Ivl=256ms。

    ?

    參考鏈接:

    /sys/kernel/debug/usb/devices解析

    https://www.cnblogs.com/hellokitty2/p/9418895.html

    ?

    Linux下,查看USB設(shè)備信息

    https://blog.csdn.net/zouli415/article/details/79886084

    ?

    linux下的ehci控制器調(diào)試

    https://blog.csdn.net/xiaojsj111/article/details/41864597

    ?

    lsusb、usbfs查看usb拓?fù)浣Y(jié)構(gòu)

    https://blog.csdn.net/shichaog/article/details/42269483

    ?

    總結(jié)

    以上是生活随笔為你收集整理的Android通过cat /sys/kernel/debug/usb/devices获取USB信息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。