summaryrefslogtreecommitdiffstats
path: root/package/comgt/files
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2006-11-04 00:21:54 +0000
committerFelix Fietkau <nbd@openwrt.org>2006-11-04 00:21:54 +0000
commit8cc785bdf6493ae87bc9f9cf67f35a6dea36af49 (patch)
tree26515de27827ae060e939356ea2af47f43465ff0 /package/comgt/files
parentab80113a68fe01e6a7c53b6465e44c8523589119 (diff)
downloadopenwrt-8cc785bdf6493ae87bc9f9cf67f35a6dea36af49.tar.gz
openwrt-8cc785bdf6493ae87bc9f9cf67f35a6dea36af49.tar.bz2
openwrt-8cc785bdf6493ae87bc9f9cf67f35a6dea36af49.zip
move comgt to trunk and add network scripts for umts compatible with the wrt54g3g
SVN-Revision: 5433
Diffstat (limited to 'package/comgt/files')
-rw-r--r--package/comgt/files/3g.button35
-rw-r--r--package/comgt/files/3g.chat12
-rw-r--r--package/comgt/files/3g.connect4
-rw-r--r--package/comgt/files/3g.iface10
-rw-r--r--package/comgt/files/3g.sh89
-rw-r--r--package/comgt/files/getcardinfo.gcom14
-rw-r--r--package/comgt/files/getstrength.gcom14
-rw-r--r--package/comgt/files/setmode.gcom26
-rw-r--r--package/comgt/files/setpin.gcom55
9 files changed, 259 insertions, 0 deletions
diff --git a/package/comgt/files/3g.button b/package/comgt/files/3g.button
new file mode 100644
index 0000000000..54997d870a
--- /dev/null
+++ b/package/comgt/files/3g.button
@@ -0,0 +1,35 @@
+button_action() {(
+ # use led for keeping track of the state
+ case "$(cat /proc/diag/led/3g_green)" in
+ 1)
+ ifdown "$1"
+ ifup wan
+ ;;
+ 0)
+ ifdown wan
+ ifup "$1"
+ ;;
+ esac
+)}
+
+[ "$ACTION" = "released" -a "$BUTTON" = "3g" ] && {
+ (echo /bin/true > /proc/sys/kernel/hotplug)
+
+ include /lib/network
+ scan_interfaces
+ config_cb() {
+ config_get TYPE "$CONFIG_SECTION" TYPE
+ case "$TYPE" in
+ interface)
+ config_get proto "$CONFIG_SECTION" proto
+ config_get button "$CONFIG_SECTION" button
+ case "$button" in
+ 1|on|enabled) [ "$proto" = "3g" ] && button_action "$CONFIG_SECTION";;
+ esac
+ ;;
+ esac
+ }
+ config_load network
+
+ (echo /sbin/hotplug > /proc/sys/kernel/hotplug)
+} &
diff --git a/package/comgt/files/3g.chat b/package/comgt/files/3g.chat
new file mode 100644
index 0000000000..a1fa2a02d6
--- /dev/null
+++ b/package/comgt/files/3g.chat
@@ -0,0 +1,12 @@
+ABORT BUSY
+ABORT 'NO CARRIER'
+ABORT ERROR
+REPORT CONNECT
+TIMEOUT 10
+"" "AT&F"
+OK "ATE1"
+OK 'AT+CGDCONT=1,"IP","$USE_APN"'
+SAY "Calling UMTS/GPRS"
+TIMEOUT 30
+OK "ATD*99***1#"
+CONNECT ' '
diff --git a/package/comgt/files/3g.connect b/package/comgt/files/3g.connect
new file mode 100644
index 0000000000..04f45f9de6
--- /dev/null
+++ b/package/comgt/files/3g.connect
@@ -0,0 +1,4 @@
+#!/bin/sh
+. /lib/network/3g.sh
+set_3g_led 1 1 1
+/usr/sbin/chat -V -E -f /etc/chatscripts/3g.chat
diff --git a/package/comgt/files/3g.iface b/package/comgt/files/3g.iface
new file mode 100644
index 0000000000..a8476ca8df
--- /dev/null
+++ b/package/comgt/files/3g.iface
@@ -0,0 +1,10 @@
+include /lib/network
+config_load network
+scan_interfaces
+config_get proto "$INTERFACE" proto
+[ "$proto" = "3g" ] && {
+ case "$ACTION" in
+ ifup) set_3g_led 1 1 0;;
+ ifdown) set_3g_led 0 0 0;;
+ esac
+}
diff --git a/package/comgt/files/3g.sh b/package/comgt/files/3g.sh
new file mode 100644
index 0000000000..125bec3d69
--- /dev/null
+++ b/package/comgt/files/3g.sh
@@ -0,0 +1,89 @@
+set_3g_led() {
+ grep WRT54G3G /proc/diag/model >/dev/null || return 0
+ echo "$1" > /proc/diag/led/3g_green
+ echo "$2" > /proc/diag/led/3g_blue
+ echo "$3" > /proc/diag/led/3g_blink
+}
+
+scan_3g() {
+ local device
+
+ scan_ppp "$@"
+ config_get device "$1" device
+
+ # try to figure out the device if it's invalid
+ [ -n "$device" -a -e "$device" ] || {
+ for device in /dev/tts/2 /dev/usb/tts/0 /dev/noz0; do
+ [ -e "$device" ] && {
+ config_set "$1" device "$device"
+ break
+ }
+ done
+ }
+
+ # enable 3G with the 3G button by default
+ config_get button "$1" button
+ [ -z "$button" ] && {
+ config_set "$1" button 1
+ }
+}
+
+stop_interface_3g() {
+ set_3g_led 0 0 0
+ killall gcom >/dev/null 2>/dev/null
+}
+
+setup_interface_3g() {
+ local iface="$1"
+ local config="$2"
+
+ config_get device "$config" device
+
+ for module in slhc ppp_generic ppp_async; do
+ /sbin/insmod $module 2>&- >&-
+ done
+
+ config_get apn "$cfg" apn
+ config_get service "$cfg" service
+ config_get pincode "$cfg" pincode
+ config_get mtu "$cfg" mtu
+
+ 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
+ set_3g_led 1 0 0
+
+ start_pppd "$config" \
+ noaccomp \
+ nopcomp \
+ novj \
+ nobsdcomp \
+ noauth \
+ lock \
+ crtscts \
+ connect "USE_APN=\"$apn\" /etc/ppp/3g.connect" \
+ ${mtu:+mtu $mtu mru $mtu} \
+ 460800 "$device"
+}
diff --git a/package/comgt/files/getcardinfo.gcom b/package/comgt/files/getcardinfo.gcom
new file mode 100644
index 0000000000..5c69a64604
--- /dev/null
+++ b/package/comgt/files/getcardinfo.gcom
@@ -0,0 +1,14 @@
+opengt
+ set com 115200n81
+ set comecho off
+ set senddelay 0.02
+ waitquiet 0.2 0.2
+ flash 0.1
+
+:start
+ send "ATI^m"
+ get 1 "" $s
+ print $s
+
+:continue
+ exit 0
diff --git a/package/comgt/files/getstrength.gcom b/package/comgt/files/getstrength.gcom
new file mode 100644
index 0000000000..2886285971
--- /dev/null
+++ b/package/comgt/files/getstrength.gcom
@@ -0,0 +1,14 @@
+opengt
+ set com 115200n81
+ set comecho off
+ set senddelay 0.02
+ waitquiet 0.2 0.2
+ flash 0.1
+
+:start
+ send "AT+CSQ^m"
+ get 1 "" $s
+ print $s
+
+:continue
+ exit 0
diff --git a/package/comgt/files/setmode.gcom b/package/comgt/files/setmode.gcom
new file mode 100644
index 0000000000..4ce0b5fa78
--- /dev/null
+++ b/package/comgt/files/setmode.gcom
@@ -0,0 +1,26 @@
+# set wwan mode from environment
+opengt
+ set com 115200n81
+ set senddelay 0.02
+ waitquiet 1 0.2
+ flash 0.1
+
+:start
+ print "Trying to set mode\n"
+ send $env("MODE")
+ send "^m"
+
+ waitfor 15 "OK","ERR","ERROR"
+ if % = 0 goto continue
+ if % = 1 goto modeerror
+ if % = 2 goto modeerror
+
+ print "Timeout setting WWAN mode!\n"
+ exit 1
+
+:modeerror
+ print "Error setting WWAN mode!\n"
+ exit 1
+
+:continue
+ exit 0
diff --git a/package/comgt/files/setpin.gcom b/package/comgt/files/setpin.gcom
new file mode 100644
index 0000000000..66350fe20b
--- /dev/null
+++ b/package/comgt/files/setpin.gcom
@@ -0,0 +1,55 @@
+# set pin code from evnironment "$PINCODE"
+opengt
+ set com 115200n81
+ set senddelay 0.05
+ waitquiet 3 0.5
+ flash 0.1
+
+ let c=0
+:start
+ send "AT+CPIN?^m"
+ waitfor 15 "SIM PUK","SIM PIN","READY","ERROR","ERR"
+ if % = -1 goto timeout
+ if % = 0 goto ready
+ if % = 1 goto setpin
+ if % = 2 goto ready
+ if % = 3 goto checkrepeat
+ if % = 4 goto checkrepeat
+
+:checkrepeat
+ inc c
+ if c>3 goto pinerror
+ waitquiet 12 0.5
+ goto start
+
+:timeout
+ print "timeout checking for PIN."
+ exit 1
+
+:ready
+ print "SIM ready\n"
+ goto continue
+ exit 0
+
+:setpin
+ # check if output was "SIM PIN2", that's ok.
+ waitfor 1 "2"
+ if % = 0 goto ready
+
+ print "Trying to set PIN\n"
+ send "AT+CPIN=\""
+ send $env("PINCODE")
+ send "\"^m"
+
+ waitfor 20 "OK","ERR"
+ if % = -1 goto pinerror
+ if % = 0 goto continue
+ if % = 1 goto pinerror
+
+:pinerror
+ print "Error setting PIN, check card manually\n"
+ exit 1
+
+:continue
+ print "PIN set successfully\n"
+ exit 0