Como descobrir o UUID de um dispositivo USB sem bloqueio?

5

Em suma, o dispositivo que eu tenho não é um dispositivo de bloco, então o comando blkid não combina comigo. Mas pelo menos eu posso obter algumas informações sobre o meu dispositivo através do comando lsusb -v , embora ele não contenha seu UUID.

E eu sei que o meu dispositivo tem o UUID. O problema é que eu tentei executar o comando VBoxManage list usbhost e ele me mostrou alguns dispositivos USB (incluindo dispositivos sem bloco) com seus UUIDs . Mas, por algum motivo, a saída do comando cessou abruptamente (mesmo sem usar o símbolo de nova linha, embora com 0 código de retorno) no começo da lista, então não tive a chance de ver o UUID do meu dispositivo. Eu não quero descobrir por que isso aconteceu. Em vez disso, quero saber uma maneira alternativa de descobrir o UUID do meu dispositivo, porque acredito que deveria ser mais fácil de fazer.

E apenas no caso de essa informação ser interessante para alguém: Gentoo, linux 3.7.10

/ sys / kernel / depuração / usb / devices

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 2
B:  Alloc=  0/800 us ( 0%), #Int=  1, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 3.07
S:  Manufacturer=Linux 3.7.10-gentoo-r1 ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=0000:00:1d.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 8
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=8087 ProdID=0024 Rev= 0.00
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=256ms

T:  Bus=02 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#=  3 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=048d ProdID=1336 Rev= 1.00
S:  Manufacturer=Generic   
S:  Product=Mass Storage Device
S:  SerialNumber=00000000000006
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 2
B:  Alloc=  0/800 us ( 0%), #Int=  4, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 3.07
S:  Manufacturer=Linux 3.7.10-gentoo-r1 ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=0000:00:1a.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 6
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=8087 ProdID=0024 Rev= 0.00
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=256ms

T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  3 Spd=12   MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=1366 ProdID=0101 Rev= 1.00
S:  Manufacturer=SEGGER
S:  Product=J-Link
S:  SerialNumber=000038000375
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms

T:  Bus=01 Lev=02 Prnt=02 Port=03 Cnt=02 Dev#=  4 Spd=12   MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0403 ProdID=6001 Rev= 6.00
S:  Manufacturer=FTDI
S:  Product=TTL232R-3V3
S:  SerialNumber=FTF5T2QJ
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 90mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms

T:  Bus=01 Lev=02 Prnt=02 Port=04 Cnt=03 Dev#=  5 Spd=12   MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=046d ProdID=0a01 Rev=10.13
S:  Manufacturer=Logitech
S:  Product=Logitech USB Headset
C:* #Ifs= 3 Cfg#= 1 Atr=80 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=(none)
I:* If#= 1 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=(none)
I:  If#= 1 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=(none)
E:  Ad=01(O) Atr=09(Isoc) MxPS= 192 Ivl=1ms
I:  If#= 1 Alt= 2 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=(none)
E:  Ad=01(O) Atr=09(Isoc) MxPS=  96 Ivl=1ms
I:* If#= 2 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=(none)
I:  If#= 2 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=(none)
E:  Ad=84(I) Atr=09(Isoc) MxPS=  96 Ivl=1ms

T:  Bus=01 Lev=02 Prnt=02 Port=05 Cnt=04 Dev#=  6 Spd=480  MxCh= 7
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=2001 ProdID=f103 Rev= 1.00
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=256ms

T:  Bus=01 Lev=03 Prnt=06 Port=01 Cnt=01 Dev#=  7 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=13fe ProdID=3600 Rev= 1.00
S:  Manufacturer=        
S:  Product=                
S:  SerialNumber=90B217007BC11098
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=200mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

T:  Bus=01 Lev=03 Prnt=06 Port=03 Cnt=02 Dev#= 12 Spd=1.5  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=045e ProdID=071d Rev= 2.50
S:  Manufacturer=Microsoft
S:  Product=Microsoft�� 2.4GHz Transceiver V1.0
C:* #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=10ms
I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=10ms

O dispositivo de interesse é:
T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh= 0

UUIDs de dispositivos sem bloqueio existentes:

[krokoziabla@ktulhu]:0:/home/krokoziabla> VBoxManage list usbhost

Host USB Devices:

UUID:               f864c487-2a25-4649-84cd-39dc67be695a
VendorId:           0x0403 (0403)
ProductId:          0x6001 (6001)
Revision:           6.0 (0600)
Port:               3
USB version/speed:  2/1
Manufacturer:       FTDI
Product:            TTL232R-3V3
SerialNumber:       FTF5T2QJ
Address:            sysfs:/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4//device:/dev/vboxusb/001/004
Current State:      Busy

UUID:               b03a6680-ecc5-4f48-8103-3e387cf4cb28
VendorId:           0x045e (045E)
ProductId:          0x071d (071D)
Revision:           2.80 (0280)
Port:               3
USB version/speed:  2/1
Manufacturer:       Microsoft
Product:            Microsoft[krokoziabla@ktulhu]:0:/home/krokoziabla> 
    
por krokoziabla 02.05.2013 / 15:06

2 respostas

3

Dispositivos não têm UUIDs. Partições do. Os UUIDs são criados quando um sistema de arquivos é formatado. É por isso que eles podem ser alterados e por que eles mudam quando você reformata.

Em outras palavras, um UUID não é uma característica do hardware e não há como "localizar" informações que não existem.

Pode haver uma ou mais partições no dispositivo que tenham UUIDs, portanto, se você já viu uma antes associada a ela, é o UUID de uma partição. Se houver mais de uma partição, pode haver um UUID para cada uma delas (também não é possível, pois nenhuma é necessária), mas nenhuma delas é característica do hardware (são apenas dados mutáveis armazenados nela) . As chaves USB geralmente vêm com uma grande partição FAT32 ou NTFS pré-formatada. Se você reformatar isso, o UUID mudará.

Para encontrar o UUID de uma partição, você precisa encontrar sua identidade como um dispositivo de bloco. cat /proc/partitions deve listar tudo o que o kernel está ciente, montado ou não. Presumindo que não há dezenas de drives conectados ao seu sistema, ele deve ser simples o suficiente para descobrir qual deles é o USB. /proc/partitions realmente lista a unidade também, você pode diferenciá-la de suas partições porque a unidade não terá um número no final (sda vs. sda1) e a saída file -s será diferente:

> file -s /dev/sda
/dev/sda: x86 boot sector; partition 1: ID=0x83, active, starthead 32, startsector 2048, 134217728 sectors; 
partition 2: ID=0x83, starthead 202, startsector 134219776, 58720256 sectors; 
partition 3: ID=0x83, starthead 245, startsector 192940032, 46137344 sectors; 
partition 4: ID=0x82, starthead 223, startsector 239077376, 10992304 sectors, code offset 0x63

> file -s /dev/sda1
/dev/sda1: Linux rev 1.0 ext4 filesystem data, UUID=cd8e11b5-07ac-7741-ae0c-36e63eacf8a1, volume name "_Fedora-17-x86_6/" (needs journal recovery) (extents) (large files) (huge files)

Às vezes, as unidades pré-formatadas são apenas um grande dispositivo, por exemplo:

> file -s /dev/sdb
/dev/sdb: x86 boot sector, Microsoft Windows XP Bootloader NTLDR, code offset 0x3c, 
OEM-ID "MSDOS5.0", sectors/cluster 64, root entries 512, 
Media descriptor 0xf8, sectors/FAT 246, heads 255, sectors 4026368 (volumes > 32 MB) , reserved 0x1, serial number 0xe06de56f, 
unlabeled, FAT (16 bit)

Observe que este é, de fato, "não marcado" e parece não ter um UUID (eles não são obrigatórios).

    
por 02.05.2013 / 16:06
0
udevadm info --name=/dev/bus/usb/$BUS_NUMBER/$DEV_NUMBER --query=property

fornece ID_SERIAL e ID_SERIAL_SHORT . Não sei se os dispositivos USB têm um UUID adicional.

    
por 02.05.2013 / 15:43