de onde o lsusb -t obtém seus dados?

3

Eu quero o arquivo do qual o comando

lsusb -t

recupera os dados. Estou curioso para ver onde isso está armazenado.

e alguém também pode dizer que o que pode fazer com o ID do dispositivo exibido em fdisk -l ?

    
por juggernaut1996 26.01.2016 / 16:20

5 respostas

4

lsusb lê seus dados do sistema de arquivos virtual sys fornecido pelo kernel montado em /sys ; especificamente a partir da localização de diretórios relevantes para dispositivos USB. Esses dispositivos são conectados a diferentes barramentos PCI e são (principalmente) detectados por udevd .

Por exemplo, no meu computador, aqui está um exemplo da localização de um dispositivo USB conectado a um determinado barramento PCI:

/sys/devices/pci0000:00/0000:00:1d.0/usb4/4-1/

O conteúdo do diretório:

% print -l *
4-1:1.0
authorized
avoid_reset_quirk
bcdDevice
bConfigurationValue
bDeviceClass
bDeviceProtocol
bDeviceSubClass
bmAttributes
bMaxPacketSize0
bMaxPower
bNumConfigurations
bNumInterfaces
busnum
configuration
descriptors
dev
devnum
devpath
driver
ep_00
idProduct
idVendor
ltm_capable
maxchild
port
power
quirks
removable
remove
speed
subsystem
uevent
urbnum
version

lsusb apenas lê o (s) arquivo (s) relevante (s) deste diretório.

    
por heemayl 26.01.2016 / 16:31
2

lsusb usa o libudev para buscar a lista de dispositivos que você vê. O Libudev, por sua vez, usa uma combinação do banco de dados do udev e busca através do sistema de arquivos /sys para encontrar informações de hardware.

Repositórios de código relevantes:

link

link

    
por PokeyBagelHole 26.01.2016 / 16:49
0

O kernel tem drivers para os dispositivos e o kernel os adiciona. Dispositivos relatam suas capacidades para o driver ou para o BIOS. Alguns deles são relatados pelo BIOS. Eu sei disso porque eu tinha um BIOS com bug e estava relatando fãs, que não estavam presentes. Quando o processador ficou quente, o driver do kernel tentou ligar os ventiladores inexistentes. Finalmente, resolvi o problema compilando o kernel sem suporte para os fãs.

Dê uma olhada em /sys/devices . Você encontrará seus dispositivos lá. Você pode encontrar muitas informações sobre os dispositivos em diretórios e arquivos. O Kernel os cria dinamicamente quando os dispositivos são desconectados.

    
por nobody 26.01.2016 / 16:36
0

Com licença, não vou te ajudar! Se você quer um pouco de diversão:

ldd 'which lsusb'
strace lsusb -t
ltrace -l "libudev*" lsusb -t

Bem, sugiro ler pelo menos a descrição longa (se não o manual completo) de cada comando usando man ou info .

    
por user.dz 27.01.2016 / 14:02
0

Após um rápido strace, descobri que o lsusb mantém uma lista de VID / PIDs relacionados a nomes de produtos em /var/lib/usbutils/usb.ids

    
por nohupper 03.04.2018 / 19:33