1
1
#!/usr/bin/env python
2
- VERSION = "1.2.4 "
2
+ VERSION = "1.2.5 "
3
3
4
4
# Copyright (c) 2019, Pycom Limited.
5
5
#
@@ -67,6 +67,7 @@ def special_print(self, msg, flush=None, end='\n'):
67
67
print (msg , flush = flush , end = end )
68
68
69
69
def read_rsp (self , size = None , timeout = - 1 ):
70
+ time .sleep (.25 )
70
71
if timeout < 0 :
71
72
timeout = 20000
72
73
elif timeout is None :
@@ -338,7 +339,7 @@ def __get_wait_msg(self, load_fff=True):
338
339
339
340
340
341
341
- def __run (self , file_path = None , baudrate = 921600 , port = None , resume = False , load_ffh = False , mirror = False , switch_ffh = False , bootrom = False , rgbled = 0x050505 , debug = False , pkgdebug = False , atneg = True , max_try = 10 , direct = True , atneg_only = False , info_only = False , expected_smod = None , verbose = False , load_fff = False ):
342
+ def __run (self , file_path = None , baudrate = 921600 , port = None , resume = False , load_ffh = False , mirror = False , switch_ffh = False , bootrom = False , rgbled = 0x050505 , debug = False , pkgdebug = False , atneg = True , max_try = 10 , direct = True , atneg_only = False , info_only = False , expected_smod = None , verbose = False , load_fff = False , mtools = False ):
342
343
self .__wait_msg = False
343
344
mirror = True if atneg_only else mirror
344
345
recover = True if atneg_only else load_ffh
@@ -418,7 +419,7 @@ def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_f
418
419
if not self .wakeup_modem (baudrate , port , 10 , 1 , debug ):
419
420
return False
420
421
421
- if not resume :
422
+ if ( not resume ) or mtools :
422
423
423
424
# bind to AT channel
424
425
self .__serial .write (b"AT+BIND=AT\r \n " )
@@ -432,17 +433,42 @@ def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_f
432
433
response = self .read_rsp (size = 100 )
433
434
if debug : print ("ATE0 returned {}" .format (response ))
434
435
435
- self .__serial .read (100 )
436
+ self .__serial .read ()
436
437
if debug : print ('Entering upgrade mode...' )
437
438
438
439
self .__serial .write (b"AT+SMOD?\r \n " )
439
440
response = self .return_pretty_response (self .read_rsp (size = 7 ))
440
- self .__serial .read (100 )
441
441
if debug : print ("AT+SMOD? returned {}" .format (response ))
442
442
443
+ if verbose : print ("Sending AT+SMLOG?" )
444
+ self .__serial .write (b'AT+SMLOG?\r \n ' )
445
+ response = self .read_rsp (size = 100 )
446
+ if verbose : print ("AT+SMLOG? returned {}" .format (response ))
447
+
448
+ if verbose : print ('Sending AT+FSRDFILE="/fs/crashdump"' )
449
+ self .__serial .write (b'AT+FSRDFILE="/fs/crashdump"\r \n ' )
450
+ response = self .read_rsp (size = 100 )
451
+ if verbose : print ('AT+FSRDFILE="/fs/crashdump" returned {}' .format (response ))
452
+ self .__serial .read ()
453
+
443
454
self .__serial .write (b"AT+SQNSUPGRADENTF=\" started\" \r \n " )
455
+ response = self .read_rsp (size = 100 )
456
+ if verbose : print ('AT+SQNSUPGRADENTF="started" returned {}' .format (response ))
444
457
self .wait_for_modem ()
445
- if not load_fff :
458
+
459
+ if verbose : print ('Sending AT+SQNWL="sqndcc"' )
460
+ self .__serial .write (b'AT+SQNWL="sqndcc"\r \n ' )
461
+ response = self .read_rsp (size = 100 )
462
+ if verbose : print ('AT+SQNWL="sqndcc" returned {}' .format (response ))
463
+ self .__serial .read (100 )
464
+
465
+ if verbose : print ("Sending AT+CFUN=4" )
466
+ self .__serial .write (b'AT+CFUN=4\r \n ' )
467
+ response = self .read_rsp (size = 100 )
468
+ if verbose : print ("AT+CFUN=4 returned {}" .format (response ))
469
+ self .__serial .read (100 )
470
+
471
+ if not (load_fff or mtools ):
446
472
self .__serial .write (b"AT+SMSWBOOT=3,1\r \n " )
447
473
resp = self .read_rsp (100 )
448
474
if debug : print ('AT+SMSWBOOT=3,1 returned: {}' .format (resp ))
@@ -465,6 +491,23 @@ def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_f
465
491
self .wait_for_modem ()
466
492
self .__serial .write (b"AT\r \n " )
467
493
494
+ if verbose : print ("Sending AT+CFUN=4" )
495
+ self .__serial .write (b'AT+CFUN=4\r \n ' )
496
+ response = self .read_rsp (size = 100 )
497
+ if verbose : print ("AT+CFUN=4 returned {}" .format (response ))
498
+
499
+ if verbose : print ("Sending AT+SMLOG?" )
500
+ self .__serial .write (b'AT+SMLOG?\r \n ' )
501
+ response = self .read_rsp (size = 100 )
502
+ if verbose : print ("AT+SMLOG? returned {}" .format (response ))
503
+
504
+ if verbose : print ('Sending AT+FSRDFILE="/fs/crashdump"' )
505
+ self .__serial .write (b'AT+FSRDFILE="/fs/crashdump"\r \n ' )
506
+ response = self .read_rsp (size = 100 )
507
+ if verbose : print ('AT+FSRDFILE="/fs/crashdump" returned {}' .format (response ))
508
+ self .__serial .read ()
509
+
510
+
468
511
else :
469
512
self .__serial .read (100 )
470
513
if debug : print ('Entering recovery mode' )
@@ -494,10 +537,6 @@ def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_f
494
537
print ('Starting STP ON_THE_FLY' )
495
538
496
539
self .__serial .read (100 )
497
- if verbose : print ("Sending AT+CFUN=4" )
498
- resonse = self .__serial .write (b'AT+CFUN=4\r \n ' )
499
- if verbose : print ("AT+CFUN=4 returned {}" .format (response ))
500
- self .__serial .read (100 )
501
540
502
541
if load_fff :
503
542
if debug : print ("Sending AT+SMSTPU" )
@@ -676,7 +715,15 @@ def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_f
676
715
time .sleep (0.5 )
677
716
678
717
if 'success' in sqnup_result :
718
+ if verbose : print ('Sending AT+SQNSUPGRADENTF="success"' )
679
719
self .__serial .write (b"AT+SQNSUPGRADENTF=\" success\" \r \n " )
720
+ resonse = self .read_rsp (100 )
721
+ if verbose : print ('AT+SQNSUPGRADENTF="success" returned {}' .format (response ))
722
+ time .sleep (.25 )
723
+ if verbose : print ('Sending AT+FSRDFILE="/fs/crashdump"' )
724
+ self .__serial .write (b'AT+FSRDFILE="/fs/crashdump"\r \n ' )
725
+ resonse = self .read_rsp (100 )
726
+ if verbose : print ('AT+FSRDFILE="/fs/crashdump" returned {}' .format (response ))
680
727
self .__serial .read ()
681
728
return True
682
729
elif sqnup_result is None :
@@ -718,7 +765,7 @@ def wakeup_modem(self, baudrate, port, max_try, delay, debug, msg='Attempting AT
718
765
count = 0
719
766
if msg is not None :
720
767
if debug :
721
- print (msg + 'with baudrate {} ' .format (baudrate ))
768
+ print (msg + ' [{}] ' .format (baudrate ))
722
769
else :
723
770
print (msg )
724
771
@@ -808,7 +855,7 @@ def success_message(self, port=None, verbose=False, debug=False):
808
855
print ("Here is the current firmware version:\n " )
809
856
self .show_info (port = port , verbose = verbose , debug = debug )
810
857
811
- def upgrade (self , ffile , mfile = None , baudrate = 921600 , retry = False , resume = False , debug = False , pkgdebug = False , verbose = False , load_fff = True , load_only = False ):
858
+ def upgrade (self , ffile , mfile = None , baudrate = 921600 , retry = False , resume = False , debug = False , pkgdebug = False , verbose = False , load_fff = True , load_only = False , mtools = False ):
812
859
success = True
813
860
if not retry and mfile is not None :
814
861
if resume or self .__check_br (br_only = True , verbose = verbose , debug = debug ):
@@ -833,7 +880,7 @@ def upgrade(self, ffile, mfile=None, baudrate=921600, retry=False, resume=False,
833
880
print ('Unable to upgrade bootrom.' )
834
881
if debug : print ('Success2? {}' .format (success ))
835
882
if success :
836
- if self .__run (file_path = ffile , resume = True if mfile is not None else resume , baudrate = baudrate , direct = False , debug = debug , pkgdebug = pkgdebug , verbose = verbose , load_fff = False if mfile else load_fff ):
883
+ if self .__run (file_path = ffile , resume = True if mfile is not None else resume , baudrate = baudrate , direct = False , debug = debug , pkgdebug = pkgdebug , verbose = verbose , load_fff = False if mfile else load_fff , mtools = mtools ):
837
884
if self .__check_br (verbose = verbose , debug = debug ):
838
885
self .__run (bootrom = True , debug = debug , direct = False , pkgdebug = pkgdebug , verbose = verbose , load_fff = True )
839
886
self .success_message (verbose = verbose , debug = debug )
@@ -925,6 +972,7 @@ def run(ffile, mfile=None, baudrate=921600, verbose=False, debug=False, load_fff
925
972
print_welcome ()
926
973
retry = False
927
974
resume = False
975
+ mtools = False
928
976
sqnup = sqnsupgrade ()
929
977
if sqnup .check_files (ffile , mfile , debug ):
930
978
state = sqnup .detect_modem_state (debug = debug , hangup = hangup )
@@ -937,11 +985,13 @@ def run(ffile, mfile=None, baudrate=921600, verbose=False, debug=False, load_fff
937
985
print ('Your modem is in recovery mode. Please specify updater.elf file' )
938
986
reconnect_uart ()
939
987
sys .exit (1 )
940
- elif state == 4 or state == 1 :
988
+ elif state == 4 :
941
989
resume = True
990
+ elif state == 1 :
991
+ mtools = True
942
992
elif state == - 1 :
943
993
detect_error ()
944
- sqnup .upgrade (ffile = ffile , mfile = mfile , baudrate = baudrate , retry = retry , resume = resume , debug = debug , pkgdebug = False , verbose = verbose , load_fff = load_fff )
994
+ sqnup .upgrade (ffile = ffile , mfile = mfile , baudrate = baudrate , retry = retry , resume = resume , debug = debug , pkgdebug = False , verbose = verbose , load_fff = load_fff , mtools = mtools )
945
995
reconnect_uart ()
946
996
947
997
def uart (ffh_mode = False , mfile = None , color = 0x050505 , verbose = False , debug = False , hangup = True ):
0 commit comments