From f043f99dc044ed8c36577faed7f3b2d3f15548e9 Mon Sep 17 00:00:00 2001
From: nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Wed, 9 Apr 2008 15:35:34 +0000
Subject: [PATCH] fix the 3g interface configuration

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>


git-svn-id: svn://svn.openwrt.org/openwrt/trunk@10774 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 package/comgt/files/3g.sh | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/package/comgt/files/3g.sh b/package/comgt/files/3g.sh
index 500269ce3..0fb24ead2 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 \
-- 
2.20.1