emobile D11LC @ Debian sid
大晦日にアキバのソフマップで東芝 NB100 を IYH してしまった。
- 出版社/メーカー: 東芝
- 発売日: 2008/10/30
- メディア: Personal Computers
- クリック: 5回
- この商品を含むブログ (6件) を見る
一度 Windows か Mac で使う
なんか初回処理でもあるんだろうか。ショップで動作確認を口実にしてもいいから、とにかく最初に一度、純正ドライバを使って接続する必要があるみたい。でないと以下の USB_ModeSwitch が何回やっても成功しなかった。
USB_ModeSwitch
D11LC をドライバ未インストールのマシンにつなぐと、最初 USB マスストレージとして認識され、ドライバの入ったドライブが見えるようになっている。ここでインストールを終えてから再びデバイスを挿すと、今度はドライバがマジックコマンドを送ることで、USB マスストレージではなく USB モデムとして使えるようになる。
Linux で USB モデムを使うのは普通にできるので、このモード切替さえ実装できれば D11LC その他「ゼロインストール」をうたうデータカードを Linux から使うことができるようになる。
で、そのツールが USB_ModeSwitch. ここの Download セクションから tar.bz2 を落としてきて展開してコンパイル(compile.sh; libusb-dev が必要)し、パスの通るところに置いておく。実行に root が要るので /usr/local/sbin/ とかに置く。
次に同じところにある usb_modeswitch.conf をダウンロードして /etc/ に置く。このファイルを開いて、
######################################################## # Alcatel OT-X020 (aka MBD-100HU, aka Nuton 3.5G), works with Emobile D11LC # # Contributor: Aleksandar Samardzic DefaultVendor= 0x1c9e DefaultProduct= 0x1001 TargetVendor= 0x1c9e TargetProduct= 0x6061 MessageEndpoint=0x05 MessageContent="55534243123456780000000000000606f50402527000000000000000000000"
ここのセクションだけ行頭の ; をはずして保存する。
つぎに /usr/local/sbin に d11lc.sh などという名前で以下のシェルスクリプトを置く。
#!/bin/sh # パスは自分が usb_modeswitch を置いたところに変える。 /usr/local/sbin/usb_modeswitch # マシンによってはもっと長く待たないとダメかも。 sleep 1 # usb_modeswitch.conf の TargetVendor, TargetProduct と一致させる /sbin/modprobe usbserial vendor=0x1c9e product=0x6061
ここで D11LC を挿してみる。自動マウント関係のサービスが動いていると、ドライバの入ったマウントポイントが見えるようになるはずである。自動マウントをしていないのなら、dmesg とかで /dev/sd* が増えたと言っているので見ておく。
さっきの d11lc.sh を root で実行する。ストレージが消えて /dev/ttyUSB[0-2] が現れる。lsusb してみれば 1c9e:6061 というデバイスが現れているはずである。
ここまでが動作確認。シェルスクリプトは最終的には使わない。
udev ルール
以下の内容のテキストファイルを /etc/udev/rules.d/ に作成する。ファイル名はあとで決める。
# USB ストレージとして認識されたときのアクション SUBSYSTEM=="usb", ATTR{idVendor}=="1c9e", ATTR{idProduct}=="1001", RUN+="/usr/local/sbin/usb_modeswitch -Q" # usb_modeswitch で、USB モデムとして認識されたときのアクション SUBSYSTEM=="usb", ATTR{idVendor}=="1c9e", ATTR{idProduct}=="6061", RUN+="/sbin/modprobe usbserial vendor=0x$attr{idVendor} product=0x$attr{idProduct}"
2 行目の ATTR{idVendor/idProduct} の値は、/etc/usb_modeswitch.conf の DefaultVendor/DefaultProduct と一致させる。
4 行目の ATTR{idVendor/idProduct} の値は、TargetVendor/TargetProduct と一致させる。modprobe のパラメータにある $attr{...} はこのままでいい。
最初に D11LC が USB に挿されたときは、1c9e:1001 と認識されるので 2 行目のルールが発動し、USB_ModeSwitch が実行される。これで USB ストレージははずれる。
D11LC が USB モデムとして認識されると、1c9e:6061 と認識されるので 4 行目のルールが発動し、usbserial ドライバが正しい vendor/product の値で modprobe される。
このルールのファイル名は、000_d11lc.rules などと若い連番を付けておくことで、ほかの USB ストレージに反応するルールよりも先に来るようにする。
udev を /etc/init.d/udev reload などでリロードさせ、D11LC を抜き差ししてみる。少し経つと /dev/ttyUSB[0-2] ができているはずである。
これで前項のシェルスクリプトは不要となった。手でウェイトを入れなくても、デバイスが認識されたタイミングで udev がコマンドを実行してくれる。
PPP の設定
ppp と pppconfig パッケージをインストールする。
pppconfig を root で起動し、Create を選んで、以下の値を入力。これらは順番に答えるだけ。
Provider Name | em |
Nameservers | Dynamic |
Authentication method | PAP |
Username | em |
Password | em |
Speed | 460800 |
Pulse or Tone | Tone |
Phone Number | *99***1# |
Modem Config Method | Auto |
Select Modem Port | Manual, /dev/ttyUSB0 |
設定がすんだら Finished - Quit と選んで終了。
あとは root で pon em とすれば接続開始、poff で切断。
ほかの「ゼロインストール」データカードで試すときのヒント
D11LC でしか試してませんけど。
- データカードを挿す前後で lsusb の出力を比較して、idVendor/idProduct を調べる
- /etc/usb_modeswitch.conf の DefaultVendor/DefaultProduct に対応するものがないか探す
- あれば、そのセクションのコメントをはずして、そのセクションの値で上記手順を適用する
- 機種によっては option ドライバや cdc-acm ドライバを使うものがあるかもしれない。udev ルールの modprobe へのパラメータを調整する。option ドライバが当たれば modprobe はいらないらしい。
- ドライバが変わるとデバイス名も変わる。/dev/ttyACM0 とか。
- あとは USB_ModeSwitch のページを読む。