Skip to content
Snippets Groups Projects
Commit 738d6102 authored by Felix Fietkau's avatar Felix Fietkau
Browse files

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: default avatar <RB&lt;aoz.syn@gmail.com>

SVN-Revision: 10347
parent 875cd251
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
......@@ -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"
}
# 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 ''
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment