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)上で起動させてください。