web-dev-qa-db-fra.com

D'où lsusb -t obtient-il ses données?

Je veux le fichier à partir duquel la commande

lsusb -t

récupère les données. Je suis curieux de voir où cela est stocké.

this is the snap

et quelqu'un peut-il aussi dire que faire avec l'identifiant de périphérique qui s'affiche dans fdisk -l?

3
juggernauthk108

lsusb lit ses données à partir du noyau virtuel fourni par le noyau sys système de fichiers monté dans /sys; spécifiquement à partir de l'emplacement des répertoires pertinents pour les périphériques USB. Ces périphériques sont connectés à différents bus PCI et sont (principalement) détectés par udevd.

Par exemple, sur mon ordinateur, voici un exemple de la localisation d’un périphérique USB connecté à un bus PCI particulier:

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

Le contenu du répertoire:

% 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 ne lit que les fichiers pertinents de ce répertoire.

4
heemayl

lsusb utilise libudev pour récupérer la liste des périphériques que vous voyez. Libudev, à son tour, utilise une combinaison de la base de données udev et une recherche dans le système de fichiers /sys pour trouver des informations sur le matériel.

Dépôts de code pertinents:

https://github.com/gregkh/lsusb

http://cgit.freedesktop.org/systemd/systemd/tree/src/libudev

2
PokeyBagelHole

Le noyau a des pilotes pour les périphériques et le noyau les ajoute. Les périphériques signalent leurs capacités au pilote ou au BIOS. Certains d'entre eux sont rapportés par le BIOS. Je le sais parce que j'avais un BIOS avec un bug et que je rapportais des ventilateurs qui n'étaient pas présents. Lorsque le processeur est devenu chaud, le pilote du noyau a essayé d'activer des ventilateurs inexistants. Enfin, j'ai résolu le problème en compilant le noyau sans assistance pour les fans.

Jetez un coup d'œil à /sys/devices. Vous trouverez vos appareils là-bas. Vous pouvez trouver de nombreuses informations sur les périphériques dans des répertoires et des fichiers. Le noyau les crée dynamiquement lorsque les périphériques sont déconnectés/connectés.

0
nobody

Excusez-moi, je ne vous aiderai pas! Si vous voulez vous amuser:

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

Eh bien, je suggère de lire au moins la description longue (si ce n’est tout le manuel) de chaque commande en utilisant man ou info.

0
user.dz

Après un bref aperçu, j'ai constaté que lsusb conserve une liste des VID/PID associés aux noms de produit dans /var/lib/usbutils/usb.ids.

0
nohupper