Raspberry PiにAK-020を3Gモデムとして自動で認識させる


この記事について

ソラコムのスターターキットに含まれるAK-020はRaspberry Piに挿しただけではCDドライブとして認識されます。USB_ModeSwitchを使用して自動で3Gモデムとして認識させる設定を記載しています。

3Gモデムとして認識させたあとに実際にネットワークに接続する設定については記載していません。

使用した環境

Raspberry Pi

  • Raspberry Pi 2 Model B (V1.1)
  • Raspbian Jessie Lite (Release date: 2016-05-27)

主なパッケージ

  • udev (215-17+deb8u4)
  • usb-modeswitch (2.2.0+repack0-2)

USB_ModeSwitchの設定

USB_ModeSwitchをインストールします(前述の環境であればデフォルトでインストールされています)。

$ sudo apt-get install usb-modeswitch

/lib/udev/rules.d/40-usb_modeswitch.rulesの末尾のLABEL="modeswitch_rules_end"の前の行に以下の内容を追加します。

# ABIT AK-020
ATTR{idVendor}=="15eb", ATTR{idProduct}=="a403", RUN+="usb_modeswitch '%b/%k'"

次に/etc/usb_modeswitch.d/15eb:a403というファイルを作成して、以下の内容を記述します。

DefaultVendor = 0x15eb
DefaultProduct = 0xa403
TargetVendor = 0x15eb
TargetProduct = 0x7d0e
StandardEject = 1
WaitBefore=2

再起動後、AK-020を挿して数秒待ってからlsusbコマンドを実行して以下の内容が出力されたら設定が正しく行えています(15eb:7d0eの箇所が15eb:a403がなっている場合、CDドライブとして認識されたままになっています)。

$ lsusb
Bus 001 Device 007: ID 15eb:7d0e
(省略)

補足

USB_ModeSwitchについて

AK-020はゼロインストールという機能を備えています。そのため、Windows、MACであれば最初はCDドライブとして認識され、そのドライブに含まれているソフトウェア・ドライバをインストールすることで、以降は3Gモデムとして認識されるようになります。ただし、Linux向けのドライバは提供されていないため、メーカーの説明書にはejectコマンドを使用してCDドライブとして認識されたAK-020を取り外し、手動で3Gモデムとして認識させる手順が記載されています。

USB_ModeSwitchを使用することでAK-020のようなゼロインストールの機能を持ったUSBデバイスを自動で3Gモデムとして認識させてくれます。USB_ModeSwitchがデフォルトでサポートしているUSBデバイスであれば、設定不要で3Gモデムとして認識されます。最新のバージョンでサポートされているUSBデバイスはここで確認できます。

USB_ModwSwitchの設定について

/lib/udev/rules.d/40-usb_modeswitch.rulesの変更

このファイルの変更はUSB_ModeSwitchがAK-020をデフォルトでサポートしていないことに対する対応です。USB_ModeSwitchがAK-020をサポートした段階で手動で設定を行う必要はなくなります。

/etc/usb_modeswitch.d/に作成するファイル

このファイルの作成はUSB_ModeSwitchがAK-020をデフォルトでサポートした場合、作成する必要がなくなるかもしれません。ただし、上手く認識されない場合などは、ファイルを作成してデフォルトの設定をオーバーライドする必要があります。

また、StandardEject = 1という記述により、単純なドライブの取り外しを行っているようなのですが、SniffUsbなどのWindowsのソフトを使用して、AK-020特有のデータのやりとりを解析して、そのデータを送信させる設定を含めるほうが良いようです。下記のフォーラムのやりとりから解析の手順などが確認できるようなのですが未調査です。

参考リンク