To preface:
- Board: nRF9151DK
- nRF Connect SDK / Toolchain: 3.1.0
Hello,
I believe I found a bug regarding PSM (Power Save Mode). Specifically, you can't disable PSM once you enable it using KConfigs. FYI - I am using the LTE link control library so I have a bit more control and visibility into the connection states.
For example, I defined the following in my project:
CONFIG_NET_CONNECTION_MANAGER=n CONFIG_LTE_LINK_CONTROL=y CONFIG_LTE_LC_EDRX_MODULE=n CONFIG_LTE_LC_PSM_MODULE=y CONFIG_LTE_PSM_REQ=y CONFIG_LTE_PSM_REQ_RPTAU="00000110" # Requested Periodic Tracking Area Update (RPTAU) Interval: 1 hour CONFIG_LTE_PSM_REQ_RAT="00000000" # Requested Active Time (Time in RRC Idle state) - 0 (Don't need to listen) # Enable sleep notifications for logging / debugging purposes CONFIG_LTE_LC_MODEM_SLEEP_MODULE=y CONFIG_LTE_LC_MODEM_SLEEP_NOTIFICATIONS=y
This enables PSM as expected via AT+CPSMS=1 as seen in psm_req() located in nrf\lib\lte_link_control\modules\psm.c. In this scenario, PSM works as expected.
Now, if I want to disable PSM using the following KConfig:
CONFIG_NET_CONNECTION_MANAGER=n CONFIG_LTE_LINK_CONTROL=y CONFIG_LTE_LC_EDRX_MODULE=n CONFIG_LTE_LC_PSM_MODULE=n CONFIG_LTE_PSM_REQ=n CONFIG_LTE_PSM_REQ_RPTAU="00000110" # Requested Periodic Tracking Area Update (RPTAU) Interval: 1 hour CONFIG_LTE_PSM_REQ_RAT="00000000" # Requested Active Time (Time in RRC Idle state) - 0 (Don't need to listen) # Enable sleep notifications for logging / debugging purposes CONFIG_LTE_LC_MODEM_SLEEP_MODULE=y CONFIG_LTE_LC_MODEM_SLEEP_NOTIFICATIONS=y
I still see the modem entering PSM per the CONFIG_LTE_LC_MODEM_SLEEP_NOTIFICATIONS callback defined in my code, and by looking at the current consumption of the nRF9151 using a Power Profile Kit 2 (I see 2.7 uA once the modem enters RRC Idle state).
When you search for "AT+CPSMS" in the nRF Connect SDK, I find no references of it being set to 0, Ie, no "AT+CPSMS=0". Thus, it is not being explicitly disabled in the SDK when the PSM KConfigs are set to "=n".
Also, AT+CPSMS saves to NVM, so if you query AT+CPSMS? after powering on the modem, you will see that PSM is still enabled even though PSM KConfigs are disabled.
I think the SDK should be updated to explicitly disable PSM via AT+CPSMS if it is enabled but the KConfigs are disabled.
Please let me know if I am missing something otherwise that I may be doing wrong.
Thanks,
Derek