experimental mobile modem support

This commit is contained in:
Calin Crisan 2016-06-09 21:51:55 +03:00
parent 475198b5d1
commit 6d567a566f
16 changed files with 49 additions and 35 deletions

View File

@ -1,7 +1,7 @@
#!/bin/bash
sys_conf="/etc/ppp/default"
boot_conf="/boot/ppp/default"
boot_conf="/boot/ppp"
conf="/data/etc/ppp"
prog="/usr/sbin/pppd"
@ -20,7 +20,8 @@ if ! [ -d $conf ]; then
fi
fi
test -f $conf/modem || exit 0
test -e $conf/modem || exit 0
test -e $conf/apn || exit 0
test -n "$os_version" || source /etc/init.d/base
@ -47,26 +48,10 @@ watch() {
}
start() {
if [ -s $conf/usb_modeswitch ]; then
IFS=: venprod=($(cat $conf/usb_modeswitch))
vendor=${venprod[0]}
product=${venprod[1]}
# wait for usb device
if [ -n "$vendor" ] && [ -n "$product" ]; then
msg_begin "Starting usb_modeswitch"
count=0
while true; do
if lsusb | grep $vendor:$product >/dev/null 2>&1 || [ $count -gt $link_watch_timeout ]; then
break
fi
count=$(($count + 1))
sleep 1
done
/usr/sbin/usb_modeswitch -c /etc/usb_modeswitch.conf -v $vendor -p $product > /var/log/usb_modeswitch.log 2>&1
msg_done
fi
fi
test -e $conf/auth || touch $conf/auth
test -e $conf/extra || touch $conf/extra
test -e $conf/pin || touch $conf/pin
mknod /dev/ppp c 108 0 &>/dev/null
msg_begin "Starting pppd"
@ -84,7 +69,7 @@ start() {
if ! [ -e /dev/$modem ]; then
msg_fail "modem /dev/$modem not present"
return 1
return
fi
$prog call $provider
@ -98,8 +83,7 @@ start() {
if [ $count -gt $link_watch_timeout ] || ! pidof pppd > /dev/null; then
msg_fail
reboot
return 1
return
fi
count=$(($count + 1))

View File

@ -1 +0,0 @@
/data/etc/ppp/auth

View File

@ -1 +0,0 @@
/data/etc/ppp/apn

View File

@ -1 +0,0 @@
/data/etc/ppp/extra

View File

@ -10,12 +10,12 @@ TIMEOUT 6
'' 'ATQ0'
'OK-AT-OK' 'ATZ'
TIMEOUT 3
'OK' @/etc/ppp/chatscripts/pin
'OK' @/data/etc/ppp/pin
'OK\d-AT-OK' 'ATI'
'OK' 'ATZ'
'OK' 'ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0'
'OK' @/etc/ppp/chatscripts/extra
'OK-AT-OK' @/etc/ppp/chatscripts/apn
'OK' @/data/etc/ppp/extra
'OK-AT-OK' @/data/etc/ppp/apn
'OK' 'ATDT*99***1#'
TIMEOUT 30
CONNECT ''

View File

@ -1 +0,0 @@
/data/etc/ppp/pin

View File

@ -1 +0,0 @@
/data/etc/ppp/modem

View File

@ -1,4 +1,4 @@
file /etc/ppp/modem
file /data/etc/ppp/modem
file /etc/ppp/options
file /etc/ppp/auth
file /data/etc/ppp/auth
connect "/usr/sbin/chat -v -t15 -f /etc/ppp/chatscripts/mobile.chat"

View File

@ -73,6 +73,7 @@ BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y
BR2_PACKAGE_SUNXI_BOARDS=y
BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE="a20/Bananapi.fex"
BR2_PACKAGE_USB_MODESWITCH_DATA=y
BR2_PACKAGE_PYTHON_SSL=y
BR2_PACKAGE_PYTHON_HASHLIB=y
BR2_PACKAGE_PYTHON_JINJA2=y

View File

@ -71,6 +71,7 @@ BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y
BR2_PACKAGE_USB_MODESWITCH_DATA=y
BR2_PACKAGE_PYTHON_SSL=y
BR2_PACKAGE_PYTHON_HASHLIB=y
BR2_PACKAGE_PYTHON_JINJA2=y

View File

@ -71,6 +71,7 @@ BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y
BR2_PACKAGE_USB_MODESWITCH_DATA=y
BR2_PACKAGE_PYTHON_SSL=y
BR2_PACKAGE_PYTHON_HASHLIB=y
BR2_PACKAGE_PYTHON_JINJA2=y

View File

@ -62,6 +62,7 @@ BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y
BR2_PACKAGE_USB_MODESWITCH_DATA=y
BR2_PACKAGE_PYTHON_SSL=y
BR2_PACKAGE_PYTHON_HASHLIB=y
BR2_PACKAGE_PYTHON_JINJA2=y

View File

@ -72,6 +72,7 @@ BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE_X=y
BR2_PACKAGE_I2C_TOOLS=y
BR2_PACKAGE_RPI_USERLAND=y
BR2_PACKAGE_USB_MODESWITCH_DATA=y
BR2_PACKAGE_PYTHON_SSL=y
BR2_PACKAGE_PYTHON_HASHLIB=y
BR2_PACKAGE_PYTHON_JINJA2=y

View File

@ -73,6 +73,7 @@ BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE_X=y
BR2_PACKAGE_I2C_TOOLS=y
BR2_PACKAGE_RPI_USERLAND=y
BR2_PACKAGE_USB_MODESWITCH_DATA=y
BR2_PACKAGE_PYTHON_SSL=y
BR2_PACKAGE_PYTHON_HASHLIB=y
BR2_PACKAGE_PYTHON_JINJA2=y

View File

@ -72,6 +72,7 @@ BR2_PACKAGE_RPI_FIRMWARE_X=y
BR2_PACKAGE_I2C_TOOLS=y
BR2_PACKAGE_RPI_ARMMEM=y
BR2_PACKAGE_RPI_USERLAND=y
BR2_PACKAGE_USB_MODESWITCH_DATA=y
BR2_PACKAGE_PYTHON_SSL=y
BR2_PACKAGE_PYTHON_HASHLIB=y
BR2_PACKAGE_PYTHON_JINJA2=y

View File

@ -7,6 +7,7 @@ function usage() {
echo "Available options:"
echo " <-i image_file> - indicates the path to the image file (e.g. -i /home/user/Download/file.img.gz)"
echo " <-d sdcard_dev> - indicates the path to the sdcard block device (e.g. -d /dev/mmcblk0)"
echo " [-m modem:apn:user:pwd:pin] - configures the mobile network modem (e.g. -m ttyUSB0:internet)"
echo " [-n ssid:psk] - sets the wireless network name and key (e.g. -n mynet:mykey1234)"
echo " [-s ip/cidr:gw:dns] - sets a static IP configuration instead of DHCP (e.g. -s 192.168.1.101/24:192.168.1.1:8.8.8.8)"
exit 1
@ -30,6 +31,14 @@ while getopts "a:d:f:h:i:ln:o:p:s:w" o; do
i)
DISK_IMG=$OPTARG
;;
m)
IFS=":" SETTINGS=($OPTARG)
MODEM=${SETTINGS[0]}
APN=${SETTINGS[1]}
MUSER=${SETTINGS[2]}
MPWD=${SETTINGS[3]}
PIN=${SETTINGS[4]}
;;
n)
IFS=":" NETWORK=($OPTARG)
SSID=${NETWORK[0]}
@ -115,6 +124,25 @@ if [ -n "$SSID" ]; then
echo -e "}\n" >> $conf
fi
# modem
if [ -n "$MODEM" ]; then
msg "creating mobile network configuration"
conf=$BOOT/ppp
mkdir -p $conf
echo $MODEM > $conf/modem
echo "AT+CGDCONT=1,\"IP\",\"$APN\"" > $conf/apn
echo > $conf/extra
echo > $conf/auth
echo > $conf/pin
if [ -n "$MUSER" ]; then
echo "user \"$MUSER\"" > $conf/auth
echo "password \"$MPWD\"" >> $conf/auth
fi
if [ -n "$PIN" ]; then
echo "AT+CPIN=$PIN" > $conf/pin
fi
fi
# static ip
if [ -n "$IP" ] && [ -n "$GW" ] && [ -n "$DNS" ]; then
msg "setting static IP configuration"