fix the 3g interface configuration
[openwrt/svn-archive/archive.git] / package / comgt / files / 3g.sh
index 500269ce3d2c54b8d53c4cf54536ccccd4cc9f65..0fb24ead20128588494d07a8a96374f3e7f51294 100644 (file)
@@ -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 \