HL7800 sometimes not entering PSM mode


I am entering PSM hibernate mode by following this schema inside my application:

AT+KSLEEP=1,2 // once at start-up

When my device wakes up for next transmission, WAKEUP pin is pulled HIGH and I also give the command AT+CPSMS=0 just in case. The device transmits data.

After data transmission I give the following command

then I wait for +CEREG: 4 and after that I pull the WAKEUP pin LOW.

then we go back to STEP 1 and so on…

This works 95% of the time but sometimes the modem will not go to hibernation after STEP 3 and current consumption is close to 40mA.

Here is a log of the CEREG replies that would indicate that this CEREG: 4 is not an out of coverage indication:

ENTERING MODEM HIBERNATION... {OK}  {+CEREG: 1,5} . {+CEREG: 1,5} . {+CEREG: 1,5} . {+CEREG: 1,5} . {+CEREG: 1,5} . {+CEREG: 1,5} . {+CEREG: 1,5} . {+CEREG: 1,5} . {+CEREG: 1,5} . {+CEREG: 1,5} . {+CEREG: 1,5} . {+CEREG: 1,5} . {+CEREG: 1,5} . {+CEREG: 1,4} OK

What am I doing wrong?
firmware version is


Is this the correct procedure at least?


do you have USB connected?
Can you disconnect the UART fully during the sleep mode?

I have one experience that if I type some characters in UART, it can help to go to sleep mode, not sure if it is the same case as yours.

Hi @jyijyi,

UART COM port is being disabled after CEREG: 1,4 indication and after I pull the WAKEUP pin LOW.

I am not trying to go to sleep mode but into hibernation.


you can try to type some character in UART and see if that helps when it cannot go to sleep mode.

Typing characters in UART does not help.

The modem randomly refuses to go to hibernation still and when that happens the LED I have connected (with the command AT+KSYNC=2,2) stays ON after CREG: 1,4 and the modem does not respond to AT commands.

Any more ideas?

Is it vgpio pin keeping high?

When that happens then yes, VGPIO is high at 1.8V

Also, when it doesn’t enter PSM mode, toggling the WAKEUP pin doesn’t help either.


One more thing, it seems that the modem might be getting stuck as the UART1_CTS pin stays HIGH when this strange behaviour occurs. That could be useful though to identify in software when this happens.