[LEDE-DEV] [PATCH v2 2/2] Merge enablemodem from ramips and ar71xx to new package adb-enablemodem
Filip Moc
lede at moc6.cz
Fri Feb 10 12:32:21 PST 2017
This merges enablemodem from ramips and ar71xx to new package adb-enablemodem.
New adb-enablemodem uses modem's id rather than main board's name so it could
possibly work even on different boards without need to change anything.
Fixes:
- Problem when modem is not responding causing adb to wait indefinitely and
blocking boot process.
- Asterisk path expansion.
- Possible race condition when there are more devices attached.
New features:
- Logging
- Stopping httpd
>From 2a7f4f598ba02284c347e57ff1267ecef1f3b458 Mon Sep 17 00:00:00 2001
From: Filip Moc <lede at moc6.cz>
Date: Fri, 10 Feb 2017 19:25:13 +0100
Subject: [PATCH] Merge enablemodem from ramips and ar71xx to new package
adb-enablemodem
Signed-off-by: Filip Moc <lede at moc6.cz>
---
package/network/utils/adb-enablemodem/Makefile | 26 +++++++++
.../utils/adb-enablemodem/files/adb-enablemodem | 63 ++++++++++++++++++++++
.../linux/ar71xx/base-files/etc/init.d/enablemodem | 17 ------
target/linux/ar71xx/image/tp-link.mk | 2 +-
.../linux/ramips/base-files/etc/init.d/enablemodem | 17 ------
target/linux/ramips/image/mt7620.mk | 2 +-
6 files changed, 91 insertions(+), 36 deletions(-)
create mode 100644 package/network/utils/adb-enablemodem/Makefile
create mode 100644 package/network/utils/adb-enablemodem/files/adb-enablemodem
delete mode 100755 target/linux/ar71xx/base-files/etc/init.d/enablemodem
delete mode 100755 target/linux/ramips/base-files/etc/init.d/enablemodem
diff --git a/package/network/utils/adb-enablemodem/Makefile b/package/network/utils/adb-enablemodem/Makefile
new file mode 100644
index 0000000..2611331
--- /dev/null
+++ b/package/network/utils/adb-enablemodem/Makefile
@@ -0,0 +1,26 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=adb-enablemodem
+PKG_VERSION:=2017-02-09
+PKG_RELEASE:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/adb-enablemodem
+ SECTION:=net
+ CATEGORY:=Network
+ SUBMENU:=WWAN
+ TITLE:=Enable modem via adb
+ DEPENDS:=+adb
+endef
+
+define Build/Compile
+ true
+endef
+
+define Package/adb-enablemodem/install
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/adb-enablemodem $(1)/etc/init.d/adb-enablemodem
+endef
+
+$(eval $(call BuildPackage,adb-enablemodem))
diff --git a/package/network/utils/adb-enablemodem/files/adb-enablemodem b/package/network/utils/adb-enablemodem/files/adb-enablemodem
new file mode 100644
index 0000000..d379bd7
--- /dev/null
+++ b/package/network/utils/adb-enablemodem/files/adb-enablemodem
@@ -0,0 +1,63 @@
+#!/bin/sh /etc/rc.common
+
+START=99
+
+adb_exec() {
+ adb -s "$serial" shell "( $1 ) >/dev/null 2>&1"'; printf "\nEXIT_CODE: %i\n" $?' | head -c 64 | grep -qx 'EXIT_CODE: 0\r\?'
+}
+
+enablemodem_do() {
+ logger -t adb-enablemodem 'INFO: waiting for device'
+ adb wait-for-device
+ serial="$(adb get-serialno)"
+
+ vendor_id="$(adb -s "$serial" shell 'uci get product.usb.vid' | head -c 16 | tr -d '\r\n')"
+ product_id="$(adb -s "$serial" shell 'uci get product.usb.pid' | head -c 16 | tr -d '\r\n')"
+
+ case "$vendor_id:$product_id" in
+ "0x2357:0x000D") # TP-LINK LTE MODEM
+ case "$1" in
+ start)
+ if adb_exec '
+ chmod +x /WEBSERVER/www/cgi-bin/*
+ for fd in $(ls /proc/self/fd | grep -v "^[012]$"); do
+ eval "exec $fd>&-"
+ done
+ start-stop-daemon -x httpd -S -- -h /WEBSERVER/www/
+ '; then
+ logger -t adb-enablemodem 'INFO: httpd on modem started'
+ else
+ logger -t adb-enablemodem 'ERROR: failed to start httpd on modem'
+ fi
+ option_newid='/sys/bus/usb-serial/drivers/option1/new_id'
+ if [ -e "$option_newid" ]; then
+ printf '%s %s' "$vendor_id" "$product_id" > "$option_newid"
+ fi
+ ;;
+ stop)
+ if adb_exec 'start-stop-daemon -x httpd -K'; then
+ logger -t adb-enablemodem 'INFO: httpd on modem stopped'
+ else
+ logger -t adb-enablemodem 'ERROR: failed to stop httpd on modem'
+ fi
+ ;;
+ esac
+ ;;
+ *)
+ logger -t adb-enablemodem "ERROR: unknown device $vendor_id:$product_id"
+ ;;
+ esac
+}
+
+start() {
+ ( enablemodem_do start ) &
+}
+
+stop() {
+ ( enablemodem_do stop ) &
+}
+
+restart() {
+ ( enablemodem_do stop; enablemodem_do start ) &
+}
+
diff --git a/target/linux/ar71xx/base-files/etc/init.d/enablemodem b/target/linux/ar71xx/base-files/etc/init.d/enablemodem
deleted file mode 100755
index 0ec07c7..0000000
--- a/target/linux/ar71xx/base-files/etc/init.d/enablemodem
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh /etc/rc.common
-
-START=99
-
-start() {
- . /lib/ar71xx.sh
-
- local board=$(ar71xx_board_name)
- if [ $board = "tl-mr6400" ]; then
- adb wait-for-device
- adb shell chmod +x /WEBSERVER/www/cgi-bin/*
- adb shell httpd -h /WEBSERVER/www/ &
- echo "2357 000d" > /sys/bus/usb-serial/drivers/option1/new_id
- sleep 2
- adb kill-server
- fi
-}
diff --git a/target/linux/ar71xx/image/tp-link.mk b/target/linux/ar71xx/image/tp-link.mk
index 4883162..242a33a 100644
--- a/target/linux/ar71xx/image/tp-link.mk
+++ b/target/linux/ar71xx/image/tp-link.mk
@@ -455,7 +455,7 @@ TARGET_DEVICES += tl-mr3020-v1 tl-mr3040-v1 tl-mr3040-v2 tl-mr3220-v1 tl-mr3220-
define Device/tl-mr6400-v1
$(Device/tplink-8mlzma)
DEVICE_TITLE := TP-LINK TL-MR6400 v1
- DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-net kmod-usb-net-rndis kmod-usb-serial kmod-usb-serial-option adb
+ DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-net kmod-usb-net-rndis kmod-usb-serial kmod-usb-serial-option adb-enablemodem
BOARDNAME := TL-MR6400
DEVICE_PROFILE := TLMR6400
TPLINK_HWID := 0x64000001
diff --git a/target/linux/ramips/base-files/etc/init.d/enablemodem b/target/linux/ramips/base-files/etc/init.d/enablemodem
deleted file mode 100755
index ba54cc4..0000000
--- a/target/linux/ramips/base-files/etc/init.d/enablemodem
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh /etc/rc.common
-
-START=99
-
-start() {
- . /lib/ramips.sh
-
- local board=$(ramips_board_name)
- if [ $board = "mr200" ]; then
- adb wait-for-device
- adb shell chmod +x /WEBSERVER/www/cgi-bin/*
- adb shell httpd -h /WEBSERVER/www/ &
- echo "2357 000d" > /sys/bus/usb-serial/drivers/option1/new_id
- sleep 2
- adb kill-server
- fi
-}
diff --git a/target/linux/ramips/image/mt7620.mk b/target/linux/ramips/image/mt7620.mk
index 2900684..cbb9130 100644
--- a/target/linux/ramips/image/mt7620.mk
+++ b/target/linux/ramips/image/mt7620.mk
@@ -46,7 +46,7 @@ define Device/ArcherMR200
KERNEL := $(KERNEL_DTB)
KERNEL_INITRAMFS := $(KERNEL_DTB) | tplink-header ArcherMR200 -c
IMAGE/sysupgrade.bin := append-kernel | tplink-header ArcherMR200 -j | append-metadata
- DEVICE_PACKAGES := kmod-usb2 kmod-usb-net kmod-usb-net-rndis kmod-usb-serial kmod-usb-serial-option adb
+ DEVICE_PACKAGES := kmod-usb2 kmod-usb-net kmod-usb-net-rndis kmod-usb-serial kmod-usb-serial-option adb-enablemodem
DEVICE_TITLE := TP-Link ArcherMR200
endef
TARGET_DEVICES += ArcherMR200
--
2.1.4
More information about the Lede-dev
mailing list