Android tablet でシリアル通信

 Roomba の制御に用いられている ROI (Roomba Open Interface) はシリアル通信でコマンドを受け取って制御を行う。USB からシリアル通信を行うためには一般的には USB-Serial デバイスを用いて行う。Android は Ver3.0 から USB のホスト機能が使えるようになったが、Ver.3 以降は記念碑的なリリースでタブレットは全て基本的には Ver.3 以降になるため、理論的には全てのタブレットでホスト機能を使えることになる!?
 ただ、ホストが使えるからといって先に述べた、USB-Serial が使えるとは限らない。各タブレットに使われている SoC (Sysem on Chip)の BSP (Board Support Package)によって使える機能がほとんど決まってしまうのだ。各タブレットのベンダーはこの BSP を元にタブレットを作り込む。もちろん、BSP に機能を付加してリリースするメーカもあるが、TTM (Time To Market) が優先される場合は作り込む時間のトレードオフで市場投入の短時間化が優先される。この場合は新たな機能は期待出来ない。
 さて、話をホスト機能に戻そう。現在、USB-Serial としてAndroid (Linux) にサポートされているのは次のとおりだ。

  • CDC-ACM
     Linux のカーネルドライバにインプリされている場合が多く見受けられる。カーネルドライバの場合は root 権限が必要になるが、制御に Android タブレット利用しようと考えているヒトにはあまり障害にはならないだろう。一方で、root化しなくても使えるソリューション FTDriver が有志の間で開発されている。

  • FTDI
     FTDI は USB-Serial での知名度は高く、USB-Serial のケーブルの入手性も高いので広く使われている。現在、FTDI を Android で利用するためには2つのソリューションがある。

    • FTDI 純正ドライバ
       USB-Serial chip を供給している FTDI が公開しているドライバ.

    • FTDriver
       先の CDC-ACM のドライバと同じ方が開発されているドライバ。Web-Master の調査では PIC で実現された CDC-ACM でも動作した。
  • Proflific
     現在、調査中