We actually had similar problem with HL8548, with no hardware issue involved…
in production, we change the default UART1 speed to 460800 baud, then check the module properly understood the command by reading AT+IPR? and finally properly turn off the module using AT+CPOF, before cutting the module’s supply.
In spite of this, we were reported from the field that some MODEM do not communicate @ 460800 baud, but falling back the setting to 115200 baud makes the communication working. It is like the module did not save the last baudrate! Did anyone meet this issue? How to fix this annoying behavior?
We wound up just sending AT+IPR setting followed by trying to communicate with the module at the new rate by just sending AT and waiting for the OK response. If it fails after a few seconds, we then go back and try again.
After that, the module is left on for another few seconds (prior to programming our main application). That appears to work.
To save time, we incorporated this change into an image for updating the 8548 Firmware image.
So, it seems your are updating the modules FW? We don’t do such thing! Only thing we do once the module is tested is changing the default baudrate to 460800 using +IPR=460800 and then set +KSYNC=2,7 (so that network status is reported on a LED).
We do test back the proper execution of the +IPR command by testing at the new baudrate +IPR?
If the answer is +IPR: 460800, +CPOF is sent and power supplies are turned of.
Despite this double-check, some customer reported non-communicating MODEM for which, changing the Host baudrate @ 115200 fixes the problem… (it happened on ~2% of the products we sold)
We had to do a firmware update as we send large TCP packets from time to time and 5.5.23 fixed an issue where the module would reset from 5.5.14. Ever since doing it with some test code that just flip-flops between the two bauds, it has worked 100%.
The key it seemed was to just ping-pong from 115200 to the desired rate and checking if a valid response came from the new rate. Then keeping the module on for a period of time.