2016年10月5日水曜日

USBデバイス

USB(Universal Serial Bus)というのはパソコン周辺機器をパソコンに接続するのに広く普及している規格です。
USBの認証のロゴ

USBメモリ。フラッシュと呼ぶ人もいる。

USBの特徴としては次のものがあります。
  • 最大127台までのUSBデバイスを接続可能
  • さまざまなUSBデバイスを同一のコネクタで接続可能
  • 電源を入れたままPCからの取り外し、接続が可能(ホットプラグと呼ばれる)
  • プラグアンドプレイをサポートしている。
プラグアンドプレイ (Plug and Play, PnP) は、パーソナルコンピュータ(パソコン)に周辺機器や拡張カード等を接続した際にハードウェアとファームウェア、ドライバ、オペレーティングシステム、およびアプリケーション間が自動的に協調し、機器の組み込みと設定を自動的に行う仕組みのことである。パソコンのユーザビリティ(使い勝手)を向上させる技術の1つ。- wikipedia 「プラグアンドプレイ」
USBは色々なバージョンがあります。

  • USB1.0 最大データ転送速度12Mビット/秒
  • USB1.1 最大データ転送速度12Mビット/秒
  • USB2.0 最大データ転送速度480Mビット/秒
  • USB3.0 最大データ転送速度5Gビット/秒
  • USB3.1 最大データ転送速度10Gビット/秒

通常ハードウェア(パソコン周辺機器、たとえばプリンターとか)を使うにはデバイスドライバが必要です。プリンターをパソコンにつなげてもいきなり動くわけではないですね。プリンタをつないだあとにドライバをいれるという面倒な作業が必要になりますが、このめんどくさい専用ドライバのことをデバイスドライバと言います。

ところが、PCにつなげただけで動くUSB製品もためにありますね。LinuxにはUSBデバイスに対してクラスドライバというものが導入されており、これがあるおかげで(デバイスクラスの仕様にそったUSB製品であれば)特にドライバをユーザーがインストールすることなくハードウェアを使用することができます。

もちろん、そのUSB製品がデバイスクラスの仕様に沿っていなければ、汎用のクラスドライバだけでは対応できず、専用のデバイスドライバを別途入れる必要があります。

デバイスクラスの例
HID (Human Interface devices) キーボードとか。
USBマスストレージデバイス USBメモリとか。
オーディオ マイクとかスピーカーとか。
プリンタ そのままプリンタ。
ワイヤレスコントローラー Bluetoothアダプタなど。

LinuxでUSBデバイスの情報が見たい場合、lsusbというコマンドを使います。
$ lsusb
なんか色々なUSBデバイスの情報がでていますね。

オプションとして -v とか -t をつけることができます。-vをつけるとより詳しい情報が表示され、-tをつけるとツリー状に情報が表示されます。
$lsusb -v (より詳しい情報)
$lsusb -t  (ツリー状の表示)



ちなみに一度に複数のオプションをつけるとどうなるのだろう・・・と思ってやってみました。
$lsusb -v -t
でも結果はツリー状になるだけで、「詳しくてなおかつツリー状」にはなりませんでした。きっと同時に複数つけられるオプションとできないオプションがあるんでしょうね。