Raspberry Pi Zero WHに4Gモジュールを接続する3

前回記事

前回ラズパイと4GモジュールのPPP接続まで説明しました。今回は、実用面での課題を述べます。

① USBラインの瞬断

USBケーブルするタイプの4Gモジュールの場合、コネクタのぐらつきで瞬断する場合があります(もしくは想定されます)。IoT機器内に設置する場合、ケーブルの取り回しでストレスがかかることも。マイクロusbならなおさらです。

いろいろと試したところ、一度接続異常が発生すると、ラズバイがハングする場合があるようです。USB接続がぐらつかないよう物理的に対策をしておくことをおススメします。例としましては、

  • USBケーブルをケース等に固定する。
  • 取回しスペースが狭い場合、L字のUSBケーブルを使用する。
  • 可能な場合、ラズパイのserialポートで、4Gモジュールと接続する。

② USBラインのノイズ

USBはノイズに弱いので、規定以上発生すると、PPPが断線します。ノイズの出やすいIoT機器の場合、どこに設置されるか想定できない機器の場合、配慮が必要です。実際に弊方でも本番装置に搭載後、予期無くPPP断線しました。以下そのsyslogの内容です。

Mar  2 10:33:20 raspi kernel: [ 1435.722327] usb usb1-port1: disabled by hub (EMI?), re-enabling...
Mar  2 10:33:20 raspi kernel: [ 1435.722387] usb 1-1: USB disconnect, device number 2

EMI?(電磁障害かも)とラズパイは言いたいようです。この事象が発生すると、OSその他動作は継続するものの、OS再起動しないかぎりPPP接続が復帰しません。対策としては、PPPの接続状況を常時監視し、切断したらOS再起動さるシェルスクリプトを作成し、rcから起動し常駐化せました。以下そのスクリプト例です。

#!//bin/sh 
PPP_ON=0

while [ 1 ]
do
    # Check PPP gen device
    ifconfig ppp0 > /dev/null
    RET_PPP=$? 

    if [ $RET_PPP -eq 0 ];then
        PPP_ON=1
    else
        # Turn PPP on to off
        if [ $PPP_ON -eq 1 ];then
           echo "Catch to turn PPP on to off."
               :
           ( いろいろ後始末 )
               :
           shutdown -r now
        fi
    fi

    sleep 30
done

ifconfigコマンドで、PPP切断を判別してみました。リブート中は応答できなくても許容されるシステムに場合に限ります。

なお、本当のノイズか白黒つけるには、放射電雑試験を行うべきてすが、大きな電機メーカさんでも絡んでないと難しいです。

③ 起動時のチェック

動作環境によって、必ずしも起動時に、PPP接続できるとは限りません。可能なかぎり以下チェックをいれます。カッコ内は、チェックのためのコマンド例です。

  • 4Gモジュールを認識しているか? ( lsusb | grep Qualcomm )
  • WAN接続できているか? ( ifconfig wwan0 > /dev/null )
  • PPP接続できているか? ( ifconfig ppp0 > /dev/null )
  • ルーティングが正常か? ( route | grep ppp0 )
  • ドメインにパケットが届くか? ( ping 対象ドメイン -c 3 )

起動後、すぐにPPP接続はできないので、数秒置きに数分繰り返し、PPP接続できない場合はOSリブートするしかないですね。上位の管理機器があれば、そちらに知らせて処置するが妥当でありましょう。

コメントを残す

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