From 738d610209c81288218c31b1edd99e20449550ae Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sat, 2 Feb 2008 01:21:31 +0000 Subject: [PATCH] Add CDMA/EVDO support to comgt package This patch adds a chat script and makes some modifications to /lib/network/3g.sh to enable seamless use of CDMA/EVDO modems in addition to the existing GPRS/UMTS support. Modifications to 3g.sh are: - Added 'chat' variable to point at the appropriate script - Added 'evdo' and 'cdma' as acceptable 'service' values, and skip the whole gcom initialization bit - Changed pppd connection speed from 460800 to more widely supported 115200; in my experience, this is not your actual connection speed, but at what speed pppd sends setup commands to the interface. This kinda eliminates the need for /etc/ppp/3g.connect - I think I've replaced that functionality, but in a slightly more standardized method, using the 'connect' variable understood by PPP. Signed-off-by: RB SVN-Revision: 10347 --- package/comgt/Makefile | 1 + package/comgt/files/3g.sh | 53 +++++++++++++++++++---------------- package/comgt/files/evdo.chat | 17 +++++++++++ 3 files changed, 47 insertions(+), 24 deletions(-) create mode 100644 package/comgt/files/evdo.chat diff --git a/package/comgt/Makefile b/package/comgt/Makefile index 606f2f1bcf..2cbfec5eb7 100644 --- a/package/comgt/Makefile +++ b/package/comgt/Makefile @@ -48,6 +48,7 @@ define Package/comgt/install $(INSTALL_BIN) ./files/3g.connect $(1)/etc/ppp/3g.connect $(INSTALL_DIR) $(1)/etc/chatscripts $(INSTALL_DATA) ./files/3g.chat $(1)/etc/chatscripts/3g.chat + $(INSTALL_DATA) ./files/evdo.chat $(1)/etc/chatscripts/evdo.chat $(INSTALL_DIR) $(1)/lib/network $(INSTALL_DATA) ./files/3g.sh $(1)/lib/network/3g.sh $(INSTALL_DIR) $(1)/etc/hotplug.d/button diff --git a/package/comgt/files/3g.sh b/package/comgt/files/3g.sh index 5274821a1b..2859a1bda7 100644 --- a/package/comgt/files/3g.sh +++ b/package/comgt/files/3g.sh @@ -36,6 +36,7 @@ stop_interface_3g() { setup_interface_3g() { local iface="$1" local config="$2" + local chat="/etc/chatscripts/3g.chat" config_get device "$config" device @@ -51,30 +52,35 @@ setup_interface_3g() { set_3g_led 1 0 1 # figure out hardware specific commands for the card - if gcom -d "$device" -s /etc/gcom/getcardinfo.gcom | grep Novatel 2>/dev/null >/dev/null; then - case "$service" in - umts_only) CODE=2;; - gprs_only) CODE=1;; - *) CODE=0;; - esac - mode="AT\$NWRAT=${CODE},2" - else - case "$service" in - umts_only) CODE=1;; - gprs_only) CODE=0;; - *) CODE=3;; - esac - mode="AT_OPSYS=${CODE}" - fi - - 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 + 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 + case "$service" in + umts_only) CODE=2;; + gprs_only) CODE=1;; + *) CODE=0;; + esac + mode="AT\$NWRAT=${CODE},2" + else + case "$service" in + umts_only) CODE=1;; + gprs_only) CODE=0;; + *) CODE=3;; + esac + mode="AT_OPSYS=${CODE}" + fi + + 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 + esac set_3g_led 1 0 0 + config_set "$config" "connect" "${apn:+USE_APN=$apn }/usr/sbin/chat -t5 -f $chat" start_pppd "$config" \ noaccomp \ nopcomp \ @@ -83,7 +89,6 @@ setup_interface_3g() { noauth \ lock \ crtscts \ - connect "USE_APN=\"$apn\" /etc/ppp/3g.connect" \ ${mtu:+mtu $mtu mru $mtu} \ - 460800 "$device" + 115200 "$device" } diff --git a/package/comgt/files/evdo.chat b/package/comgt/files/evdo.chat new file mode 100644 index 0000000000..de49e41a1b --- /dev/null +++ b/package/comgt/files/evdo.chat @@ -0,0 +1,17 @@ +# This is a simple chat script based off of the one provided by Sierra Wireless +# for CDMA connections. It should work for both Sprint and Verizon networks. + +ABORT BUSY +ABORT 'NO CARRIER' +ABORT ERROR +ABORT 'NO DIAL TONE' +ABORT 'NO ANSWER' +ABORT DELAYED +REPORT CONNECT +TIMEOUT 10 +'' AT +OK ATZ +SAY 'Calling CDMA/EVDO' +TIMEOUT 30 +OK ATDT#777 +CONNECT ''