Raspberry PiでL-03FでdocomoのXiを使ってネットをしてみる

かなり色々と試行したので、無駄な処理が入っている可能性があるのですが、とりあえず、やっとことをまとめてみます。一応、Linuxdocomoのサポート外なので、以下も自己責任でお願いします(主にパケ死などに)。

参考にさせてもらったのは、

Qaplaの覚書・メモ・備忘録・独言 Raspberry Pi をUSBモデムでインターネット接続
OBDNマガジン: [.tested] docomo L-03D [AX3][A6]
ubuntu 9.04 で docomo L-02A を使う | azkの日記 | スラッシュドット・ジャパン
あたりだとおもいます。

まず、他の記事でもたくさんかかれているように、windows/mac上でのゼロインストールのために、CD/DVDとして、/dev/sr0でlinuxが反応してしまうので、とりあえず、usbに認識させるという動作を行います。usb_modeswtichを使うということを試行しましたが、うまく動かなかったので、sudo apt-get install ejectでejectを入れて、3つ目にあげたところでも書かれているように、

pi@raspberrypi ~ $ cat /etc/udev/rules.d/99-foma_l-02a.rules
KERNEL=="sr[0-9]*", ENV{ID_VENDOR_ID}=="1004", ENV{ID_MODEL_ID}=="6367", RUN+="/usr/bin/eject /dev/$kernel"

ACTION=="add" SUBSYSTEM=="usb", ATTR{idVendor}=="1004", ATTR{idProduct}=="6366", RUN+="/sbin/modprobe usbserial vendor=0x$attr{idVendor} product=0x$attr{idProduct}"

こういう感じで設定します。やってることとしては、usbにつながれたときにeject /dev/sr0を行なって(sr0以外も動くようになってますが)、usbserialをロードしています。これで、適当にさしなおしたり、リブートすると、こいつが動きます。すると、/dev/にttyUSB0,1,2が現れますが、たぶんl-03Fが新しいので、linuxがまだこのProdctIDが分からないのだと思う(というか、モデムモードに切り替えが必要なのだと思う)ので、ググると、optionをロードして、new_idにvendorid:productidをechoするみたいなのなどを試してみましたが、うまく動かないので、最終的に、

pi@raspberrypi ~ $ sudo usb_modeswitch -v 0x1004 -p 0x6366 -M "5553424308e02186000000000000061b000000020000000000000000000000"

Looking for default devices ...
   found matching product ID
   adding device
 Found device in default mode, class or configuration (1)
Accessing device 005 on bus 001 ...
Getting the current device configuration ...
 OK, got current device configuration (1)
Using first interface: 0x00
Using endpoints 0x01 (out) and 0x81 (in)
Not a storage device, skipping SCSI inquiry

USB description data (for identification)
-------------------------
Manufacturer: NTT DOCOMO, INC.
     Product: docomo L03F
  Serial No.: not provided
-------------------------
Looking for active driver ...
 OK, driver found ("usbserial_generic")
 OK, driver "usbserial_generic" detached
Setting up communication with interface 0
Using endpoint 0x01 for message sending ...
Trying to send message 1 to endpoint 0x01 ...
 OK, message successfully sent
Resetting response endpoint 0x81
Resetting message endpoint 0x01
-> Run lsusb to note any changes. Bye.

と実行するとなんか知らないけど動きました(minicomで反応が見られるようになりました)。

pi@raspberrypi ~ $ sudo minicom -D /dev/ttyUSB1

Welcome to minicom 2.6.1

OPTIONS: I18n
Compiled on Apr 28 2012, 19:24:31.
Port /dev/ttyUSB1

Press CTRL-A Z for help on special keys

ati
NTT DOCOMO, INC.

OK

おそらく、うまくusb_modeswitchが出来ていれば、それで一発だと思うのですが、色々やりすぎて、Raspberry Piが闇化してしまったのが敗因だと思います。とりあえず、メモがてら書いてみました。