ラズパイのUSBモデムを常に接続させておくようにしてみた。

phone-booth-758751_1280

以前、0SIMを仕込んだL-02CをUSBモデムとしてラズパイで使ってみた件について報告しました。

過去記事:Raspberry Pi 2で0SIMをL-02Cで使ってみた。

今回はこのUSBモデムを常に起動させておくようにしてみました。なにせなぜか不安定で、しょっちゅうこのモデムは落ちてしまうからです。

USBポートからデバイスをソフトウェア的にスイッチする方法も試したのですが、このモデムには効果なしだったので、物理的にUSBポートの電源をON/OFFするすべを見つけました。これならさすがに効果はあります。

シェルスクリプトは以下のような単純なものです。

ここで呼び出しているhub-ctrlというプログラムがミソです。

以下からソースコードをダウンロードしてmake installします。

https://github.com/codazoda/hub-ctrl.c

このプログラムによってUSBポートへの給電を止めたり戻したりできます。

できあがったバイナリと同じ階層に上記のシェルスクリプトを置いて走らせます。無限ループですので常駐のデーモン的な使い方を想定しています。

シェルスクリプトがやっていることは単純で、定期的(10秒おき)にwvdialプロセスの死活をチェックして、死んでいたらhub-ctrlでUSBポートの電源を1秒間だけ停止して復電させ、再度wvdialプロセスを立ち上げています。なお、このスクリプトでは全てのUSBポートの電源を落とすようにしているので、HDDなどを接続している場合はそのままでは使えません。hub-ctrlコマンドの-hと-Pオプションの引数を変えてやると、特定のUSBポートだけ制御することができるようです。その辺はググってみて下さい。

11行目の終わりでsleep 10としているのは10秒くらい待たないとUSBモデムの再起動が間に合わないからです。

これでラズパイをIoT的な使い方で応用できますね。0SIMなので月間500MB未満の通信なら、通信費はかかりませんので。

これを何に使うかは現在検討中です。

今日のところはこの辺で。☕️

スポンサーリンク
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です