This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nRF9160 running Serial Lte Modem with External MCU - how to control sleep and active modes

Hi 

I have my custom board with nRF9160 module running Serial Lte Modem application, and an external MCU talks to nRF9160 over UART and access using AT commands. The custom board works fine as expected using the AT commands when using over PC serial port. .

Now when running with external MCU, I would like to put nRF9160 to sleep when not using, and wake up as per requirement.  What is the best approach using AT commands? Can someone help? may be provide sample commands. 

Thanks 

  • Hi!

    Have you seen the SLM proprietary command #XSLEEP? Try AT#XSLEEP for entering Idle mode and AT#XSLEEP=1 for sleep mode. Sending a new command after this will wake the device up.

    Best regards,

    Heidi

  • Hi 

    Thanks for your help on SLM prop commands. 

    So according to the document (here), if in idle mode, it will go to active mode just by sending AT command. 

    But for the sleep mode, it need a GIPIO trigger. I would prefer it to bein sleep. So any GPIO can be used for the wake up trigger? How can I configure that?

    And are there expected current consumptions values for both idle and sleep mode available to compare with? my custom board has just the nRF9160 module with controlled power chip for GPS, but that is not in use for this test run, so it is only nRF9160 module only. 

    Thank you 

  • HI 

    I ran some tests,

    1. when I send command AT#XSLEEP=0, it goes into the idle mode, and the current consumption of the module seems to be lower than 10uA (I can't switch to the lower current measuring range - since if I switch to lower measuring range of 600uA, the loop gets disconnected and resets nRF9160, I need to get the power profiler).  And when the module is in idle mode, if I send any command, it just does not respond at all, I have to reset to bring it up and running.

    2. when I send command AT#XSLEEP=1, it goes into sleep mode, with current consumption lower than 10uA. And I cannot bring it out into active mode by sending any command - same as above, I have to reset to bring it up and running. 

    3. After the running UDP data send, if I do functions off by sending command AT+CFUN=0, the current is around 0.7mA 

    further questions:

    1. I think we can still use it as putting it to idle mode since the current consumption is lower than 10uA. Is there any specific command that we need to bring it out of idle mode? 

    2. Once the module is out of idle mode, would it need to re-establish network search? that would of course use some time and current. 

    3. There is another option we need to examine - how can we use PSM mode? we are using simple UDP connection and send a few bytes of data in each transmit cycle, and normal sleep time would be around 15min. 

    4. we can also implement the wake up through GPIO trigger, but that can be done only after PCB changes. But before that we would like to test this setup, and see if we can use cycle of Active->sendData->idlemode->sleeep->Active ..

    would you please help.. 

    thanks

  • would you please provide update on this? 

    Thank you!

  • Hi! Sorry about the late reply, I've been on vacation. 

    1. If you can't wake it up when in Idle mode by sending commands, that goes against what is documented. I'll look into that.

    2. The application and the modem runs asynchronously, so even if the application is in Idle mode, the modem can still handle an LTE connection and will not detach from the network.

    3. PSM mode is a great way of decreasing the application's current consumption. You can use the AT command +CPSMS to enable and disable PSM.

Related