
Tengo una memoria USB de la que me gustaría leer el número de serie. Si invoco el comando,
lsusb -v
el resultado en la línea iSerial
es el siguiente:
iSerial 3
Si voy /proc/scsi/usb-storage
y miro el archivo, obtengo el siguiente resultado:
Host scsi10: usb-storage
Vendor: USB
Product: Disk 2.0
Serial Number: 92071573E1272519149
Protocol: Transparent SCSI
Transport: Bulk
Quirks:
¿Por qué no hay salida en serie con el lsusb
comando por un lado, pero por otro lado obtengo un número de serie de /proc/scsi/usb-storage
. ¿Dónde está la diferencia entre los dos métodos para recopilar la serie?
Respuesta1
lsusb
Puede intentar abrir el dispositivo USB como O_RDWR
(leer/escribirmodo) y es posible que su usuario no tenga los derechos para hacer esto (algún mensaje de error "No se pudo abrir el dispositivo, falta información" debería aparecer entre la salida, si es así). Iniciado como root lsusb
también debería poder generar el valor iSerial completo.
Respuesta2
Existen multitud de dispositivos USB diferentes en general (teclados, ratones, webcams,...). lsusb
se ocupa de los dispositivos conectados en el nivel del protocolo USB.
Algunos dispositivos USB son dispositivos de almacenamiento (memorias USB, discos duros USB, ...). Entienden un protocolo diferente (más o menos SCSI) además del protocolo USB. Dentro de este protocolo, un dispositivo de almacenamiento USB tiene un número de serie (al igual que un dispositivo ATA). Esto es lo que ves en /proc/scsi/usb-storage
.
El iSerial
número que ves lsusb
no tiene nada que ver con eso.
Es por eso que ves el número de serie que te interesa con un método, pero no con el otro. Y es por eso que no puede utilizarlo lsusb
para obtener el tipo de número de serie que le interesa.
Respuesta3
Puede usarlo lsusb
con el indicador detallado, pero debe asegurarse sudo
de usarlo; de lo contrario, el número de serie será incorrecto.
sudo lsusb -v
Si esto es demasiado detallado, ejecute lsusb
para obtener la identificación del dispositivo:
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 012: ID 1ab1:0e11 Rigol Technologies
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Luego ejecute lsusb
con -s
flag para mostrar solo el dispositivo especificado y grep para el número de serie.
Entonces, para el número de serie del dispositivo Rigol:
$ sudo lsusb -s 012 -v|grep -i iserial
iSerial 3 DP8C221100000
Para más información sobre el lsusb
uso de la --help
bandera:
$ lsusb --help
Usage: lsusb [options]...
List USB devices
-v, --verbose
Increase verbosity (show descriptors)
-s [[bus]:][devnum]
Show only devices with specified device and/or
bus numbers (in decimal)
-d vendor:[product]
Show only devices with the specified vendor and
product ID numbers (in hexadecimal)
-D device
Selects which device lsusb will examine
-t, --tree
Dump the physical USB device hierarchy as a tree
-V, --version
Show version of program
-h, --help
Show usage and help