azkの日記: ubuntu 8.10 で docomo L-02A を使う (その2) 2
さきの続き。
ここに至って、(あえて)usb_modeswitchを使わないという選択を考えます。恐ろしくダサいやり方ですが。
他のデバイスはわかりませんが、 docomo L-02Aの場合は
USBで繋ぐと LGE社製 SCSI CD-ROM /dev/sr* (/dev/scd*) として認識され、
オートマウントさんにて /media/cdrom*にマウントされます。
ここで eject /dev/sr0 とかすると、シリアルデバイス /dev/ttyUSB* として再認識されるようです。
(ちゃんとモジュールが読めてる場合)
この流れをudev に処理させたいと思います。
udevinfo -a -p /sys/block/sr0 とかの結果を読んで、
/etc/udev/rules.d/00-foma_l-02a.conf みたいな適当なudevのルールを作ります。
# for FOMA L-02A
# for USB Storage (Zero Installation)
SUBSYSTEM=="scsi", KERNEL=="sr[0-9]*", ATTRS{vendor}=="LGE*", ATTRS{model}=="CD-ROM*",ATTRS{rev}=="1.00", RUN+="/usr/bin/eject $kernel"
# use usb_modeswich (comment out!)
# SUBSYSTEM=="usb", ATTR{idVendor}=="1004", ATTR{idProduct}=="610c", RUN+="/usr/local/sbin/usb_modeswitch -Q -c /usr/local/etc/usb_modeswich.conf"
# for USB Modem (ttyUSB)
SUBSYSTEM=="usb", ATTR{idVendor}=="1004", ATTR{idProduct}=="6109", RUN=+"/sbin/modprobe usbserial vendor=0x$ATTR{idVendor} product=0x$ATTR{idProduct}"
上は、"vendor: LGE" "model: CD-ROM" の scsi cd-rom が見えたら、そいつのカーネルデバイス名で eject するというもの。
(ただし、同じ名前で見える"本物のLGEのCD-ROM"を繋いだ場合も即ejectされるという諸刃の剣、というかヒドいな。)
真ん中は usb_modeswitch用なのでコメントアウト(いまは不要)。
下は、1004:6109のデバイスが見えたら、'modprobe usbserial vendor=0x1004 product=0x6109'を実行。
ちなみに ubuntu の /etc/udev/rules.d/ 以下は、保存したら自動的に反映されます。
先のmodprobe.dのblacklist とあわせて、とりあえず
「デバイス挿入>CD-ROMマウント>CD-ROMイジェクト(アンマウント)>ttyUSB*認識」
まで自動的に処理してくれました。あとはpppconfigとかで適当に。
ホントはもっとカッコイイやり方があるんでしょうね。勉強が足りない子の悲しさです。
※追記:気休めですが、udevのルールにリビジョン番号を増やしてみました。
※udevが使えるLinux共通で、特にubuntuに限定する話ではありませんね。
(ubuntu 9.04 で docomo L-02A を使うで、ちょっとだけ現行化と整理を図りました)
ZTE端末みたいに (スコア:1)
ATコマンドで無効にできないのかなぁ・・・>ゼロインストール
---にょろ~ん
Re:ZTE端末みたいに (スコア:1)
ありがとうございます。
picocom使って 'AT+ZCDRUN=8' とかやってみましたが、'ERROR'と言われてしまいました。。。
モデムがどんなATコマンドをサポートしてるのか、解析する技ってあるんでしょうかね?