We are currently trying to use the nrf9160 DK in order to test the LTE-M coverage & low-power capacity. We ran into some issues regarding the low-power measurement on the board :
- We are using the asset_tracker software on tags/v0.3.0 (on Segger Embedded Studio on Windows). We activated the flag "CONFIG_POWER_OPTIMIZATION_ENABLE=y" in order to use eDRX and PSM (PSM is the mode we want to test the most). When the board starts, we send packets to the nrfcloud via the "Switch 1" (it shows a "FLIP" message on the nrfcloud website each time we flip "Switch 1"). We are not sure that the PSM is correctly engaged.
- We disabled a UART parameter ("nRF UART nrfx drivers") in the "Project > Configure nrf Connect SDK Project" window.
- We have cut the SB44 link to avoid current leakage from U25.
- We supply the 5V voltage and GND through the P28 pins
- We measure the current with a multimeter connected to the P24 pins (the 2 pins far from the USB connector)
- We manage to send packets to the nrfcloud, with a current consumption fluctuating between around 1 mA and around 20 mA when PSM is enabled. This consumption is far higher than the 7 uA we expected in low-power mode.
- How can we ensure that the nrf9160 entered the PSM mode correctly and that the packets sent to the nrfCloud are sent during PSM mode?
- What could we do to reach <10 uA when using PSM mode ?
- We somehow reckon that the MCU inside the nrf9160 should also be put to sleep (WFI or another sleep mode), but we could not find any intel on how to do this either in the User Guide or in this forum. Is the Cortex-M33 put to sleep automatically when the PSM is activated (this would be surprising)?
Thank you very much for your help!
I am sorry for the delay.[Note that the FW is not quite completed with regards to power optimizations.]
That being said you should be able to reach a much lower current consumption than you are measuring.
First thing that needs to be modified is the secure_boot application.
Or directly modify the "prj.conf" file by setting:
The "prj.conf" file is located in the same folder as where the CMakeLists.txt is located:
[Build and flash the new secure_boot FW]
Regarding the Asset_tracker sample, it is not power optimized to the fullest, so there may be some peripherals/clocks running in the background.
I need more time to debug and look at this. I will update this case.
Since the asset_tracker is not yet power optimized, I would rather recommend you to use the simple_mqtt sample as a starting point.
The thing is that the PSM periods needs to be negotiated with the network, and also the idle eDRX periods:
1.use functions from the lte_link_control driver:
Function for requesting modem to use eDRX. lte_lc_edrx_req()
For configuring the PSM values, you can set the CONFIG_LTE_PSM_REQ_RPTAU and CONFIG_LTE_PSM_REQ_RAT in the prj.conf file or directly in the SES IDE.
For configuring the eDRX values, you can set the CONFIG_LTE_EDRX_REQ_ACTT_TYPE and CONFIG_LTE_EDRX_REQ_VALUE in the prj.conf file or directly in the SES IDE:
2. manually with AT+commands:
I would advise you to set the Power Saving Mode (PSM) via this AT-command and then set the requested Extended Discontinuous Reception (eDRX) via this AT-Command.
You can add this into your application similar to how it's done in this "simple_at" sample.
And when measuring the current you should avoid having UART and such enabled to avoid additional current consumption.
Thank you for your detailed answer.
We started again working on the nrf9160 DK these days. Our main goal remains the same: compiling a working example that regulary sends data to a server (mqtt or http or else could even be SMS) then goes to sleep in PSM mode between transmissions.
If such an example is published please do not hesitate to tell us where we can find it.
We tried using the mqtt_simple example as you said. We ran into some issues with the latest master branches (similar to what this ticket describes https://devzone.nordicsemi.com/f/nordic-q-a/43366/nrf9160-mqtt-example).
We are currently trying to get mqtt_simple example working, then we will be able to test the modifications you suggested (using lte_lc_psm_req() or the AT cmds).
Dear Erienne, did you happen to be successful with the above work? Can you share some details please.
Measuring PSM idle current on the nRF91 DK