SC-05DのmicroUSB端子はUSBホストに対応しているようなので、試しにホストケーブルを使って秋月のUSBシリアルケーブルを接続してみるも/lib/modulesにモジュールがなく認識できない模様。昔Linux Zaurusでやった方法でモジュールを追加してみるテスト。

 前提条件としてSC-05Dをroot化しておく。Terminal IDEbusyboxを入れて一連のコマンドが使えるようにしておく。

 開発環境はVMWARE上のVine Linuxに構築することにした。カーネルソースはここからサーチボックスに「SC-05D」と入力すると出てくる。更にAndroid2.3.4用SDKここから、NDKをここから取得。最新のものはうまく動かないという情報があったので、R5Cを使った。

 これらをホームの下にandoroidディレクトリを作ってその下にすべて展開。

mkdir ~/android
cd android
tar zxvf android-sdk_xxx-linux.tgz
tar xvf android-ndk-xxx-linux-x86.tar.bz2
unzip SC-05D_GB_Opensource.zip
tar zxvf SC-05D_Kernel.tar.gz

更にSC-05D上で/proc/config.gzを/dataなどにコピーして、パソコンとUSB接続して吸い出す。

gunzip config.gz

として解凍したconfigを.configにリネームしてからandroid/にコピー。

mv config .config
cp .config ~/android/

ここで

make menuconfig

とするとGUIで.configを編集することができるので「Device Drivers」→「USB Support」→「USB Serial converter support」を選んでMを押し、Exitで戻っていって最後はセーブして終了する。ただしこのままでは足りないので viなどで.configを開き、「# CONFIG_USB_SERIAL_PL2303 is not set」の下に「CONFIG_USB_SERIAL_PL2303=m」を追加して保存する。
 あとはNDKのバイナリにパスを通してコンパイルする。

export ARCH=arm
export CROSS_COMPILE=arm-eabi-
export PATH=$PATH:~/android/android-ndk-xxx/toolchains/arm-eabi-4.4.0/prebuilt/linux-x86/bin/
make modules

でモジュールのコンパイルが行われてdrivers/usb/serial/以下にpl2303.koとusbserial.koが作られているので、これをSC-05Dの/lib/modulesに置けばいいのだが、readonly filesystemエラーで書き込めない。/lib/modulesは実際には/system以下にあるので/systemをrwでremountしてもダメだった。(以下6/7追記)一旦、/sdcardにコピーしておいて、

su -
mount -o rw,remount /system /system
cp /sdcard/*.ko /system/lib/modules/

でとりあえず置けた。/lib/modulesと/system/lib/modulesは別物らしい。
 ここで試しにinsmod usbserial.koなどとしてみるが、formatエラーで蹴られた。dmesgによればバージョンに「-SC05DOMLCE-CL10xxxxx(7桁の数字)」が必要らしい。応急処置として.configのCONFIG_LOCALVERSIONにそれを書き足して再度make、/system/lib/modules/にコピーした上で必要なモジュールをinsmodしてロードしておきUSBシリアルケーブルを接続。dmesgをみると「pl2303 converter now attached to ttyUSB0」と吐き出していて、実際に「cat /dev/ttyUSB0」などとしてもエラーが出ないことからうまくモジュールが刺さった模様。通信チェックはまだ。