市場には何千ものUSBデバイスがあります。キーボード、スキャナー、プリンター、マウスなど、すべてLinuxで動作する無数のデバイスです。ベンダーの詳細はUSBIDリポジトリに保存されています。
lsusb
Linuxのlsusb
コマンドは、システムに接続されているUSBデバイスに関する情報を一覧表示しますが、情報が不完全な場合があります。たとえば、最近、私のUSBデバイスの1つのブランドが認識されていないことに気づきました。デバイスは機能していましたが、接続されているUSBデバイスの詳細を一覧表示しても、識別情報は提供されませんでした。これが私のlsusb
からの出力です コマンド:
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 046d:082c Logitech, Inc.
Bus 001 Device 003: ID 0951:16d2 Kingston Technology
Bus 001 Device 002: ID 18f8:1486
Bus 001 Device 005: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
最後の列でわかるように、メーカーの説明がないデバイスが1つあります。デバイスが何であるかを判断するには、USBデバイスツリーをさらに詳しく調べる必要があります。幸い、lsusb
コマンドにはより多くのオプションがあります。 1つは-D device
です 、manページで説明されているように、デバイスごとの詳細を引き出すために:
「/dev/ bus / usbディレクトリをスキャンせず、代わりにデバイスファイルが提供されているデバイスに関する情報のみを表示します。デバイスファイルは/ dev / bus / usb / 001/001のようになります。このオプションは、次のような詳細情報を表示します。 v オプション;これを行うには、rootである必要があります。」
デバイスパスをlsusbコマンドに渡す方法が簡単にわかるとは思いませんでしたが、マニュアルページと初期出力を注意深く読んだ後、その作成方法を決定することができました。 USBデバイスはUDEVファイルシステムに存在します。それらのデバイスパスは、USBデバイスディレクトリ/dev/bus/usb/
から始まります。 。パスの残りの部分は、デバイスのバスIDとデバイスIDで構成されます。私のわかりにくいデバイスはバス001、デバイス002で、これは001/002に変換され、パス/dev/bus/usb/001/002
を完了します。 。これで、このパスをlsusb
に渡すことができます 。 more
にもパイプします 多くの場合、そこには非常に多くの情報があるためです:
$ lsusb -D /dev/bus/usb/001/002 |more
Device: ID 18f8:1486
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x18f8
idProduct 0x1486
bcdDevice 1.00
iManufacturer 0
iProduct 1
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 59
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 2 Mouse
iInterface 0
HID Device Descriptor:
残念ながら、これは私が見つけたいと思っていた詳細を提供しませんでした。初期出力に表示される2つのフィールド、idVendor
およびidProduct
、両方とも空です。少し下にスキャンするとマウスという単語が表示されるので、いくつかの助けがあります 。 A-HA!つまり、このデバイスは私のマウスです。
USBIDリポジトリ
これにより、自分だけでなく他のLinuxユーザーにとっても、これらのフィールドにどのように入力できるのか疑問に思いました。このためのオープンソースプロジェクトがすでに存在することがわかりました:USBIDリポジトリ。これは、USBデバイスで使用されるすべての既知のIDのパブリックリポジトリです。また、USBユーティリティを含むさまざまなプログラムで、人間が読める形式のデバイス名を表示するために使用されます。
Webサイトから、またはデータベースをダウンロードして、特定のデバイスのリポジトリを参照できます。ユーザーは、新しいデータを送信することもできます。これは私がマウスに対して行ったことですが、それはありませんでした。
USBIDを更新します
USB IDデータベースは、usb.ids
というファイルに保存されます。 。この場所は、Linuxディストリビューションによって異なる場合があります。
Ubuntu 18.04では、このファイルは/var/lib/usbutils
にあります。 。データベースを更新するには、コマンドupdate-usbids
を使用します 、root権限またはsudo
で実行する必要があります :
$ sudo update-usbids
新しいファイルが利用できる場合は、ダウンロードされます。現在のファイルがバックアップされ、新しいファイルに置き換えられます:
$ ls -la
total 1148
drwxr-xr-x 2 root root 4096 Jan 15 00:34 .
drwxr-xr-x 85 root root 4096 Nov 7 08:05 ..
-rw-r--r-- 1 root root 614379 Jan 9 15:34 usb.ids
-rw-r--r-- 1 root root 551472 Jan 15 00:34 usb.ids.old
最近のバージョンのFedoraLinuxは、データベースファイルを/usr/share/hwdata
に保存します。 。また、更新スクリプトはありません。代わりに、データベースはhwdata
という名前のパッケージで維持されます 。
# dnf info hwdata
Installed Packages
Name : hwdata
Version : 0.332
Release : 1.fc31
Architecture : noarch
Size : 7.5 M
Source : hwdata-0.332-1.fc31.src.rpm
Repository : @System
From repo : updates
Summary : Hardware identification and configuration data
URL : https://github.com/vcrhonek/hwdata
License : GPLv2+
Description : hwdata contains various hardware identification and configuration data,
: such as the pci.ids and usb.ids databases.
これで、USBデバイスリストに、以前は名前が付けられていなかったこのデバイスの横に名前が表示されます。これを上記の出力と比較してください:
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 046d:082c Logitech, Inc. HD Webcam C615
Bus 001 Device 003: ID 0951:16d2 Kingston Technology
Bus 001 Device 014: ID 18f8:1486 [Maxxter]
Bus 001 Device 005: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
リポジトリが新しいデバイスと既存のデバイスの詳細で定期的に更新されると、他のデバイスの説明が変わることに気付くかもしれません。
新しいデータを送信するには、Webインターフェイスを使用する方法と、特別にフォーマットされたパッチファイルを電子メールで送信する方法の2つがあります。始める前に、提出ガイドラインを読みました。最初にアカウントを登録する必要があり、次にプロジェクトの送信システムを使用してマウスのIDと名前を提供する必要がありました。 USBデバイスを追加するプロセスは同じです。
USB IDリポジトリを使用しましたか?もしそうなら、コメントであなたの反応を共有してください。