【Ubuntu】携帯電話と戯れる【NTT docomo SH-02C】

Ubuntu は外人が主力開発なので、mobile phone に関してはNTT docomoの携帯電話は接続しても認識してくれない。

応用開発というところがFOMA用のドライバを作っていて、cdc-acm(FOMA対応)を落っことして来て、ゴリゴリやるもソースが古くてコンパイルに通らない。

そこで、linux-source のパッケージをインストールして展開し、その中から、cdc-acm.c と cdc-acm.h を抜きだし、FOMA用のソースとマージしてゴリゴリやったら通った。

SH-02Cを通信モードにし、USBケーブルで接続して、シリアル通信ソフトで、 /dev/ttyACM0 に115200、パリティなし、8ビット、ストップビット1、フローコントロールXon/Xoffで接続してみると…

と、ちゃんと接続できているようではある。
ATDで発呼すると電話掛けるので、pppdで使う上では問題無く使えそうだ。

しかし、ネットワーク設定のモバイルブロードバンド設定で設定しても、

May 5 15:10:09 purplecat modem-manager[845]: (ttyACM0) opening serial port…
May 5 15:10:09 purplecat modem-manager[845]: Modem /org/freedesktop/ModemManager/Modems/2: state changed (disabled -> enabling)
May 5 15:10:09 purplecat modem-manager[845]: Modem /org/freedesktop/ModemManager/Modems/2: state changed (enabling -> disabled)
May 5 15:10:09 purplecat modem-manager[845]: (ttyACM0) closing serial port…
May 5 15:10:09 purplecat modem-manager[845]: (ttyACM0) serial port closed
May 5 15:10:09 purplecat NetworkManager[843]: failed to enable/disable modem: (32) Failed to find a usable modem character set

と、moperaに接続できない。
電話掛けてる感じも無いし、根本的なところでダメな感じがするなあ。

しかたがないので、pppconfig で mopera の設定作って、pon ってやってみたらちゃんと繋がり、Webブラウジングできた。これでLinuxでのモバイル通信はOKじゃ。

一応、まぜまぜしたソースを貼っておこう
cdc-acm.c
cdc-acm.h

これを、応用開発さんのドライバのファイルと置き換え、カーネルヘッダをインストールしてあれば、make で cdc-acm.ko ができるので、それを /lib/modules/uname -r/kernel/drivers/usb/class へコピーすればOK。

参考までにウチの環境は次の通り。
noizumi@purplecat:/etc/ppp$ uname -a
Linux purplecat 2.6.38-8-generic-pae #42-Ubuntu SMP Mon Apr 11 05:17:09 UTC 2011 i686 i686 i386 GNU/Linux

コピーする前に元からあるcdc-acm.koのオリジナルファイルはバックアップを取っておいた方が良いです。