Linux tux ninja

Como obter detalhes dos dispositivos USB no seu sistema

Há inúmeras ferramentas, no Linux, disponíveis para os usuários obterem informações sobre as conexões USB presentes no seu sistema.
Neste post, vou falar de algumas, que podem ser úteis para conseguir informações sobre dispositivos conectados a uma destas portas.
O utilitário usb-devices pode ser usado para exibir na tela do terminal detalhes, com bastante informações, sobre BUSes USB no seu sistema, mesmo que não haja algo conectado.
Se houver, contudo, ele irá mostrar informações sobre o device conectado.
linux usb devices

O usb-devices é um shell script (bash) desenvolvido para exibir informações e detalhes dos “buses” USB presentes no sistema, bem como, dos dispositivos anexados

A saída do script é similar ao conteúdo do arquivo de sistema usb/devices que, usualmente, fica sob o diretório /proc/bus:

less /proc/bus/input/devices
I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button"
P: Phys=PNP0C0C/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:10/PNP0C0C:00/input/input0
U: Uniq=
H: Handlers=kbd event0 
B: PROP=0
B: EV=3
B: KEY=10000000000000 0

...


I: Bus=0003 Vendor=04f2 Product=b1d8 Version=5563
N: Name="1.3M WebCam"
P: Phys=usb-0000:00:1a.0-1.1/button
S: Sysfs=/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1:1.0/input/input13
U: Uniq=
H: Handlers=kbd event13 
B: PROP=0
B: EV=3
B: KEY=100000 0 0 0

Outro arquivo do sistema, relacionado às informações de dispositivos ou sistemas de arquivos USB (caso estejam montados) é o /sys/kernel/debug/usb/devices. Este, contudo, nem sempre está disponível para usuários sem privilégios administrativos:

cat /sys/kernel/debug/usb/devices
cat: /sys/kernel/debug/usb/devices: Permission denied

O script usb-devices não requer privilégios administrativos para retornar informações úteis sobre os dispositivos USB conectados ao seu hardware.
Como limitação, o script só lista as interfaces ativas — aquelas marcadas com um ‘*’ no arquivo /sys/kernel/debug/usb/devices:

sudo cat /sys/kernel/debug/usb/devices | grep "*"
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
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
C:* #Ifs= 3 Cfg#= 1 Atr=a0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
I:* If#= 2 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=usbhid
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
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
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=0e(video) Sub=01 Prot=00 Driver=uvcvideo
I:* If#= 1 Alt= 0 #EPs= 0 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo

Use o lsusb, para obter informações mais enxutas

Os métodos listados acima, podem trazer informações detalhadas voltadas para desenvolvedores.
O utilitários lsusb é mais útil para quem deseja um conjunto de informações mais sucinto:

lsusb 
Bus 002 Device 003: ID 413c:2501 Dell Computer Corp. 
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 04f2:b1d8 Chicony Electronics Co., Ltd 
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Para obter uma relação mais detalhada, use a opção ‘–verbose’:

lsusb --verbose | less 

Se for executado com privilégios administrativos, o lsusb poderá exibir mais informações.
Como sempre, use o comando grep para filtrar os dados de acordo com suas necessidades:

sudo lsusb --verbose | grep -i bcdusb

O comando acima, irá exibir as versões USB disponíveis no seu sistema.
Veja o que obtive no meu computador de testes (ele é velhinho…):

  bcdUSB               2.00
  bcdUSB               2.00
  bcdUSB               2.00
  bcdUSB               2.00
  bcdUSB               2.00
  bcdUSB               2.00
  bcdUSB               2.00
  bcdUSB               2.00
  bcdUSB               2.00

Como obter informações sobre dispositivos USB em ambiente gráfico

Quem prefere o ambiente gráfico, pode instalar o usbview:

sudo apt install usbview

Este aplicativo irá retornar um conjunto de informações mais extenso, se for executado com privilégios administrativos:

sudo usbview

usbview
O utilitário usbview exibe as informações obtidas de /sys/kernel/debug/usb/devices — por isto, requer ser executado como super usuário.

Conheça o usbhid-dump

O utilitário usbhid-dump lança o stream de dados vindos de dispositivos USB.
O padrão é monitorar o fluxo de todos os dispositivos.
Mas você pode restringir a um só.
No exemplo que segue, o utilitário irá exibir o fluxo vindo do teclado USB (se você tiver um).
Tenha cuidado: você vai perder o controle do teclado USB, ao executar este comando:

sudo usbhid-dump -es

Para interromper o aplicativo, tecle ‘Ctrl + C’ no teclado nativo do seu notebook.
dump stream from mouse and keyboard to screen
O que este programa faz é desconectar os drivers do kernel, relacionados ao(s) dispositivo(s) em questão — assim, nenhum outro programa vai conseguir captar as entradas a partir daquele(s) dispositivo(s).
Se você não conseguir interromper a desconexão, com ‘Ctrl + C’, basta aguardar o tempo padrão de 60 segundos, para recuperar o controle sobre seu dispositivo USB.
Leia mais em Como obter mais informações sobre as portas USB no Linux.

Publicado por

Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como “Rick and Morty” e “BoJack Horseman”.
Me siga no Twitter e vamos trocar ideias!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *