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

nRF9160 sleep current to high

Hi there,

I have been testing with the nrf9160 DK for a while now and I cant figure out how to get the device to sleep properly. I have been working with the asset_tracker example and made some modifications to send data to myself and left out any unused parts.

The lowest current draw is around 500 uA, measured on the nrf current measurement pins, which, is way to high. The datasheet shows that it is possible to get around 1~2 uA, which is what I need.

The device needs to be able to sleep for long periods of time, and only wake op on an external interrupt or RTC timer. Does anyone know how to get here? At this moment I am kind of stuck.

Thanks in advance.

Karst

Parents
  • I appear to be having the same issue as the original post with similar amounts of "more current then expected", even with SB44 cut. I cut SB45 after that in an attempt to entirely remove SW10 from the equation. I can make my own post if it's more appropriate for the dev forums or contact you guys directly, but I figure more attention on a shared issue may be better for getting a response.

    What I've done so far:

    I have two devkits, both are exhibiting the same behavior, though I did not cut SB45 or SW10 on the second board. I have enabled power optimization in the project settings, and have also removed all init and processes from the asset_tracking example except for the modem_configure, and I added a lte_lc_psm_req(true) that always goes off once after 30 seconds or so. I have a graphing power meter and can watch the initial power on TAU/connect and the subsequent eDRX pulses that show up until an RRC disconnect happens and the PSM should be taking over, but to no avail.

    I have a graphing current meter and can clearly see the eDRX pulses and the RRC release that should signal entry into PSM. I call k_cpu_idle() a could minutes into the example and then just let the program run. This doesn't seem to have made any real difference when compared to the current consumption between eDRX pulses, which seems a little odd to me. I've probed the SIM card power lines and clock during this PSM time and both are off for further confirmation I'm really in PSM mode.

    I'm powering the devkit off an external power supply connected to the +/- terminals of connector P24 as your link suggests, and I have nothing else plugged in during testing. 

  • I am measuing around ~12uA after disabling the UART in secure boot and running the power_measurements application that you have attached. The Asset Tracker is consuming a few mA with PSM enabled. As you mention, I suspect that example is not optimizaed/working for low power at this time. 

  • Thanks Bjorn,

    I can confirm that with disabling serial completely in secure_boot and then running your attached example, I can hit a very low power consumption.

    However, I have not been able to replicate the low power consumption when using the LTE modem in my own application. I have a few observations:

    -When PSM is enabled, I see power consumption bouncing to 2mA every few seconds. It does not appear to work as expected. This is across a wide range of PSM timer values.

    -When eDRX mode is enabled, I see power consumption drop significantly when idle (as compared to PSM mode). I am not hitting the same low value as your example which doesn't use the modem, but I see my power draw doesn't change much even if I turn the modem off. I suspect there is some unrelated CONFIG differences between enabled devices in my app and your example. I will dig into this further.

     Eric

  • Hi Eric,

    It seems that the 2 mA PSM power consumption could be the connected DRX (320 ms) mode that can be found in the PSM subsection in this link. Yes, please keep us updated if you manage to hit lower current numbers!

    Also, I could recommend using the example I sent as a base & add functionality to that example. Every now & then, I would measure the current. That way, you are hopefully able to debug what is leading to the sub-optimal current consumption.

  • Hi,

    I have tracked down a few leads by adding things back in:

    -CONFIG_BSD_LIBRARY_TRACE_ENABLED=n is critical to getting low power on an "empty" application that just calls k_cpu_idle(). This is apparently not the default.

    -Adding back in LTE connection (but nothing using it) shows very low uA-level power consumption when using eDRX mode. If I use PSM mode, it seems to idle at 1-2mA and never drops, even when timer should have long expired. I'm not sure how to interpret the power numbers listed in the link you sent regarding SIM on/off, etc. I don't seem to have control over any of this.

    -After creating a TCP socket and connect()'ing it, power consumption increases significantly to the couple hundred uA level, even with no traffic and CPU asleep.This does not go away even after the socket has been closed. It is not clear to me how the socket offloading mechanism works, but maybe this is activating some feature that prevents the CPU from going to sleep. This is preventing low power consumption in anything using TCP. Note that UDP-based traffic (like performing a DNS lookup) did not appear to cause this continuous power draw after thr activity has stopped.

    Eric

  • Hi Bjørn,

    Thank you for this code. When we use it on our nrf9160 DK we hit 23 uA (uart disabled in secure boot).

    This level of current consumption is pretty good, now we would like to test a mode where the device wakes up from this deep sleep mode (on a timer or a button push for test purposes) then send data over LTE-M in PSM mode then goes back to sleep (with the 23 uA consumption after sending the data).

    Is there a working example of this kind of behavior available?

    Thank you very much.

    Best,

    Étienne

Reply
  • Hi Bjørn,

    Thank you for this code. When we use it on our nrf9160 DK we hit 23 uA (uart disabled in secure boot).

    This level of current consumption is pretty good, now we would like to test a mode where the device wakes up from this deep sleep mode (on a timer or a button push for test purposes) then send data over LTE-M in PSM mode then goes back to sleep (with the 23 uA consumption after sending the data).

    Is there a working example of this kind of behavior available?

    Thank you very much.

    Best,

    Étienne

Children
Related