diff options
author | Felix Fietkau <nbd@openwrt.org> | 2008-02-02 01:21:31 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2008-02-02 01:21:31 +0000 |
commit | 2a189e94a6919c7a616bc8b891b16503c8934a32 (patch) | |
tree | 3b4b5c4165299b1b3dc738155590b88c7ded0038 | |
parent | 507ae0f23a7ba8d65af0801f1fd8e1554348e44c (diff) | |
download | upstream-2a189e94a6919c7a616bc8b891b16503c8934a32.tar.gz upstream-2a189e94a6919c7a616bc8b891b16503c8934a32.tar.bz2 upstream-2a189e94a6919c7a616bc8b891b16503c8934a32.zip |
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<aoz.syn@gmail.com>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@10347 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r-- | package/comgt/Makefile | 1 | ||||
-rw-r--r-- | package/comgt/files/3g.sh | 53 | ||||
-rw-r--r-- | package/comgt/files/evdo.chat | 17 |
3 files changed, 47 insertions, 24 deletions
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 '' |