Clarifications on PSM functions

Hello Dev Zone,

I am experimenting on a nRF9160DK, and currently looking at power saving modes (PSM only).
The overall principle is pretty clear to me, but I have questions on the SDK functions.

From my understanding, UE can request TAU period and Active Time. The network then responds with the actual values to use.
Request from UE :      lte_lc_psm_param_set()
Response from network : lte_lc_psm_get() or in LTE callback

Does the negociation only occurs when PSM is actually enabled, by calling lte_lc_psm_req(true) ?
What if the network does not support the timing requested ? Or if the negociation result does not match my app needs ? Will the modem still go in PSM ?

Calling lte_lc_psm_req(true) will turn the modem in PSM mode. Is the change made immediatelly once the function returns ?

After calling lte_lc_psm_req(true), does the modem need to be placed in a a specific mode (like lte_lc_func_mode_set(LTE_LC_FUNC_MODE_OFFLINE) ) ?

To exit PSM, I only need to call lte_lc_psm_req(false) ? Is there an event indicating that when modem is ready ?


PSM is supported in my area, but I am aware that this is not the case everywhere. In this case, no big deal, turning OFF the modem is fine for my application.
Is there a way to know if PSM is supported during runtime ? Will simply lte_lc_psm_param_set() or lte_lc_psm_req() return false when not supported ?
Using this info, my firmware can then choose if it should go to PSM or turn OFF the modem.
This might sound like a basic question, I have actually no way to test this since PSM is supported here, and the documentation does not provide many info.


Thanks in advance.

Vincent

  • If you enable PSM, the modem enters the sleep mode after a quiet period, which is defined by an RRC (in)activity timer and the PSM activity timer (see GSMA Energy Efficiency for Mobile IoT the names of the timers seems to be changing slightly from document to document).

    The quiet period refers to "radio data messages", which may differ from application messages depending on the used protocol. e.g. "keep alive" messages usually keeps also the modem alive.

    Once you enable PSM with lte_lc_psm_req(true) the only thing your device needs to do is not the sent data. After the timers expires, the modem goes to sleep (with the exception of executing an HPPLMN search, if pending). No need for lte_lc_func_mode_set(LTE_LC_FUNC_MODE_OFFLINE) or something else. To wake up the modem, just send data.

    Using RAI may then also "short cut" these times, if it's possible to be used for the communication logic an supported by the network.

    > Is there a way to know if PSM is supported during runtime ? 

    AFAIK, the reported "active time" of -1 (<0) when PSM is enabled indicates, that PSM is not supported.

Related