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 <l...@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 <l...@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 _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev