編集部注: 本稿は、2012年7月27日にAndorid情報のWeb専門誌「AndroWire」に掲載した記事を再構成したものです。

一部のアンドロイドスマートフォンやタブレットでは、USBマウスやキーボードが接続できるものがある。しかし、この機能は誤解も多い。というのは、アンドロイド自体がこうした機能をサポートしていても、ハードウェアが対応していなければ利用できず、ハードウェアを対応させるかどうかはメーカーの判断次第で、キーボードやマウスの接続ができないハードウェアも存在するからだ。

USBでは、制御を行う側を「ホスト」、利用される側を「デバイス」という。パソコンは「ホスト」であり、接続されるUBSメモリやWebカメラ、キーボード、マウスなどが「デバイス」である。一般にスマートフォンやタブレットなどのUSBでキーボードなどの「デバイス」を接続するためには、「USBホスト」機能が必要になる。

通常は、ホストとデバイスの役割は固定しているが、モバイルデバイスに限り、ホスト機能とクライアント機能を切り替えて動作できる「On-The-Go」(OTG)という機能がある。一部のアンドロイドスマートフォンやタブレットは、このOTGに対応している。ただし、On-The-Goでアンドロイド側をホストとして動作させるためには、「ホストケーブル」と呼ばれる特殊なケーブルが必要になる(写真01)。逆に言うとOTG機能を装備するスマートフォンやタブレットは、通常はデバイスとして動作し、ホストケーブルを接続したときだけ、ホストとして動作するということだ。

写真01: 汎用のUSBホストケーブル。OTG側に接続するマイクロUSBプラグはA型で、周囲が四角くなっているもの。普通のマイクロUSBプラグはB型で台形になっている

話をまとめると、アンドロイドにUSBデバイスを接続して使うには以下の3つの条件を満たす必要がある。

  1. アンドロイド機自体がOn-The-Go(またはホスト)機能を持っていること
  2. そのアンドロイド機用のホストケーブルを使うこと(通常のUSBケーブルではホストにはなれない)
  3. アンドロイド機に、USBデバイスに対応したデバイスドライバが組み込まれていること

なお、目安としてアンドロイドがUSBホストをサポートしたのは、Android 2.3.4以上(Gingerbreadの後期バージョン)または3.1(Honycomb)以上である。つまり、これ以降のアンドロイドが組み込まれているマシンならばUSBホスト機能が使える可能性がある。

なお、ややこしいことにAndroid 3.1および2.3.4以上では、「USB Accessory」という機能が利用できる。これは、On-The-Go機能を持たないアンドロイド機に「USB Accessory」デバイスを接続する機能だ。このときの接続にもUSBコネクタを使う。

この機能は、接続される機器側がUSBホストとなるため、USBホストになることができないアンドロイド機でも利用できる。ただし、現状、USB Accessoryデバイスは市販されていないようだし(開発用のキットはある)、普及するとしてもこれからなのでとりあえず、今回は、忘れておいて欲しい。

OTGとホストケーブル

アンドロイドスマートフォンやタブレットにUSBホストになることができるOTGがあるかどうかを確実に見分ける方法はなく、基本的には、機器の取説やメーカーの機器ホームページを見るか、メーカーに問い合わせるしか方法がない。

アンドロイドの場合、初期の頃の機種にミニUSBを使ったものがあったが、大半の機種は、マイクロUSBコネクタである。OTGがある場合、規格上は、このマイクロUSBレセプタクルはAB型となる(写真02)。しかし、アンドロイドの中には、B型のマイクロUSBレセプタクルを持ちながら、OTGによりホストになれる機種も存在する(たとえばモトローラのXOOMなど)。

逆に、規格からいえば、マイクロUSBのAB型コネクタを装備しているアンドロイドスマートフォンなどは、USBホストとして動作が可能である可能性が高い。たとえば、Xperia ray には、マイクロUSBのABレセプタクルが使われており、ホストケーブルを使えば、USBホストとして動作するため、キーボードやマウスを接続できる。

写真02: Xperia rayのUSBコネクタ。これは、マイクロUSBのAB型と呼ばれるレセプタクル(コネクタ)で、A型またはB型プラグのどちらもさすことができる。B型をさすとOTG対応機器はデバイスとして動作し、A型のホストケーブルをさすとホストとして動作する

次のポイントであるホストケーブルだが、OTGでは、このケーブルの配線で、USBホストとUSBデバイス機能を切り替えている。つまり、通常のUSBケーブルが接続されれば、アンドロイド機はUSBデバイスとして動作し、ホストケーブルが接続されれば、USBホストとして動作するのである。なお、アンドロイド側がAB型レセプタクルであれば、汎用の「ホストケーブル」が利用できる可能性が高い。ホストケーブルの配線は規格で決まっているため、サードパーティが製造可能なのである。

一般にホストケーブルは、機器側がプラグ(オス)、もう一方がレセプタクル(メス)になっているが、単なる、オスメス変換コネクタでは、ホストケーブルになることはできない。一方がマイクロBプラグで、反対側が通常のAレセプタクルといったケーブルも世の中には存在しているが、これは、通常AプラグをマイクロBプラグに変換するものなので、これでホスト機能を使うことはできない。

デバイスドライバはあるか?

最後の問題として、接続されるUSBデバイスに対応するデバイスドライバソフトウェアがアンドロイド機に組み込まれている必要がある。アンドロイドの場合、あとからデバイスドライバを組み込むことは原則できない。

USBホスト機能がアンドロイドとして正式にサポートされたのは、Anroid 3.1から。当時は、タブレット向けのHonycombとスマートフォン向けのGingerbreadが並行して開発されていたため、あとからAnroid 2.3.4でも対応が行われた。OTGがあって、Anroid 3.1以上であれば、USBマウス、キーボードなどが使える可能性が高い。ただし、どのデバイスドライバが入っているのかは、メーカー次第である。マウスやキーボードに対応したHIDドライバは入っている機器が多いが、USBメモリに対応したマスストレージデバイスのドライバが入っているかどうかはメーカーによって違う。たとえば、前述のXperia(Android 2.3.4)の場合、マスストレージデバイスのドライバは組み込まれていない。

おそらくタブレットで、Android 3.0のままというハードウェアは少ないはずなので、可能性としては多くのタブレットで利用できるはずだが、前述のようにメーカーによっては、ハードウェアがOTGに対応していないことがある。筆者の手元にあるものでは、Acerのタブレット「ICONIA TAB A200」が対応していなかった。

USBホストが利用できると、スマートフォンでも本格的なキーボードなどが利用できる。さらにHDMI出力などがあれば、テレビに画面を表示させることも可能。ちょっとした作業ぐらいならこなせるようになる。また、Android 4.1では、USBオーディオがサポートされたようだ。PCなどに比べるとまだ限定された使い方しかできないが、アンドロイドもバージョンを追うごとに機能は充実してきているようだ。ベースはLinuxでもあり、潜在的には利用できるデバイスも少ないわけでもない。現状、ドライバを簡単にインストールできる環境にないが、バージョンが進むと共に接続できるデバイスも増えていくだろう。