From 3c70077f308437281c72431223b532f6f427e1d0 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Wed, 7 Jul 2010 23:58:22 +0200 Subject: add support for hso umts modems if you like to use an usb umts modem with hso chipset, this is the support for it. use following in /etc/network/interfaces: auto hso0 iface hso0 inet manual pin xxxx apn foo.bar credentials go to freewrt 1.0 supporters... --- package/ppp/files/hso.if-down | 12 ++++++++ package/ppp/files/hso.if-up | 66 +++++++++++++++++++++++++++++++++++++++++++ package/ppp/files/ppp.pre-up | 12 ++++---- 3 files changed, 84 insertions(+), 6 deletions(-) create mode 100644 package/ppp/files/hso.if-down create mode 100644 package/ppp/files/hso.if-up (limited to 'package/ppp/files') diff --git a/package/ppp/files/hso.if-down b/package/ppp/files/hso.if-down new file mode 100644 index 000000000..6e4b4d655 --- /dev/null +++ b/package/ppp/files/hso.if-down @@ -0,0 +1,12 @@ +#!/bin/sh + +[ "$IFACE" == "hso0" ] || exit 0 + +[ -f /tmp/hso-connect ] || exit 0 + +PID=$(cat /tmp/hso-connect) +ps | grep "$PID" | grep -q hso-connect.sh && kill "$PID" +comgt -s -d /dev/ttyHS0 /etc/comgt/hsodisconnect.comgt +rm -f /tmp/hso-connect +ip address flush hso0 +ip link set hso0 down diff --git a/package/ppp/files/hso.if-up b/package/ppp/files/hso.if-up new file mode 100644 index 000000000..d08beda31 --- /dev/null +++ b/package/ppp/files/hso.if-up @@ -0,0 +1,66 @@ +#!/bin/sh + +[ "$IFACE" == "hso0" ] || exit 0 + +TTY=${IF_HSO_DEVICE:-/dev/ttyHS0} +# wait for card to initialize +COUNT=0 +while [ $((COUNT++)) -lt 20 ]; do + [ -c "$TTY" ] && break + [ $COUNT -eq 20 ] && { + logger "$0: '$TTY' not found" + exit 1 + } + sleep 1 +done + +if [ "$IF_PIN" ]; then + COMGTPIN="$IF_PIN" comgt -d "$TTY" PIN +fi + +if [ "$IF_APN" ]; then + COMGTAPN="$IF_APN" comgt -d "$TTY" APN +fi + +# only run once! +[ -f /tmp/hso-connect ] && exit 0 + +while : +do + # get connection status + STATUS=$(comgt -s -d "$TTY" /etc/comgt/hsostatus.comgt | + tr -d " " | + grep -v ^$ | + cut -d , -f 2) + # dial if connection status is disabled + if [ "$STATUS" -eq "0" ] ; then + comgt -s -d "$TTY" /etc/comgt/hsoconnect.comgt + DATA=$(comgt -s -d "$TTY" /etc/comgt/hsodata.comgt) + if [ "$?" -ne 0 ] ; then + continue + fi + DATA=$(echo $DATA | + tr -d " " | + grep -v ^$) + IP=$(echo $DATA | cut -d , -f 2) + NS1=$(echo $DATA | cut -d , -f 4) + NS2=$(echo $DATA | cut -d , -f 5) + ip address flush dev hso0 2> /dev/null + ip address add "$IP/32" dev hso0 + ip link set hso0 up + def=$(ip route show |grep default | wc -l) + [ $def -eq 1 ] && ip route del default + ip route add default dev hso0 + echo "nameserver $NS1" > /etc/resolv.conf + echo "nameserver $NS2" >> /etc/resolv.conf + . /etc/rc.conf + # get time via ntpclient if available + [ -x /usr/sbin/ntpclient ] && ntpclient -s -h pool.ntp.org + # get time via rdate if available + [ -x /usr/sbin/rdate ] && rdate -nv pool.ntp.org + # restart ntpd when enabled + test x"${ntpd:-NO}" = x"NO" || /etc/init.d/ntpd restart + fi + sleep 10 +done & +echo $! > /tmp/hso-connect diff --git a/package/ppp/files/ppp.pre-up b/package/ppp/files/ppp.pre-up index 79fb063ba..7f28f32da 100755 --- a/package/ppp/files/ppp.pre-up +++ b/package/ppp/files/ppp.pre-up @@ -93,21 +93,21 @@ umts) comgt -s /etc/comgt/waitready.comgt -d $IF_PPP_DEVICE || exit 1 # set pincode - if [ "$IF_UMTS_PINCODE" ]; then - COMGTPIN="$IF_UMTS_PINCODE" comgt PIN -d $IF_PPP_DEVICE || ERROR=1 + if [ "$IF_PIN" ]; then + COMGTPIN="$IF_PIN" comgt PIN -d $IF_PPP_DEVICE || exit 1 fi # set APN - COMGTAPN="$IF_UMTS_APN" comgt APN -d $IF_PPP_DEVICE || ERROR=1 + COMGTAPN="$IF_APN" comgt APN -d $IF_PPP_DEVICE || exit 1 # set umts/gprs mode if available (Option cards only) - case "$IF_UMTS_MODE" in + case "$IF_MODE" in gprs_only) comgt 2G -d $IF_PPP_DEVICE ;; umts_only) comgt 3G -d $IF_PPP_DEVICE ;; umts_first) comgt 3G2G -d $IF_PPP_DEVICE ;; "") ;; - *) echo "unknown umts-mode, exiting" - ERROR=1 + *) echo "unknown mode, exiting" + exit 1 ;; esac ;; -- cgit v1.2.3