Catsin さんが Linux PDA のザウルス用のドライバを開発され、カーネル 2.4 の Linux PC でも動いているようですが、2.6 では動かないため、新たに 2.6 の drivers/usb/class/cdc-acm.c を改造しました。 DoCoMo の FOMA USB の仕様書に従い端末接続時にモデムモードに切り替えただけで、きれいに書いていません。
ご意見やご質問は芳名帳からお願いします。
OS:
OS の版 | ソース | 差分 | バイナリ |
---|---|---|---|
Kernel 2.6.27, Fedora Core 10 | acm-foma.c-2.6.27 | acm-foma.patch-2.6.27 | (*1) |
Kernel 2.6.18, Fedora Core 6 | acm-foma.c-2.6.18 | acm-foma.patch-2.6.18 | acm-foma.ko-2.6.18 |
Kernel 2.6.9, Fedora Core 3 | acm-foma.c-2.6.9 | acm-foma.patch-2.6.9 | acm-foma.ko-2.6.9 |
これら以外の版では差分を参考に cdc-acm.c の修正をお願いします。
(*1) この版では、bInterfaceClass によって全機種を1つのソースコードで動かせませんでした。 acm-foma.c 中の Motorola FOMA M702iG の行にある idVendor, idProduct を lsusb コマンドで調べるなどして自分の端末用に書き換え、再コンパイルする必要があります。
FOMA 端末:
(*2) N, P の端末は一度閉じると次に開けず、ケーブルをさし直すと開けます。
SH901iS, SH700iS では正常に動作していません。 AT コマンドには応答しますが、PPP 接続しようとすると LCP: timeout sending Config-Requests となります。同じシャープ製の新しい機種では動作しています。
L705iX (LG 製) と kernel 2.6.9 の組み合わせでは、ttyACM? ができた直後に usb 2-1: string descriptor 0 read error: -110 のように落ちます。
L601i (Simpure L1、LG 製) は bInterfaceSubClass = 2 (modem) とのことで、 このドライバでなく標準の cdc-acm.ko で動作しそうです。 ATDT*9601 が NO CARRIERを返す所まで確認しました。 L601i がIP接続のパケット通信のみに対応とのことで未評価です。
rpm -U kernel-2.6.27.5-117.fc10.src.rpm
cd ~/rpmbuild/SPECS
rpmbuild -bp --target `uname -m` kernel.spec
cd ~/rpmbuild/BUILD/kernel-2.6.27/linux-2.6.27.i686
make oldconfig && make prepare
cd scripts/mod
ln -s /usr/src/kernels/2.6.27.5-117.fc10.i686/scripts/mod/modpost .
以上の準備ができたら、acm-foma.c を drivers/usb/class/ に置き、必要に応じて書き換えます。
drivers/usb/class/Makefile の obj-$(CONFIG_USB_ACM) += cdc-acm.o の後に acm-foma.o を加えます。
~/rpmbuild/BUILD/kernel-2.6.27/linux-2.6.27.i686 に戻って make M=drivers/usb/class/ modules すると acm-foma.ko ができます。
USB ケーブルで FOMA 端末をつなぐと、うまくいけば /var/log/messages に /dev/ttyACM0 ができたことが示されます。Ignoring extra header など警告が出ますが無視します:-) minicom, cu, kermit などお好みの端末プログラムで AT と送って OK が返るか確認します。
必須ではありませんが、つないだ時に /dev/modem を作ってもらうためには /etc/udev/rules.d/91-foma.rules を作り、1行 KERNEL=="ttyACM0", SYMLINK+="modem" と書きます。
ネットにつなぐため適当に PPP を設定します。手続きなしで使える mopera の電話番号が、64k 回線交換で *9601、384k パケット交換で *99# です。ユーザ名とパスワードは任意です。
使用、再配布、改造などは GPL に準じます。