Périphériques de stockage usb - En cours

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

1 - Identification

les clés USB connectées via un contrôleur de bus usb

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
........

2 - Utilisation

La ligne bcdUSB indique la classe de la clé : usb2, usb3



2.2 - Utilisation de lssci

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
$ 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

3 - Adresses sur le bus et pilote

3.1 - Adresse et pilote sur le bus PCI

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

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]

3.2 - Périphériques USB

$ 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

4 - Périphériques amovibles

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)

8 - Périphériques usb

8.1 - Obtention de l'adresse sur le bus USB

$ 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

8.2 - Pilote et numéro USB de périphérique

$ 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

8.3 - Caractéristiques du périphérique

$ lsusb -s 2:3
Bus 001 Device 017: ID 090c:1000 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Flash Drive
$ 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
.....
$ 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

8.4 - Pilotes

$ 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