diff --git a/package/comgt/files/3g.sh b/package/comgt/files/3g.sh index 500269ce3d..0fb24ead20 100644 --- a/package/comgt/files/3g.sh +++ b/package/comgt/files/3g.sh @@ -55,14 +55,15 @@ setup_interface_3g() { case "$service" in cdma|evdo) chat="/etc/chatscripts/evdo.chat";; *) - if gcom -d "$device" -s /etc/gcom/getcardinfo.gcom | grep Novatel 2>/dev/null >/dev/null; then + cardinfo=$(gcom -d "$device" -s /etc/gcom/getcardinfo.gcom) + if echo "$cardinfo" | grep Novatel; then case "$service" in umts_only) CODE=2;; gprs_only) CODE=1;; *) CODE=0;; esac mode="AT\$NWRAT=${CODE},2" - else + elif echo "$cardinfo" | grep Option; then case "$service" in umts_only) CODE=1;; gprs_only) CODE=0;; @@ -70,17 +71,20 @@ setup_interface_3g() { esac mode="AT_OPSYS=${CODE}" fi + # Don't assume Option to be default as it breaks with Huawei Cards/Sticks PINCODE="$pincode" gcom -d "$device" -s /etc/gcom/setpin.gcom || { echo "$cfg(3g): Failed to set the PIN code." set_3g_led 0 0 0 return 1 } - MODE="$mode" gcom -d "$device" -s /etc/gcom/setmode.gcom + test -z "$mode" || { + MODE="$mode" gcom -d "$device" -s /etc/gcom/setmode.gcom + } esac set_3g_led 1 0 0 - config_set "$config" "connect" "${apn:+USE_APN=$apn }/usr/sbin/chat -t5 -f $chat" + config_set "$config" "connect" "${apn:+USE_APN=$apn }/usr/sbin/chat -t5 -v -E -f $chat" start_pppd "$config" \ noaccomp \ nopcomp \