手当たり次第に書くんだ

飽きっぽいのは本能

USB (Universal Serial Bus) は、プラグアンドプレイやホットプラグに対応し、さまざまな周辺機器に接続できるシリアル転送方式のインターフェイス規格です。USB ポートから電力供給も可能であり、最大で 127 台のデバイスを接続できます。カーネル 2.4 で USB 1.1 とホットプラグがサポートされ、カーネル 2.6 で USB 2.0, USB 3.0 に正式に対応しました。

各規格の比較は以下の通りです。

規格転送速度ドライバ(カーネルモジュール)
USB 1.0/1.112MbpsUHCI (Universal Host Controller Interface), OHCI (Open Host Controller Interface)
USB 2.0480MbpsEHCI (Enhanced Host Controller Interface)
USB 3.0/3.15GbpsxHCI (Extensible Host Controller Interface)
USB 規格の比較

USB デバイスはいくつかのデバイスクラス(種類)に分かれています。それぞれのデバイスクラスにはクラスドライバという汎用ドライバが用意されています。以下は主な USB デバイスクラスをまとめたものです。

デバイスクラスデバイス
HID (Human Interface Device)キーボード、マウスなど。
MAS Storage Classハードディスク、USB メモリなど。
ACM Communication Device Classモデム、TA など。
Audio Classスピーカー、マイクなど。
主な USB デバイスクラス

Linux 環境における USB デバイスの確認は、lsusb コマンドを使用します。実際に lsusb コマンドを使用してみましょう。ここでは、-v オプションを使用して詳細も出力しています。

myadmin@ubuntu:~$ lsusb -v

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0 
  bDeviceProtocol         3 
  bMaxPacketSize0         9
  idVendor           0x1d6b Linux Foundation
  idProduct          0x0003 3.0 root hub
  bcdDevice            5.15
  iManufacturer           3 Linux 5.15.0-92-generic xhci-hcd
  iProduct                2 xHCI Host Controller
  iSerial                 1 0000:00:14.0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x001f
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              12
        bMaxBurst               0

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0 
  bDeviceProtocol         1 Single TT
  bMaxPacketSize0        64
  idVendor           0x1d6b Linux Foundation
  idProduct          0x0002 2.0 root hub
  bcdDevice            5.15
  iManufacturer           3 Linux 5.15.0-92-generic xhci-hcd
  iProduct                2 xHCI Host Controller
  iSerial                 1 0000:00:14.0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0019
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              12

この出力では、前半が USB 3.0、後半が USB 2.0 を示していますが、どちらも xHCI を使用していることが分かります。これは、この USB コントローラーが USB 2.0 と USB 3.0 に対応しているため、xHCI で両方をまかなっているのか、もしくは、実際は USB 2.0 では EHCI が使用されているが、lsusb コマンドの出力の不具合であるか、のどちらかだと思います。

LPIC USB

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る