Detecção de dispositivo USB Linux
Exibir dispositivos USB no Linux
O comando mais comumente usado é lsusb
, mas lsusb só pode visualizar as informações atuais simples do dispositivo USB. Para visualizar informações detalhadas do dispositivo USB, é melhor usar o mecanismo debugfs no Linux.
- montagem debugfs:
mount -t debugfs none /sys/kernel/debug/
- Exibir informações do dispositivo USB por meio de debugfs
cat /sys/kernel/debug/usb/devices
Explicação das informações do dispositivo
Através /sys/kernel/debug/usb/devices
do nó do dispositivo, você pode ver as informações detalhadas do dispositivo USB atual, conforme a seguir:
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh=16
B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev= 4.18
S: Manufacturer=Linux 4.18.0-240.el8.x86_64 xhci-hcd
S: Product=xHCI Host Controller
S: SerialNumber=0000:00:14.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=480 MxCh= 4
D: Ver= 2.10 Cls=09(hub ) Sub=00 Prot=02 MxPS=64 #Cfgs= 1
P: Vendor=05e3 ProdID=0610 Rev=93.07
S: Manufacturer=GenesysLogic
S: Product=USB2.1 Hub
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=01 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms
I:* If#= 0 Alt= 1 #EPs= 1 Cls=09(hub ) Sub=00 Prot=02 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms
T: Bus=01 Lev=01 Prnt=01 Port=07 Cnt=02 Dev#= 3 Spd=480 MxCh= 5
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=046b ProdID=ff01 Rev= 1.00
S: Manufacturer=American Megatrends Inc.
S: Product=Virtual Hub
S: SerialNumber=serial
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms
T: Bus=01 Lev=02 Prnt=03 Port=03 Cnt=01 Dev#= 4 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=046b ProdID=ff10 Rev= 1.00
S: Manufacturer=American Megatrends Inc.
S: Product=Virtual Keyboard and Mouse
C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=usbhid
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=usbhid
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
Para as informações de saída acima, a explicação específica é a seguinte:
- T = Estrutura de topologia de barramento (Topology) (Lev, Prnt, Port, Cnt, etc.), que se refere ao método de conexão entre o dispositivo USB e o host.
As informações de dados após T são explicadas da seguinte forma:
Formato de representação geral: (veja abaixo para uso específico)
d = número decimal
x = número hexadecimal
s = string
Informações de topologia (Topologia)
T: Bus=dd Lev=dd Prnt=dd Port=dd Cnt=dd Dev#=ddd Spd=ddd MxCh=dd
| | | | | | | | |__最⼤⼦设备
| | | | | | | |__设备速度(Mbps)
| | | | | | |__设备编号
| | | | | |__这层的设备数
| | | | |__此设备的⽗连接器/端⼝
| | | |__⽗设备号
| | |__此总线在拓扑结构中的层次
| |__总线编号
|__拓扑信息标志
- B = Largura de banda (somente controlador de host USB).
Informações de largura de banda (largura de banda)
B: Alloc=ddd/ddd us (xx%), #Int=ddd, #Iso=ddd
| | | |__同步请求编号
| | |__中断请求号
| |__分配给此总线的总带宽
|__带宽信息标志
- D = Informações de descrição do dispositivo.
Informações de descrição do dispositivo (dispositivo)
D: Ver=x.xx Cls=xx(sssss) Sub=xx Prot=xx MxPS=dd #Cfgs=dd
| | | | | | |__配置编号
| | | | | |______缺省终端点的最⼤包尺⼨
| | | | |__设备协议
| | | |__设备⼦类型
| | |__设备类型
| |__设备USB版本
|__设备信息标志编号#1
- P = Informações de identificação do produto.
Informações de identificação do produto (Produto)
P: Vendor=xxxx ProdID=xxxx Rev=xx.xx
| | | |__产品修订号
| | |__产品标识编码
| |__制造商标识编码
|__设备信息标志编号#2
- S = String (String) descritor.
Informações de descrição da string (String)
S: Manufacturer=ssss
| |__设备上读出的制造商信息
|__串描述信息
S: Product=ssss
| |__设备上读出的产品描述信息,对于USB主控制器此字段为"USB *HCI Root Hub"
|__串描述信息
S: SerialNumber=ssss
| |__设备上读出的序列号,对于USB主控制器它是⼀个⽣成的字符串,表⽰设备标识
|__串描述信息
- C = Descrição da configuração (* indica a configuração ativa).
Informações de descrição de configuração (Config)
C: #Ifs=dd Cfg#=dd Atr=xx MPwr=dddmA
| | | | |__最⼤电流(mA)
| | | |__属性
| | |__配置编号
| |__接⼝数
|__配置信息标志
- I = Informações de descrição da Interface (Interface).
Informações de descrição da interface (podem ser múltiplas) (Interface)
I: If#=dd Alt=dd #EPs=dd Cls=xx(sssss) Sub=xx Prot=xx Driver=ssss
| | | | | | | |__驱动名
| | | | | | |__接⼝协议
| | | | | |__接⼝⼦类
| | | | |__接⼝类
| | | |__端点数
| | |__可变设置编号
| |__接⼝编号
|__接⼝信息标志
- E = Informações de descrição do terminal.
Informações de descrição do endpoint (endpoint)
E: Ad=xx(s) Atr=xx(ssss) MxPS=dddd Ivl=dddms
| | | | |__间隔
| | | |__终端点最⼤包尺⼨
| | |__属性(终端点类型)
| |__终端点地址(I=In,O=Out)
|__终端点信息标志