Mise à jour Debian : 10.9 / Buster
On s’intéresse ici aux périphériques de stockage usb, soit natifs mémoires flash usb (clés USB), soit au moyen de boîtiers adaptateurs (pour disques, pour cartes SD, ...)
Sommaire
le bus usb est 2-2:1.0 (Bus-Port:Configuration.Interface). Cette adresse permet d'accéder au pilote de l'interface USB et aux caractéristiques du périphérique (ou de l'hôte) :
$ lsusb -s 2:
Bus 002 Device 005: ID 174c:55aa ASMedia Technology Inc. Name: ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
$ lsusb -v -s 2:5
Bus 002 Device 005: ID 174c:55aa ASMedia Technology Inc. Name: ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 3.10
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 9
idVendor 0x174c ASMedia Technology Inc.
idProduct 0x55aa Name: ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge
........
La ligne bcdUSB indique la classe de la clé : usb2, usb3
List SCSI devices or hosts, followed by NVMe namespaces or controllers.
Many storage devices (e.g. SATA disks and USB attached storage) use SCSI
command sets and hence are also listed by this utility.
$ sudo aptitude install lssci
-s pour afficher la taille
-g pour afficher l'identifiant sg utilisé par le noyau
-t pour afficher le protocole de transport
$ lsscsi -s
[2:0:0:0] disk ATA KINGSTON SHSS37A 02.H /dev/sda 480GB
[3:0:0:0] disk Generic MassStorageClass 0904 /dev/sdb -
[4:0:0:0] disk USB Flash Disk 1100 /dev/sdc 2.00GB
[5:0:0:0] disk KINGSTON SHSS37A240G 0 /dev/sdd 240GB
[6:0:0:0] disk WDC WD75 00BPKX-00HPJT0 /dev/sde 750GB
[N:0:4:1] disk Samsung SSD 970 EVO 250GB__1 /dev/nvme0n1 250GB
$ lsscsi -t
[2:0:0:0] disk sata:50026b767a012c69 /dev/sda
[3:0:0:0] disk usb:2-3:1.0 /dev/sdb
[4:0:0:0] disk usb:1-4:1.0 /dev/sdc
[5:0:0:0] disk usb:1-2:1.0 /dev/sdd
[6:0:0:0] disk usb:1-1.4:1.0 /dev/sde
[N:0:4:1] disk pcie 0x144d:0xa801 /dev/nvme0n1
Note : La première partie de la réponse (du début de la ligne à 0000:) est supprimée pour faciliter la lecture
$ ls -l /sys/class/block/sda |sed 's/^.*0000://'
00:17.0/ata3/host2/target2:0:0/2:0:0:0/block/sda
Dans l'exemple ci-dessous, l'adresse sur le bus pci du périphérique /dev/sda est 00:17.0 (Bus 00 : Slot 17 . Fonction 0)
$ lspci -s 00:17.0 -k
00:17.0 SATA controller: Intel Corporation Cannon Point-LP SATA Controller [AHCI Mode] (rev 30)
Subsystem: Intel Corporation Cannon Point-LP SATA Controller [AHCI Mode]
Kernel driver in use: ahci
Kernel modules: ahci
L'adresse peut également être obtenue à partir de l'identifant lsscsi
Dans l'exemple ci-dessous, on recherche l'adresse du périphérique ayant l'identifiant 2 (équivalent à 2:0:0:0)
$ lsscsi -v 2 |sed 's/^.*0000://'
[2:0:0:0] disk ATA KINGSTON SHSS37A 02.H /dev/sda
00:17.0/ata3/host2/target2:0:0/2:0:0:0]
$ ls -l /sys/class/block/sdb | sed 's/^.*0000://'
00:14.0/usb2/2-4/2-4:1.0/host3/target3:0:0/3:0:0:0/block/sdb
Lorsqu'un périphérique bloc est amovible (carte SD, clé ou boîtier usb), utiliser dmesg ou udev monitor pour faciliter son identification au moment de sa connexion
$ sudo dmesg |tail -2
[29187.970458] sdb: sdb1
[29187.974634] sd 3:0:0:0: [sdb] Attached SCSI disk
$ udevadm monitor -k -s block |sed 's/^.*0000://'
monitor will print the received events for:
KERNEL - the kernel uevent
00:14.0/usb1/1-2/1-2.1/1-2.1:1.0/host5/target5:0:0/5:0:0:0/block/sdd (block)
00:14.0/usb1/1-2/1-2.1/1-2.1:1.0/host5/target5:0:0/5:0:0:0/block/sdd/sdd1 (block)
$ lsscsi -t |grep usb
[3:0:0:0] disk usb:2-4:1.0 /dev/sdb
[4:0:0:0] disk usb:2-3:1.0 /dev/sdc
$ lsscsi -s 3 && lsscsi -s 4
[3:0:0:0] disk Lexar USB Flash Drive 1100 /dev/sdb 16.0GB
[4:0:0:0] disk KINGSTON SHSS37A240G 0 /dev/sdc 240GB
$ lsscsi -ts 4
[4:0:0:0] disk usb:2-3:1.0 /dev/sdc 240GB
Son adresse (Bus - Port1 - Port2 : Configuration . Interface ) est Bus 1 Port 3 Configuration Interface 0
$ sudo dmesg |tail -2
[ 985.788058] sdc: sdc1
[ 985.789325] sd 4:0:0:0: [sdc] Attached SCSI disk
$ lsscsi -t 4
[4:0:0:0] disk usb:2-3:1.0 /dev/sdc
$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 10000M
|__ Port 3: Dev 3, If 0, Class=Mass Storage, Driver=uas, 10000M
|__ Port 4: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
|__ Port 1: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 1: Dev 2, If 2, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 2: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 10: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 10: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M
Le pilote est uas, la vitesse maxi du contrôleur est 10000M (10G) et le numéro de périphérique 3
$ cat /sys/bus/usb/devices/2-3/devnum
3
# ou bien (autocompletion disponible)
$ cat /sys/devices/pci0000\:00/0000\:00\:14.0/usb2/2-3/devnum
3
$ lsusb -s 2:3
Bus 001 Device 017: ID 090c:1000 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Flash Drive
Utiliser l'option -v pour obtenir plus de détails sur le périphérique (ici le boîtier interface contenant un disque nvme)
$ lsusb -v -s 2:3 [ partiel]
Bus 002 Device 003: ID 174c:55aa ASMedia Technology Inc. Name: ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 3.10
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 9
idVendor 0x174c ASMedia Technology Inc.
idProduct 0x55aa Name: ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge
.....
Alternativement utiliser sysfs (voir ci-dessous)
$ cat /sys/bus/usb/devices/1-3/product
Mass Storage Device
$ cat /sys/bus/usb/devices/1-3/bMaxPower
250mA
# ou bien
$ cat /sys/devices/pci0000\:00/0000\:00\:14.0/usb1/1-3/idProduct
6335
$ cat /sys/devices/pci0000\:00/0000\:00\:14.0/usb1/1-3/idVendor
058f
$ cat /sys/devices/pci0000\:00/0000\:00\:14.0/usb1/1-3/manufacturer
Generic
$ cat /sys/devices/pci0000\:00/0000\:00\:14.0/usb1/1-3/speed
480
$ lsscsi -t |grep usb
[3:0:0:0] disk usb:2-3:1.0 /dev/sdb
[4:0:0:0] disk usb:1-4:1.0 /dev/sdc
[5:0:0:0] disk usb:1-2.1:1.0 /dev/sdd
[6:0:0:0] disk usb:1-2.4:1.0 /dev/sde
[7:0:0:0] disk usb:2-2:1.0 /dev/sdf
$ lsscsi -s 3
[3:0:0:0] disk KINGSTON SHSS37A240G 0 /dev/sdb 240GB
$ lsscsi -t 3
[3:0:0:0] disk usb:2-3:1.0 /dev/sdb
$ lssub -t [extrait]
|__ Port 3: Dev 2, If 0, Class=Mass Storage, Driver=uas, 10000M
$ lsscsi -s 4
[4:0:0:0] disk WDC WD75 00BPKX-00HPJT0 /dev/sdc 750GB
$ lsscsi -t 4
[4:0:0:0] disk usb:1-4:1.0 /dev/sdc
$ lsusb -t [extrait] |__ Port 4: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M
$ lsscsi -s 5
[5:0:0:0] disk USB Flash Disk 1100 /dev/sdd 2.00GB
$ lsscsi -t 5
[5:0:0:0] disk usb:1-2.1:1.0 /dev/sdd
$ lsusb -t [extrait] |__ Port 1: Dev 10, If 0, Class=Mass Storage, Driver=usb-storage, 480M
$ lsscsi -s 6
[6:0:0:0] disk Generic MassStorageClass 0904 /dev/sde 3.90GB
$ lsscsi -t 6
[6:0:0:0] disk usb:1-2.4:1.0 /dev/sde
$ lsusb -t [extrait] |__ Port 4: Dev 8, If 0, Class=Mass Storage, Driver=usb-storage, 480
$ lsscsi -s 7
[7:0:0:0] disk Lexar USB Flash Drive 1100 /dev/sdf 16.0GB
$ lsscsi -t 7
[7:0:0:0] disk usb:2-2:1.0 /dev/sdf
$ lsusb -t [extrait] |__ Port 2: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 5000M