【Linux】USBとは?ホットプラグやUSBコントローラの仕組み

LinuxのUSBとは?ホットプラグやUSBコントローラの仕組みについてまとめました。

USBとは

USBとは、コンピュータと周辺デバイスの間で用いられる通信規格です。

  • USBの特徴
    • 接続可能なデバイス数は最大127台
    • ホットプラグ対応(電源投入状態で接続・切断が可能)
    • バスパワー対応(USBポートでデバイスに電源供給可能)
    • デバイスの種類に関わらず同一のインターフェース(コネクタ)で接続可能

ホットプラグの仕組み

「/etc/hotplug」以下にあるスクリプトが以下の動作を行うことで、ホットプラグを実現しています。

  1. デバイス接続
  2. Linuxカーネルがudevd(デーモン)に通知
  3. udevdは、「/etc/udevd/」以下にあるスクリプトファイルを実行し、動的にデバイスファイルを作成
  4. デバイスがhald(デバイスのデータベースを管理するデーモン)に通知され、新規のデバイス登録
  5. dbusが各アプリケーションにデバイス情報を通知し、各アプリケーションは接続されたデバイスを使用できる。
  6. 「/var/log/message」に接続されたデバイス情報のログを保存
  • hald
    • 「fstab-sync」を呼び出して「/etc/fstab」ファイルを動的に更新(追加、削除)する。
  • dbus
    • イベントを各種アプリケーションに通知するために、アプリケーション間のプロセス間通信を行うためのメッセージバス。

デバイスファイルを動的に作成するときのルール

udevが動的にデバイスファイルを作成するときのルール(どんなデバイスが接続されたら、どんなデバイスファイルを作るかと)は、「/etc/udev/rules.d/」で定義されており、設定・変更が可能です。

クラスドライバ

クラス ドライバは、特定のUSB対応デバイス(ディスクドライブ、プリンタなど)と通信可能なフトウェアコンポーネント。適切特定のUSB対応デバイスに対応するクラス ドライバがあれば、専用のソフトウェアがなくても通信接続してすぐに利用できます。

ただし、クラス ドライバは一般的なクラスのUSB対応デバイス向けに作成されているため、特殊の機能を持つUSB対応デバイスの場合、特殊な機能だけが使えないこともあります。その場合は、製品に付属しているドライバをインストールする必要があります。

USBコントローラの確認

USBコントローラ(USBデバイスの制御装置)には、以下のものがあります。

  • UHCI(Universal Host Controler Interface)
    • 主にIntelが開発し、USB1.xに対応
    • コントローラドライバはusb-uhci.o
  • OHCI(Open Host Controler Interface)
    • 主にマイクロソフトが開発し、USB1.xに対応
    • コントローラドライバはusb-ohci.o
    • UHCIよりCPUの負荷が小さい
  • EHCI(Enhanced Host Controler Interface)
    • 主にIntelが開発し、USB2.xに対応

dmesg、spci、lsmod コマンドでUSBコントローラを確認できます。

$ dmesg | grep usb

$ lspci -v

$ lsmod | grep ehci

sbmodules コマンドで、USBデバイスが使用しているカーネルモジュールを確認できます。
例えば、「BUS 001、デバイス 001」のカーネルモジュールは以下のコマンドで確認できます。

$ usbmodules –device /proc/bus/usb/001/001

USBデバイス情報の取得と設定方法

USBデバイスの情報は、「/proc/bus/usb」以下の保存されています。
例えば、コンピュータに接続されているUSBデバイスの情報は、「/proc/bus/usb/devices」ファイルにあります。に記述さ$ cat /proc/bus/usb/devices

USBデバイス情報の取得(lsusbコマンド)

lsusb コマンドでもUSBデバイスの情報を確認できます。

lsusb [オプション]

オプション 説明
 -v 詳細情報を表示
-s [[パス]:] [デバイスID] 指定したパスやデバイスIDのデバイスのみ表示
 -t ツリー表示

$ lsusb

関連ページ

【LinuC】試験対策と例題まとめ
LinuCの試験対策と例題(学習サイト)についてまとめました。
404 NOT FOUND | Linux超入門
【Linux超入門】システムの基礎とよく使うコマンドなど徹底解説
Linuxシステムの基礎とよく使うコマンドなどについて入門者向けに解説します。

コメント