From 1973d4733cf27e73a0910eb4e4735d18f1dd68aa Mon Sep 17 00:00:00 2001 From: Daisuke Baba Date: Tue, 26 Jul 2016 21:16:45 +0900 Subject: [PATCH 1/4] Turn LED off as soon as possible on stopping the service --- systemd/stop_systemd.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/systemd/stop_systemd.sh b/systemd/stop_systemd.sh index 6b1b47b..73ae828 100755 --- a/systemd/stop_systemd.sh +++ b/systemd/stop_systemd.sh @@ -75,8 +75,9 @@ logger -t ltepi2 "Inactivating ${PRODUCT}..." diagnose_self inactivate_lte /opt/candy-line/ltepi2/_modem_off.sh > /dev/null 2>&1 -wait_for_modem_usb_inactive led_off +wait_for_modem_usb_inactive +led_off # ensure LED off # end banner logger -t ltepi2 "${PRODUCT} is inactivated successfully!" From e7ba92db7610757e9947b79ff46094a32a7ed84c Mon Sep 17 00:00:00 2001 From: Daisuke Baba Date: Tue, 26 Jul 2016 21:17:59 +0900 Subject: [PATCH 2/4] Use SIGTERM rather than SIGINT so that the process should quit properly --- systemd/server_main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/systemd/server_main.py b/systemd/server_main.py index 61a35ee..1cda971 100644 --- a/systemd/server_main.py +++ b/systemd/server_main.py @@ -45,7 +45,7 @@ def run(self): err = subprocess.call("ip route | grep %s" % self.nic, shell=True, stdout=Monitor.FNULL, stderr=subprocess.STDOUT) if err != 0: logger.error("LTEPi-II modem is terminated. Shutting down.") - os.kill(os.getpid(), signal.SIGINT) # exit from non-main thread + os.kill(os.getpid(), signal.SIGTERM) # exit from non-main thread break err = subprocess.call("ip route | grep default | grep -v %s" % self.nic, shell=True, stdout=Monitor.FNULL, stderr=subprocess.STDOUT) if err == 0: From 48b98d2f9f19d4c5a0168d6b92fa627a23ba19f9 Mon Sep 17 00:00:00 2001 From: Daisuke Baba Date: Tue, 26 Jul 2016 22:31:08 +0900 Subject: [PATCH 3/4] Fix an issue AMP520 failed to accept usb mode change command and auto-connect command at once The side-effect of this change is to avoid system reboot but just requires modem reboot instead. --- systemd/server_main.py | 26 ++++++++++++++++--- systemd/start_systemd.sh | 56 +++++++++++++++++++++++++++++++++++----- 2 files changed, 72 insertions(+), 10 deletions(-) diff --git a/systemd/server_main.py b/systemd/server_main.py index 1cda971..c19adee 100644 --- a/systemd/server_main.py +++ b/systemd/server_main.py @@ -82,16 +82,32 @@ def resolve_boot_apn(): os.remove(apn_json) return apn -def modem_init(serial_port, sock_path): +def modem_init1(serial_port, sock_path): delete_sock_path(sock_path) atexit.register(delete_sock_path, sock_path) serial = candy_board_amt.SerialPort(serial_port, 115200) server = candy_board_amt.SockServer(resolve_version(), resolve_boot_apn(), sock_path, serial) ret = server.perform({'category':'modem', 'action':'enable_ecm'}) - logger.debug("modem_init() : modem, enable_ecm => %s" % ret) + logger.debug("modem_init1() : modem, enable_ecm => %s" % ret) sys.exit(json.loads(ret)['status'] != 'OK') +def modem_init2(serial_port, sock_path): + delete_sock_path(sock_path) + atexit.register(delete_sock_path, sock_path) + + serial = candy_board_amt.SerialPort(serial_port, 115200) + server = candy_board_amt.SockServer(resolve_version(), resolve_boot_apn(), sock_path, serial) + ret = server.perform({'category':'modem', 'action':'enable_auto_connect'}) + logger.debug("modem_init2() : modem, enable_auto_connect => %s" % ret) + ret = json.loads(ret) + if ret['status'] == 'OK': + if ret['result'] == 'Already Enabled': + sys.exit(0) + else: + sys.exit(1) + sys.exit(2) + def blinky(): global led, led_sec led = 0 if led != 0 else 1 @@ -128,8 +144,10 @@ def server_main(serial_port, nic, sock_path='/var/run/candy-board-service.sock') if len(sys.argv) < 3: logger.error("USB Ethernet Network Interface isn't ready. Shutting down.") elif len(sys.argv) > 3: - if sys.argv[3] == 'init': - modem_init(sys.argv[1], sys.argv[2]) + if sys.argv[3] == 'init1': + modem_init1(sys.argv[1], sys.argv[2]) + elif sys.argv[3] == 'init2': + modem_init2(sys.argv[1], sys.argv[2]) else: logger.error("Do nothing: sys.argv[3]=%s" % sys.argv[3]) else: diff --git a/systemd/start_systemd.sh b/systemd/start_systemd.sh index ba03196..84b038b 100755 --- a/systemd/start_systemd.sh +++ b/systemd/start_systemd.sh @@ -24,6 +24,23 @@ function wait_for_modem_usb_active { done } +function wait_for_modem_usb_inactive { + MAX=40 + COUNTER=0 + while [ ${COUNTER} -lt ${MAX} ]; + do + RET=`lsusb | grep 1ecb:0208` + if [ "$?" != "0" ]; then + RET=`lsusb | grep 1ecb:0202` + if [ "$?" != "0" ]; then + break + fi + fi + sleep 0.5 + let COUNTER=COUNTER+1 + done +} + function look_for_serial_port { MAX=60 COUNTER=0 @@ -39,12 +56,24 @@ function look_for_serial_port { done } -function try_to_change_usb_data_conn { - # Change to ECM +function change_usb_data_conn { logger -t ltepi2 "Modifying the USB data connection I/F to ECM" - /usr/bin/env python /opt/candy-line/ltepi2/server_main.py ${MODEM_SERIAL_PORT} /var/run/candy-board-service.sock init - logger -t ltepi2 "*** Rebooting... ***" - reboot + /usr/bin/env python /opt/candy-line/ltepi2/server_main.py ${MODEM_SERIAL_PORT} /var/run/candy-board-service.sock init1 + RET=$? + if [ "${RET}" == "0" ]; then + logger -t ltepi2 "*** Restarting modem... ***" + else + exit ${RET} + fi +} + +function enable_auto_connect { + logger -t ltepi2 "Enabling auto-connect mode" + /usr/bin/env python /opt/candy-line/ltepi2/server_main.py ${MODEM_SERIAL_PORT} /var/run/candy-board-service.sock init2 + RET=$? + if [ "${RET}" != "0" ]; then + exit ${RET} + fi } function wait_for_default_route { @@ -68,8 +97,23 @@ function diagnose_self { fi if [ "${MODEM_USB_MODE}" == "ACM" ]; then + MODEM_USB_MODE="" + look_for_serial_port - try_to_change_usb_data_conn # may reboot + change_usb_data_conn + wait_for_modem_usb_inactive + wait_for_modem_usb_active + if [ -z "${MODEM_USB_MODE}" ]; then + return + fi + + look_for_serial_port + enable_auto_connect + wait_for_modem_usb_inactive + wait_for_modem_usb_active + if [ -z "${MODEM_USB_MODE}" ]; then + return + fi fi } From 2c1292292a2ecc676bffdf80b0eed9ae2ea6d5f3 Mon Sep 17 00:00:00 2001 From: Daisuke Baba Date: Tue, 26 Jul 2016 23:29:01 +0900 Subject: [PATCH 4/4] Bump version --- README.md | 2 ++ install.sh | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fffdfa7..d6ac414 100644 --- a/README.md +++ b/README.md @@ -410,5 +410,7 @@ $ time sudo SRC_DIR=$(pwd) DEBUG=1 CANDY_RED=0 ./install.sh ``` # 履歴 +* 1.0.1 + - AMP520において、自動接続モードがデフォルトで有効になるように修正 * 1.0.0 - 初版 diff --git a/install.sh b/install.sh index 0c52c26..0bb53d1 100755 --- a/install.sh +++ b/install.sh @@ -4,7 +4,7 @@ VENDOR_HOME=/opt/candy-line SERVICE_NAME=ltepi2 GITHUB_ID=CANDY-LINE/ltepi2-service -VERSION=1.0.0 +VERSION=1.0.1 NODEJS_VERSIONS="v0.12 v4.3"