at_ito
2016年5月8日 15時32分
現状(2016/5/9時点)のArmadillo-IoT(G2)の3Gモジュール(HL8548)ファームウェアにはバグがあり、umts0のifup/ifdownを繰り返すと269回目で切断状態から復帰できなくなる現象が確認されています。
そのため、3G回線が切断された場合に自動的に再接続するスクリプトを作成しましたので、ご参考にしてください。
3G回線再接続用のシェルスクリプトは以下の通りです。
#!/bin/sh usage() { echo >&2 "usage: $0 [-c ping_count] [-i reconnection_interval(second)] ping_destination" exit 1 } reset() { logger -s -t 3g-checker 'reset' echo 1 > /sys/class/gpio/RESET_N_3G/value while [ -e /dev/ttyATCMD ] do sleep 1 done usleep 40000 echo 0 > /sys/class/gpio/RESET_N_3G/value while [ ! -e /dev/ttyATCMD ] do sleep 1 done sleep 30 } ping_count=5 recon_int=600 while getopts c:i: OPT do case $OPT in 'c') ping_count=$OPTARG shift 2 ;; 'i') recon_int=$OPTARG shift 2 ;; esac done [ $# -eq 1 ] || usage ping_dest=$1 while : do if ! 3g-phone-num > /dev/null 2>&1 then logger -s -t 3g-checker 'SIM card not detected' sleep ${recon_int} continue fi ping -c ${ping_count} ${ping_dest} if [ $? -ne 0 ] then logger -s -t 3g-checker 'disconnected' reset ifdown umts0 # 3g-set-ap [apn] [user] [password] [auth_type] [pdp_type] ifup umts0 else logger -s -t 3g-checker 'connected' sleep ${recon_int} fi done
上記スクリプトをArmadillo-IoT(G2)上で起動させてください。