parent
d8d7529e0e
commit
fdcc84f78e
@ -1,36 +0,0 @@ |
||||
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" ] && { |
||||
HOTPLUG="$(cat /proc/sys/kernel/hotplug)" |
||||
(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 $HOTPLUG > /proc/sys/kernel/hotplug) |
||||
} & |
@ -1,4 +0,0 @@ |
||||
#!/bin/sh |
||||
. /lib/network/3g.sh |
||||
set_3g_led 1 1 1 |
||||
/usr/sbin/chat -V -E -f /etc/chatscripts/3g.chat |
@ -1,15 +0,0 @@ |
||||
include /lib/network |
||||
config_load network |
||||
scan_interfaces |
||||
config_get proto "$INTERFACE" proto |
||||
[ "$proto" = "3g" ] && { |
||||
config_get iface "$INTERFACE" ifname |
||||
case "$ACTION" in |
||||
ifup) |
||||
set_3g_led 1 1 0 |
||||
;; |
||||
ifdown) |
||||
set_3g_led 0 0 0 |
||||
;; |
||||
esac |
||||
} |
@ -1,119 +0,0 @@ |
||||
set_3g_led() { |
||||
# set on WRT54G3G only |
||||
[ -f /proc/diag/model ] || return 0 |
||||
grep -q "WRT54G3G" /proc/diag/model >/dev/null || return 0 |
||||
echo "$1" > /proc/diag/led/3g_green |
||||
echo "$2" > /proc/diag/led/3g_blue |
||||
grep -q "WRT54G3G$" /proc/diag/model >/dev/null || return 0 |
||||
echo "$3" > /proc/diag/led/3g_blink |
||||
} |
||||
|
||||
scan_3g() { |
||||
local device |
||||
config_get device "$1" device |
||||
|
||||
# try to figure out the device if it's invalid |
||||
[ -n "$device" -a -e "$device" ] || { |
||||
for device in /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /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 |
||||
local button |
||||
config_get button "$1" button |
||||
[ -z "$button" ] && { |
||||
config_set "$1" button 1 |
||||
} |
||||
} |
||||
|
||||
stop_interface_3g() { |
||||
stop_interface_ppp "$1" |
||||
set_3g_led 0 0 0 |
||||
killall gcom >/dev/null 2>/dev/null |
||||
} |
||||
|
||||
setup_interface_3g() { |
||||
local iface="$1" |
||||
local config="$2" |
||||
local chat="/etc/chatscripts/3g.chat" |
||||
|
||||
local device |
||||
config_get device "$config" device |
||||
|
||||
local maxwait |
||||
config_get maxwait "$config" maxwait |
||||
maxwait=${maxwait:-20} |
||||
while [ ! -e "$device" -a $maxwait -gt 0 ];do # wait for driver loading to catch up |
||||
maxwait=$(($maxwait - 1)) |
||||
sleep 1 |
||||
done |
||||
|
||||
for module in slhc ppp_generic ppp_async; do |
||||
/sbin/insmod $module 2>&- >&- |
||||
done |
||||
|
||||
local apn |
||||
config_get apn "$config" apn |
||||
|
||||
local service |
||||
config_get service "$config" service |
||||
|
||||
local pincode |
||||
config_get pincode "$config" pincode |
||||
|
||||
local mtu |
||||
config_get mtu "$config" mtu |
||||
|
||||
set_3g_led 1 0 1 |
||||
|
||||
# figure out hardware specific commands for the card |
||||
case "$service" in |
||||
cdma|evdo) chat="/etc/chatscripts/evdo.chat";; |
||||
*) |
||||
cardinfo=$(gcom -d "$device" -s /etc/gcom/getcardinfo.gcom) |
||||
if echo "$cardinfo" | grep Novatel; then |
||||
case "$service" in |
||||
umts_only) CODE=2;; |
||||
gprs_only) CODE=1;; |
||||
*) CODE=0;; |
||||
esac |
||||
mode="AT\$NWRAT=${CODE},2" |
||||
elif echo "$cardinfo" | grep Option; then |
||||
case "$service" in |
||||
umts_only) CODE=1;; |
||||
gprs_only) CODE=0;; |
||||
*) CODE=3;; |
||||
esac |
||||
mode="AT_OPSYS=${CODE}" |
||||
fi |
||||
# Don't assume Option to be default as it breaks with Huawei Cards/Sticks |
||||
|
||||
test -z "$pincode" || { |
||||
PINCODE="$pincode" gcom -d "$device" -s /etc/gcom/setpin.gcom || { |
||||
echo "$config(3g): Failed to set the PIN code." |
||||
set_3g_led 0 0 0 |
||||
return 1 |
||||
} |
||||
} |
||||
test -z "$mode" || { |
||||
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 -v -E -f $chat" |
||||
start_pppd "$config" \ |
||||
noaccomp \ |
||||
nopcomp \ |
||||
novj \ |
||||
nobsdcomp \ |
||||
noauth \ |
||||
lock \ |
||||
crtscts \ |
||||
${mtu:+mtu $mtu mru $mtu} \ |
||||
115200 "$device" |
||||
} |
@ -1,42 +0,0 @@ |
||||
#!/bin/sh |
||||
|
||||
. /etc/functions.sh |
||||
|
||||
log() { |
||||
logger -t 3g-hotplug "$@" |
||||
} |
||||
|
||||
find_3g_iface() { |
||||
local cfg="$1" |
||||
local tty="$2" |
||||
|
||||
local proto |
||||
config_get proto "$cfg" proto |
||||
[ "$proto" = 3g ] || return 0 |
||||
|
||||
local auto |
||||
config_get_bool auto "$cfg" auto 1 |
||||
[ "$auto" = 1 ] || [ "$ACTION" = remove ] || return 0 |
||||
|
||||
local dev |
||||
config_get dev "$cfg" device |
||||
|
||||
if [ "${dev##*/}" = "${tty##*/}" ]; then |
||||
if [ "$ACTION" = add ]; then |
||||
log "Starting interface $cfg for device ${dev##*/}" |
||||
( sleep 1; /sbin/ifup "$cfg" ) & |
||||
else |
||||
log "Stopping interface $cfg for device ${dev##*/}" |
||||
/sbin/ifdown "$cfg" & |
||||
fi |
||||
fi |
||||
} |
||||
|
||||
case "$DEVICENAME" in |
||||
tty*) |
||||
[ -e "/dev/$DEVICENAME" ] || [ "$ACTION" = remove ] || exit 0 |
||||
config_load network |
||||
config_foreach find_3g_iface interface "/dev/$DEVICENAME" |
||||
;; |
||||
esac |
||||
|
Loading…
Reference in new issue