55 lines
1019 B
Python
Executable File
55 lines
1019 B
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import serial
|
|
import sys
|
|
import time
|
|
import os
|
|
|
|
MAX_TRY = 5
|
|
tries = 0
|
|
SERIAL_DEV = '/dev/ttyACM0'
|
|
|
|
while not os.path.exists(SERIAL_DEV):
|
|
time.sleep(1)
|
|
|
|
ser = serial.Serial(SERIAL_DEV, 115200, timeout=0.5)
|
|
|
|
def execute_and_check(cmd):
|
|
global tries
|
|
ser.flushInput()
|
|
ser.write(cmd)
|
|
ser.write(b'\r')
|
|
s = ser.read_until(b'OK')
|
|
if b'OK' not in s:
|
|
print("Failed cmd : " + str(cmd))
|
|
print("Output: " + str(s))
|
|
tries += 1
|
|
if tries < MAX_TRY:
|
|
time.sleep(1)
|
|
execute_and_check(cmd)
|
|
else:
|
|
sys.exit(-1)
|
|
tries = 0
|
|
|
|
|
|
print("Setting up bridge mode")
|
|
execute_and_check(b'AT+UBMCONF=2')
|
|
|
|
|
|
print("Setting up USB mode to ECM")
|
|
execute_and_check(b'AT+UUSBCONF=2,"ECM",0')
|
|
|
|
|
|
print("Resetting modem")
|
|
ser.write(b'AT+CFUN=16\r')
|
|
|
|
ser.close()
|
|
|
|
# Wait until modem rebooted
|
|
while True:
|
|
dirs = os.listdir("/dev")
|
|
for file in dirs:
|
|
if file == 'ttyACM2':
|
|
sys.exit(0);
|
|
time.sleep(1)
|