LoginSignup
13
17

More than 5 years have passed since last update.

Raspberry Piで、起動後にUSBモデムを自動認識する

Last updated at Posted at 2016-03-11

背景

既に消えかかっている、世のUSBモデムは、遠隔制御のような用途を考えると、Raspberry Piと相性が良い。
ところが、世のUSBモデムは、ゼロインストールのために、最初はCD-ROMに見える仕掛けが入っており、Linuxと相性が悪い。
LinuxでUSBモデムを使うには…。

今回のUSBモデム

たまたま中古品を3980円で手に入れることができた、L-03D。
VID=0x1004, PID=0x6327(CD-ROM時), PID=0x6326(モデム時)。

CD-ROMからモデムへ

usb_modeswitch

ググると、まずこれが出てくる。文字通り、USBのモードを変えてくれる。
今現在、既にデフォルトで、/lib/udev/rules.d/40-usb_modeswitch.rulesに、L-03DのVID/PIDの記載がある。
さらに、/etc/usb_modeswitch.d/1004:6327に内容を記載する必要がありそうだが、検索で出てくる内容を適当にコピペしただけでは、何故か動かない。
usb_modeswitchのバージョンが違うのか、L-03Dのファームウェアのバージョンが違うのか、はたまたググって見つけた情報が古いのか。きっと自分のググり力の問題。

eject

さらにググると、eject /dev/sr0とすれば、CD-ROMからモデムに変化するとある。簡単そうじゃん。
lsusbで確認すると、eject前後で、確かにPIDが0x6327から0x6326に変わる。

モデムからttyへ

ただ、PIDが0x6326に変わっても、/dev/ttyUSB?は現れない。
PIDが変わった後に、modprobe usbserial vendor=0x1004 product=0x6326 と打つと、確かにttyが現れる。

起動時の自動化

でもこれ、手で打っていたら、遠隔制御できない。起動後に自動的にやって欲しい。
usb_modeswitchなら自動的にやってくれそうだけど、なんか動かないし、どうしよう。
そこで、udev。usb_modeswitchの設定を真似しながら…

/etc/udev/rules.d/50-l03d.rules
ATTRS{idVendor}=="1004", ATTRS{idProduct}=="6327", RUN+="/usr/bin/eject /dev/sr0"
ATTRS{idVendor}=="1004", ATTRS{idProduct}=="6326", RUN+="/sbin/modprobe usbserial vendor=0x1004 product=0x6326"

とかしたらうまく行くんじゃ? 再起動して…

$ ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB1  /dev/ttyUSB2  /dev/ttyUSB3

うまく行った。

蛇足

  • PPPで自動的にAPNにつながらないと遠隔操作的には意味がない。RUNでやらせてしまう手もあるが、udevの役割ではない気もする。/etc/rc.localponしたら、つながった。
  • udevでRUNされる時は、/usr/binにはパスが通っているが、/sbinにはパスが通っていなかった気がする。とりあえずudevのrulesにフルパスで記載。
  • OSXやWindowsの専用ドライバでは、Ethernetに見えて、IPv6も使える。Linuxでttyに見せると、pppdの設定に+ipv6を追加しても、リンクローカルが設定されない?(詳細未確認) Ethernetに見えればIPv6が使える気がするので、NDIS化試行中。
  • L-03Dは、USB上は500mAとなっているが、取説的にはmaxで680mA。2AなどのACアダプタと、/boot/config.txtmax_usb_current=1設定による電流リミット解除が必要か。消費電力は、電波状態によると思うが、typicalには300mAくらいか。

ダメ出し

/dev/sr1とかだったら、ダメじゃん。

13
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
17