Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

背景

既に消えかかっている、世の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とかだったら、ダメじゃん。

air-gh
ニッチです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした