GNU/Linux >> Linux の 問題 >  >> Linux

このUSBIDリポジトリを使用してLinux上のより多くのデバイスを認識します

市場には何千もの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リポジトリを使用しましたか?もしそうなら、コメントであなたの反応を共有してください。


Linux
  1. 4Linuxで接続されたUSBデバイス名を知るための便利な方法

  2. LinuxでDM-CryptLUKSを使用してパーティションを暗号化する方法

  3. Linux –論理的に切断されたUSBデバイスを再接続する方法は?

  1. LinuxでUSB入力ストリームを読み取る

  2. LinuxでUSB電源を制御(オン/オフ)する

  3. 電源投入前に USB デバイスが接続されていると、当社の組み込み Linux システムは USB デバイスを認識しません。提案?

  1. このLinuxグラフ電卓で数学は楽しいです

  2. このオープンソースツールを使用して、USB上に複数のLinuxディストリビューションを保持します

  3. このPythonアプリを使用してLinuxでビデオを編集する