
Tenho um pendrive do qual gostaria de ler o número de série. Se eu invocar o comando,
lsusb -v
a saída na linha iSerial
será a seguinte:
iSerial 3
Se eu for /proc/scsi/usb-storage
e examinar o arquivo, obtenho a seguinte saída:
Host scsi10: usb-storage
Vendor: USB
Product: Disk 2.0
Serial Number: 92071573E1272519149
Protocol: Transparent SCSI
Transport: Bulk
Quirks:
Por que não há saída serial com o lsusb
comando por um lado, mas por outro lado recebo um número de série de /proc/scsi/usb-storage
. Onde está a diferença entre os dois métodos para coletar o serial?
Responder1
lsusb
pode tentar abrir o dispositivo USB como O_RDWR
(leitura/escrevermodo) e seu usuário pode não ter os direitos para fazer isso (alguma mensagem de erro "Não foi possível abrir o dispositivo, algumas informações estarão faltando" deve estar entre a saída, se houver). Iniciado como root lsusb
também deve ser capaz de gerar todo o valor iSerial.
Responder2
Existem muitos dispositivos USB diferentes em geral (teclados, mouses, webcams, ...). lsusb
lida com os dispositivos conectados no nível do protocolo USB.
Alguns dispositivos USB são dispositivos de armazenamento (pen drives, discos rígidos USB, ...). Eles entendem um protocolo diferente (mais ou menos SCSI) além do protocolo USB. Dentro deste protocolo, um dispositivo de armazenamento USB possui um número de série (assim como um dispositivo ATA). Isto é o que você vê em /proc/scsi/usb-storage
.
O iSerial
número que você vê lsusb
não tem nada a ver com isso.
É por isso que você vê o número de série no qual está interessado em um método, mas não no outro método. E é por isso que você não pode usar lsusb
para obter o tipo de número de série no qual está interessado
Responder3
Você pode usar lsusb
com sinalizador detalhado, mas precisa ter certeza de usar sudo
com ele, caso contrário o serial estará incorreto.
sudo lsusb -v
Se isso for muito detalhado, execute lsusb
para obter o ID do 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
Em seguida, execute lsusb
com -s
flag para mostrar apenas o dispositivo especificado e grep para o número de série.
Então, para o número de série do dispositivo Rigol:
$ sudo lsusb -s 012 -v|grep -i iserial
iSerial 3 DP8C221100000
Para obter mais informações sobre lsusb
como usar o --help
sinalizador:
$ 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