写真01は、Nexus7-2013年版(以下Nexus 7と略す)の画面写真の一部を拡大したものです。マウスカーソルが表示されていて、バッテリが充電状態です。このマウスはUSBでNexus 7と接続していて、かつ、同時にNexus 7が充電状態になっています。いろいろと調べた結果、こうしたケーブルを簡単に作ることが可能だということがわかりました。今回は、このケーブルについて説明しようと思います。

写真01: バッテリアイコンが充電状態で、マウスカーソルが下にある。マウスは、USBで接続しており、「OTG充電ケーブル」を使うと、充電とUSBデバイスの接続が同時にできる

Nexus 7は、USBのBattery Charging Specification 1.2(以下[BC1.2]と略す)という仕様に準拠しているため、充電を行いつつ、かつ、USBデバイスを接続するケーブルを利用することが可能なのです。このように充電とUSB接続が同時に行えるケーブルをここでは「OTG充電ケーブル」と呼ぶことにします。なお、俗に「給電ケーブル」や「三つ叉ケーブル」などと呼ばれるコネクタが3つあるケーブルが市販されていますが、単純に電源ラインだけを接続したUSBケーブルやホストケーブルであることがほとんどです。

Nexus 7などのアンドロイドデバイスのほとんどは、マイクロUSBコネクタを装備しています。このマイクロUSBコネクタは、本体の充電に使われますが、「OTGケーブル」や「ホストケーブル」と呼ばれる専用のケーブルを接続することでUSBデバイスを接続できるようになります。このように、ホストになることもできれば、USBデバイスとしても動作できる機器をUSBでは、「OTGデバイス」(On The Go)といいます。

問題は、マイクロUSBコネクタが1つしかないので、充電かUSBデバイスの接続かのどちらか一方しか行えないことにあります。少しでも消費電力が大きなデバイスをOTGケーブルで接続してしまうと、本体のバッテリを消費していってしまいます。機器の種類や機器の状態によっては、画面がオフの間もUSBデバイスに電力が供給され続けるため、比較的短時間でバッテリがなくなってしまうこともあります。

こうした問題があるために作られたUSBの仕様が[BC1.2]です。仕様書は、以下のURLから入手可能です(英語のみ)。

http://www.usb.org/developers/docs/devclass_docs/BCv1.2_070312.zip

この仕様書では、ACA(Accessory Charger Adaptor)というものを定義しています。ACAは、OTGデバイスを充電しつつ、USBデバイス(Accessory)を利用可能にするためのアダプタです。こうしたアダプタには、たとえば、アンドロイドスマートフォンを装着してスピーカーから音楽を再生するような機器や充電スタンドとった機器が想定されています。

「OTG充電ケーブル」は、このACAを簡略化してケーブルとして扱えるようにしたものです。

OTG充電ケーブルとは

さて、ケーブルの回路を説明する前にOTGや[BC1.2]について簡単に解説しておきます。まず、OTGデバイスは、前述のようにケーブルの種類で、USBホストになったり、USBデバイスになることができるデバイスです。最近では、ほとんどのアンドロイドのスマートフォンやタブレットがOTGデバイスとして作られています。ただし、過去に出荷されたアンドロイド機では、OTGではなく、USBデバイスとしてだけしか動作しないものもあります。

OTGデバイスでは、接続するケーブルで、動作が変わり、このとき、USBの仕様に従って、電力の供給が行われます。電力は、「USBホスト」側から供給され、「USBデバイス」は、これを利用して動作します。ただしUSBデバイスは電力を持っていて、ホスト側からの電力を利用しないものも作ることができます。また、このときもケーブルを流れる電力の向きはかわりません。

OTGデバイスの役割が変わるということは、電力供給の向きも変わるということです(図01)。このため、OTGデバイスがUSBホストになっているときには、電力を供給する側であるために自身の充電を行うことができません。OTGデバイスを充電するためには、ホストケーブルではなく、普通のUSBケーブルを使って、他のホスト(PCなど)やACアダプタなどに接続する必要があります。このときACアダプタとUSBホストを区別するための仕様については、「第5回 つながっているのはACアダプタ、それともUSB端子」で解説しました。

図01: OTGデバイスは、ケーブルの種類によって、ホストとしてもデバイスとしても動作できる。このとき、USBケーブルを流れる電力の向きが一方向で違いに逆向きになる

[BC1.2]で、定義されているACAには、3つの動作モードがあり、そのうちのひとつに、OTGデバイスにUSBデバイスを接続しつつ、両方の電力を、別の電源から供給できるものがあります。(図02)は、ACAの論理的なダイアグラムです([BC1.2]仕様書からの抜粋)。

図02: [BC1.2]が定義するACAこと、Accessory Charging Adapter。OTG機器をホストとして動作させUSBデバイス(Accessory)を接続し、かつ、外部から双方に電力を供給するアダプタ

図02の左側にある「OTG Device」がスマートフォンやタブレットに相当し、右上の「Accessory」はUSBデバイス、右下の「CDP or DCP」がUSBチャージャーやUSB出力のACアダプタに相当します。ちなみにCDPは「Charging Downstream Port」、DCPは「Dedicated Charging Port」の略で、前者は、PCの充電用USBコネクタのように出力電力を大きくできるUSBポートをいい、後者は、USB電源のように電力供給のみを行う機器をさします。USB 2.0までは、電力供給は、500mAまでに制限されていて、こうしたタイプのUSBコネクタは「SDP」(Standard Downstream Port)と呼ばれてCDPとは明確に区別されています。

充電可能な動作モードとは図02の下にある表の最後の行にあるもので、このときには、図の「Charger Switch」が「Closeed」つまり、OTGデバイスとAccessoryの電源ラインは、CDP/DCPから供給されている状態で、OTGデバイスは「A-dev」状態(つまりホスト)になっていることになります。このモードを決めているのは、OTGデバイスのマイクロUSBコネクタのIDピンです。このIDピンは、OTGデバイスのホスト、デバイスの動作を切り替えるものでした。

ACAでは、このIDピンとGNDの間に抵抗器を入れ、その抵抗値でACAの状態を判定します。そのときる抵抗値は、RID_A(124kΩ)になります。

[BC1.2]に準拠したデバイスは、IDピンにRID_Aの抵抗が接続されていることを検出すると、電力の供給をやめ、マイクロUSBの電源ライン(VBUS/GND)から電力を受け、充電を行うようになります。

なお、[BC1.2]に準拠していないOTGデバイスでは、抵抗器のためにIDピンがGNDに接続されていないと判定されて、USBデバイスとして動作します。

実際の回路図など

筆者の作成したものは、ACAの特定のモードでのみ動作するものなので、図02の「Adapter Control」はなく、表の行4のモードに固定されてものです。つまり、ケーブルを作るなら、IDピンに抵抗器を接続して反対をGNDに接続(プルダウン)しておくだけです。

具体的な回路図としては、(図03)のようになります。一般に、マイクロUSBケーブルやホストケーブルでもでは、ID信号はケーブル側に出ていないのが普通なので、マイクロUSBコネクタ単体を入手してケーブルを作る必要があります。筆者は、手持ちの機材を利用してとりあえずブレッドボードで簡易配線したものを作って実験しました(写真02)。

図03: ACAの動作をもとに試作してみた「OTG充電ケーブル」の回路図

写真02:とりあえずバラックで作った「OTG充電ケーブル」。124kΩの抵抗が手に入らなかったので、手持ちの2つの抵抗を組み合わせた

RID_Aの値である124kΩは、一般的に流通している抵抗器の系列にはないものなので、この値の抵抗は、簡単には手に入らないと思います。また、[BC1.2]の仕様書では、RID_Aの値は、下が122kΩ、上が126kΩと、誤差は1.6%以内になっているので注意してください。抵抗値を検出するだけなので大きな電流は流れないはずなので1/4Wで大丈夫でしょう。

筆者は、手ともにあった誤差1%の金属皮膜抵抗120kΩと、誤差5%の4kΩの炭素皮膜抵抗の組み合わせで実験しました。テスターで計って抵抗の組み合わせが仕様内であることは確認しています。

ブレッドボードで実験したのは、ケーブルをつくっても、抵抗が2つだとさすがにマイクロUSBのコネクタケースの中にははいらないので、外に出すしかなく、だったら、工作が容易なものを最初に作って実験しようとおもったからです。

[BC1.2]対応機器がACAを区別しているのはプルダウン抵抗値の測定なので、おおまかな値でも大丈夫とはおもうのですが、厳格に測定する対応機器がないとも限りません。ちなみに仕様上は、[BC1.2]では、IDピンについて以下のものを検出しています。また、これ以外にも、DCPの区別などでD-/D+信号などの状態もチェックしています(詳しくは[BC1.2]の仕様書をご覧ください)。

RID_GND GND接続(1kΩ以下)
RID_A 124kΩ
RID_B 68kΩ
RID_C 36.5kΩ
RID_FLOAT 開放(220kΩ以上)

ケーブルを自作される場合、誤差1%のものを使ったり、実測して確認して、できれば実験してから組み上げるといいかもしれません。

また、USBの信号のうちD+とD-については、信号の扱いが微妙なので、ちゃんとしたケーブルで配線する必要があります。ブレッドボードを使う場合には、最短接続できるように工夫する必要があります。ここがいい加減だと、USBデバイスの認識などでエラーが出ます。

なお、アンドロイド機が[BC1.2]に対応しているのかどうかについては、基本的に情報がないのが普通です。このため、手持ちの機器で実験される場合、USBデバイスや電源側を接続せず、IDに124kΩでプルダウンして、アンドロイド側からの電源出力(VBUS)がオフになることを確認することをおすすめします。できれば、仕様書を読むなどして正確な理解のうえ実験するほうがいいでしょう。

また、本記事の回路図を元に作成したとしても、機器の仕様などにより違う結果となることが考えられ、最悪機器の破壊に至る可能性があります。どのような場合でも筆者や当サイトは何の責任もとることができません。実験やケーブルの作成はご自身のリスクでお願いします。

回路としては、抵抗ひとつつなぐだけのものなので、確認するのはすぐできるのですが、これで正しく動作するか、[BC1.2]に対応してないハードウェアだとどうなるのか? などを確認するために仕様書を読んで理解するのにちょっと時間がかかってしまいました。もし仕様書を読まれる場合、OTG関連のドキュメントやUSB 2.0の仕様書にも目を通して置いた方がいいでしょう。

本連載は、2014年11月4日にAndorid情報のWeb専門誌「AndroWire」に掲載した記事を再構成したものです。