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