fix the 3g interface configuration
authorFelix Fietkau <nbd@openwrt.org>
Wed, 9 Apr 2008 15:35:34 +0000 (15:35 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Wed, 9 Apr 2008 15:35:34 +0000 (15:35 +0000)
The first problem is the "chat" command which misses "-E", so the
environment variable addressed inside the script is never used and
the script breaks.

The second problem is the that you cannot assume an Option card when
you did "not discover a Novatel".
In my case the script tried to set the mode with the Option
AT-command which failed on the Huawei stick.
Unfortunaltely I don't have a correct command for that device, so I
just want to start the connection without any mode set before thus using
the defaults.

Signed-off-by: Markus Wigge <mwigge@marcant.net>
SVN-Revision: 10774

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 \