注意事項
当 FAQ はソラコムで開発していない製品についての参考情報となります。設定についてはお客様の責任でお願いいたします。当 FAQ に関する問い合わせは、当社より AK-020 および SORACOM IoT SIM を購入された場合のみお受けします。
概要
AK-020 は usbserial の usbserial_generic ドライバで動作します。このとき、同時に利用する他の FTDI デバイスなどが usbserial の ftdi_sio ドライバで動く場合、 ftdi_sio のドライバが先にロードされると、usbserial_generic ドライバがロードされず、結果 AK-020 が認識されないといったケースがありました。
まずは、他の USB デバイスが接続していない状態で AK-020 を認識できるか確認してください。認識できない場合、他の USB デバイスに起因していることが考えられますので以下を参考に切り分け・対応を実施ください。
なお、当記事は Raspberry Pi 3B、 Raspbian Jessie にて再現を確認しました。
切り分け
USB シリアルケーブルを Raspberry Pi 側で認識した後、modprobe コマンドで ftdi_sio をカーネルモジュールから外し、その後で AK-020 を挿して AK-020 が認識されるかを確認します。手順詳細は以下となります。
- USB シリアルケーブルを Raspberry Pi 側で認識させる
-
ftdi_sioカーネルモジュールを外す:sudo modprobe -r ftdi_sio -
lsmodコマンドにてftdi_sioが存在しないことを確認する - AK-020 をデバイスに挿して認識されるか確認する
対応策
上記の切り分け方法で AK-020 が正しく認識できた場合、冒頭で記載したドライバの認識順序が起因している可能性があります。
対応策としては、起動時に一旦 ftdi_sio カーネルモジュールを外し、再度 usbserial -> ftdi_sio の順番でロードし直す方法が考えられます。
具体的には Raspberry Pi にて vi 等のエディタで /etc/rc.local を開き、exit 0の手前に下記のような形で追記してください。
-
rc.local追加設定例 (exit 0の前に追記ください。 )sleep 10s sudo modprobe -r ftdi_sio sudo modprobe -r usbserial sudo modprobe usbserial vendor=0x15eb product=0x7d0e sudo modprobe ftdi_sio sudo ifdown wwan0 sudo ifup wwan0
rc.local に追記することで Raspberry Pi 起動時に上記コマンドが実行されます。もし起動時に AK-020 が接続されていなかった場合は、AK-020 を接続した後に手動で sleep 以外の 上記コマンドを実行すれば AK-020 を利用できる可能性があります。