さて、今回からは各レイヤ別にもう少し細かくSpecificationを追いかけて行きたいと思う。最初はMechanicalである。
USB 3.0では、
- USB Standard-A (Plug/Receptacle)
- USB Standard-B (Plug/Receptacle)
- USB Powered-B (Plug/Receptacle)
- USB Micro-B (Plug/Receptacle)
- USB Micro-A Plug
- USB Micro-AB Receptacle
という、都合5対のPlugとReceptacleが定義されている。信号線の数が増えているし、信号の速度も増しているから、従来のPlug/Receptacleが使えないのは当然であるし、逆に従来のPlug/Receptacleが混在する環境では、自動的にその先はUSB 1.1/2.0相当となる。そんなわけで、USB 1.1/2.0との下位互換性は保っているとは言え、基本的には全くあたらしい構造であるが、そうした話とは別にもう一つ変更点がある。それは当初からOTGに対応していることだ。
OTGとはOn-The-Goの略である。これはもともと、USB 2.0に対するSupplementalとして2001年12月に1.0がReleaseされた。最新のものは2006年12月にリリースされた1.3となる。
通常のUSBの場合、1つのHost Controllerの下にTree状に複数のUSB Deviceがぶら下がる事になる。この結果、Host Controllerは複数Deviceの管理を行う必要があるし、様々なClass Driverを用途に合わせてロードするといった作業も必要になる。この結果PCのような処理性能の高いPlatformでないとUSBが使えないという事になっていた。
ところがUSBが幅広く使われるようになると、例えばデジタルカメラとプリンタをUSBケーブルで繋ぎ、撮影した画像をワンタッチ印刷なんてニーズが出てくる。あるいは携帯電話とUSB Headset(実際はこれに関してはBluetoothにお株を奪われてしまった感じであまり実現しなかったが)を接続とか、携帯電話にUSBで外付けキーボードを接続(これもBluetoothにかなり侵食されつつある)とか、まぁそうしたニーズだ(Photo01)。
Photo01: これは2004年8月31日にサンノゼで開催されたUSB On-The-Go Training Seminarにおける、SynopsysのEric Huang氏の"USB On-The-Go Overview"というプレゼンテーションからの抜粋。最近はこうした用途の大半がBluetoothになりつつある。 |
こうしたケースでは、接続されるDeviceは限られるし、間にHubを介して複数Deviceが繋がるといったケースも考慮しなくて良い。その代わり、機器がUSB Hostになる場合とUSB Deviceになる場合の両方が考えられる。Photo01の例で言えば、キーボードと繋ぐ場合は携帯電話がUSB Hostとして動き、キーボードをHID(Human Interface Device)として繋ぐ形だ。逆にPCと繋ぐ場合、携帯電話はMass Storage ClassのUSB Deviceとして動作する事になるだろう。こうした形で動作すれば、USB Deviceの応用範囲はずっと広がる事になる。
ただこのケースで問題になるのは、そもそもある機器がOTGに対応しているとして、それがA-Device(USB Hostとして動作する)なのか、B-Device(USB Deviceとして動作する)なのか、それともAB-Device(USB Host/Deviceの両対応)なのかを判断する必要がある事だ。
従来のStandard-A/Bを使う場合、これは明確にStandard-AがHost、Standard-BがDeviceと定められているし、これを小型化したMini-AとかMini-Bも同じである。こうしたケースでは、そもそも両対応(Dual-Rollと呼ばれる)を必要とする場合、AとBの両方のコネクタを装備する形になっていた。ところが携帯電話の様に小さな機器で、そんなわざわざ両方のコネクタを装備するのはサイズの観点でもコストの観点でも好ましくない。そこで両対応となるMini-ABとか、2007年1月に追加されたMicroUSBで定義されたMicro-ABなどのコネクタの場合、IDと呼ばれる信号ピンを1本増やし、これでA-Device/B-Deviceの識別を行うようにした。
例えばMicroUSBの場合、信号ピンは、
- 1 : VBUS
- 2 : D-
- 3 : D+
- 4 : ID
- 5 : GND
となっており、このIDのレベルがA-Deviceの場合は信号を絶縁(最低100KΩ以上)、B-Deviceの場合はGND(最大でも10Ω以下)にすることで識別するようになっている。
(続く)