web-dev-qa-db-ja.com

LinuxでUSBデバイスを一意に識別する方法

まったく同じ情報を表示する2つの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を使用して2つを比較して違いを見つけてみました。ここでもまったく同じです。

2つのデバイスのどちらと通信しているかを確実に知る能力が必要です。これまでのところ、私が考えることができるのは、デバイスを特定の順序で接続するか、コンピューターの特定のUSBポートにデバイスを接続することだけです。これら2つは悪い解決策だと思いますが、USBデバイスを区別する他の方法を知っている人がいるかどうか疑問に思っていますか?

私がこれまでに最もよく見つけた3番目の解決策は、デバイスと通信し、デバイスを一意に識別できる違いを見つけようとすることです。

後で追加:一方のデバイスがUSB2で、もう一方のデバイスがUSB3であることがわかりました。つまり、eHCIとxHCIを使用しています。これに応じて、UDEVに違いを認識させ、/ devに永続的なシンボリックリンクを作成することは可能ですか?

1
Mogget

それらを使用してみてください [〜#〜] uuid [〜#〜]

ユニバーサル一意識別子([〜#〜] uuid [〜#〜])は、ソフトウェア構築で使用される識別子標準です。 UUIDは単に128ビット値です。各ビットの意味は、いくつかのバリエーションのいずれかによって定義されます。

コマンドを使用して blkid

Sudo blkid -sUUID

リストブロックのデバイス属性をUUIDで出力します。

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

次に、/etc/fstabファイルに行を書き込むことを選択できます

UUID = {YOUR-UID} {/ path/to/mount/point} {file-system-type} defaults、errors = remount-ro 0 1

それは次のように見えるはずです

UUID = F414C7DD74B7FFAA/where/you/want/ntfs-3g defaults、auto、umask = 000、users、rw 0 0

または、他の回答でスケッチされた手順に従う( devルールでUUIDを使用し、/ media/$ UUIDにusbドライブをマウントする または Linuxフラッシュドライブ 、.。 )

参照

2
Hastur