如何在 Linux 中唯一标识 USB 设备

如何在 Linux 中唯一标识 USB 设备

我有两个 USB 设备,它们显示完全相同的信息。

root@nordlys:/$ dmesg

[27428.655362] usb 1-2: new full-speed USB device number 18 using xhci_hcd
[27428.678006] usb 1-2: New USB device found, idVendor=09d8, idProduct=0320
[27428.678013] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[27428.678017] usb 1-2: Product: RFID Device (COM)
[27428.678020] usb 1-2: Manufacturer: OEM
....
....
[27428.751580] usb 3-1.2: new full-speed USB device number 16 using ehci_hcd
[27428.850532] usb 3-1.2: New USB device found, idVendor=09d8, idProduct=0320
[27428.850539] usb 3-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[27428.850544] usb 3-1.2: Product: RFID Device (COM)
[27428.850547] usb 3-1.2: Manufacturer: OEM

我尝试通过使用 比较两者来查找差异root@nordlys:/$ lsusb -v。这里它们完全相同。

我需要能够确切地知道我正在与哪两个设备通信。到目前为止,我能想到的唯一办法是按特定顺序连接设备或将设备连接到计算机上的特定 USB 端口。我发现这两种方法都不是好办法,我想知道你们是否知道其他区分 USB 设备的方法?

到目前为止我发现最好的第三种解决方案是与设备通信并尝试在那里找到可以唯一识别它们的差异。

稍后添加:我看到一个设备是 USB2,而另一个是 USB3,这意味着它们使用 eHCI 和 xHCI。是否可以让 UDEV 看到差异并根据此差异在 /dev 中创建持久符号链接?

答案1

你应该尝试使用他们的唯一唯一标识符

通用唯一标识符 (唯一唯一标识符) 是软件构建中使用的标识符标准。UUID 只是一个 128 位值。每个位的含义由几种变体中的任意一种定义。

使用命令blkid

sudo blkid -sUUID

您将使用 UUID 打印块设备属性列表,例如

...
/dev/sdc1: UUID="F414C7DD74B7FFAA" 
...

/etc/fstab然后你可以选择在文件上写一行

UUID={YOUR-UID} {/path/to/mount/point} {文件系统类型} 默认值,错误=remount-ro 0 1

应该看起来像

UUID=F414C7DD74B7FFAA /其中/您/想要/ntfs-3g 默认值,自动,umask=000,用户,rw 0 0

或按照其他答案中概述的程序进行操作(在 udev 规则中使用 UUID 并将 USB 驱动器挂载在 /media/$UUID 上或者这个答案Linux 闪存驱动器,...)

参考

相关内容