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

NRF9160 Low power

Hi, I am strugling to get the power comsumption down to the number I have been reading on this forum. I followed the instruction of the dev kit manual. When measuring the current, the switch is in NRF only position.

Now, this blog post claims 7µA. The best I have achieved to this day is ~500µA using the sample here.

As far as I understand, the power on the 9160 is automatically handled by the ship (PMU?). That means very little is needed to lower current appart from not making the CPU active.

I did try to load a firmware that does nothing; A while loop with k_cpu_idle() with NRF_UARTE0_NS->TASKS_STOPRX = 1 to disable the UARTE rx and I am still seeing a lot of power drawn (order of mA). I also suspect that the cpu get awaken every 5 seconds by something.

Are you able to measure such a low power consumption internally with the latest firmware (the modem fw and dk are outdated)? 

If so, do you have any recommendation as to how to pinpoint where the power is used (gdb, probing pins.. etc)?

Parents
  • Have you taken a look at this blog post yet? Included is a project file, which should work out of the box on the 91 DK. What kind of SIM card are you using? Have you set PSM mode? This DevZone case could be helpful.

  • Hi Bjørn,

    Turns out the nb-iot mode doesn't work at all. I tested the same parameters as in the sample and then the sample itself. I was able to use nb-iot mode before upgrading the modem fw to 1.0.0. I did not investigate further since lte-m worked fine.

    Is there a way to diagnose why the modem won't connect in nb-iot mode? Could it be that the tower won't accept the period that is requested?

    Is is correct to assume that I could use lte-m with power saving mode and achieve low power usage as well? The difference is that the 91 won't be reachable at all right?

    I managed to measure 20uA without turning on the modem and calling k_cpu_idle in a loop. That's still 480 uA from what I am measuring in our application firmware. I'll make some test enabling/disabling the PWM modules and keep you posted.

    Hadrien

  • Hi Hadrien,

    iBasis does not support nB-IoT here in Norway. You will either need to use a Telia or Telenor SIM card in Norway. 

    Hadrien Kohl said:
    Is is correct to assume that I could use lte-m with power saving mode and achieve low power usage as well? The difference is that the 91 won't be reachable at all right?

     Yes, you can use LTE-M1 or nB with PSM mode. Just make sure to choose an interval >= 10 minutes. I would try ten minutes first The network might not approve of all intervals, so be sure to use the AT+CEREG=5 & then AT+CEREG? to see whether the PSM intervals have been set correctly.

    Hadrien Kohl said:
    I managed to measure 20uA without turning on the modem and calling k_cpu_idle in a loop. That's still 480 uA from what I am measuring in our application firmware.

     Did you use the blog post example app to test with? Do you have logging enabled in your app? Take a look at the blog post one more time & make sure you have done what is stated there.

Reply
  • Hi Hadrien,

    iBasis does not support nB-IoT here in Norway. You will either need to use a Telia or Telenor SIM card in Norway. 

    Hadrien Kohl said:
    Is is correct to assume that I could use lte-m with power saving mode and achieve low power usage as well? The difference is that the 91 won't be reachable at all right?

     Yes, you can use LTE-M1 or nB with PSM mode. Just make sure to choose an interval >= 10 minutes. I would try ten minutes first The network might not approve of all intervals, so be sure to use the AT+CEREG=5 & then AT+CEREG? to see whether the PSM intervals have been set correctly.

    Hadrien Kohl said:
    I managed to measure 20uA without turning on the modem and calling k_cpu_idle in a loop. That's still 480 uA from what I am measuring in our application firmware.

     Did you use the blog post example app to test with? Do you have logging enabled in your app? Take a look at the blog post one more time & make sure you have done what is stated there.

Children
  • Ok, that makes sense. Wasnt it supported at some point in the past?

    Shouldn't the connection fail at some point? I am using the lte_ functions to connect. 

    I will try the PSM and measure again. 

    I did disable serial and trace options both in the mcuboot and spm modules and my application (is there a way to do so via the prj.conf by the way? Right now I have to use mcuboot_menuconfig and spm_menuconfig each time). 

    Maybe the flash access of the mcuboot is drawing current after the switch to spm/app?

    I saw the nrf_pwm module has some power management hooks already. Is the whole device power management feature something you are still working on? I am asking because I could try to implement some of it myself.

    Appart from PWM, do you have current consumption values for the different modules of the chip?

    Thank you for your help.

  • Hadrien Kohl said:
    Wasnt it supported at some point in the past?

      Not sure. Maybe, but I doubt it.

    Hadrien Kohl said:
    Shouldn't the connection fail at some point?
     No, because you can still have a connection without PSM mode on. You just won't get a GPS position without PSM mode however.
    Hadrien Kohl said:
    I did disable serial and trace options both in the mcuboot and spm modules and my application (is there a way to do so via the prj.conf by the way?
     Yes, set CONFIG_SERIAL=n. See this blog post for more info. Are you referring to a modem trace or just regular app loggging?
    Hadrien Kohl said:
    Maybe the flash access of the mcuboot is drawing current after the switch to spm/app?
     I doubt it, but maybe.
    Hadrien Kohl said:
    Is the whole device power management feature something you are still working on?
    Not sure. I would ask your local Regional Sales Manager. 
    Hadrien Kohl said:
    Appart from PWM, do you have current consumption values for the different modules of the chip?
     Have you taken a look at the product specification for the nRF9160?
  • Hadrien Kohl said:
    Shouldn't the connection fail at some point?
     No, because you can still have a connection without PSM mode on. You just won't get a GPS position without PSM mode however.

    I meant when connecting using nb-iot and the iBasis SIM. I never get out of the lte_lc_init_and_connect() function. I think I've let it run overnight. 

    Regarding requesting eDRX or PSM, I suppose it would be possible to get feedback from the modem right? I'd expect the lte_lc_psm_req() and lte_lc_edrx_req() to signal that they failed the negociation. I could give it a go. Are you open to PRs?

    Hadrien Kohl said:
    I did disable serial and trace options both in the mcuboot and spm modules and my application (is there a way to do so via the prj.conf by the way?
     Yes, set CONFIG_SERIAL=n. See this blog post for more info. Are you referring to a modem trace or just regular app loggging?

     

    I am using spm and mcuboot. I'd like to disable the  CONFIG_SERIAL option in those from my application.

    I am refering to BSD_TRACE. I have read that this could help.

    Hadrien Kohl said:
    Appart from PWM, do you have current consumption values for the different modules of the chip?
     Have you taken a look at the product specification for the nRF9160?

    I'll give it another look. 

  • Hadrien Kohl said:
    Regarding requesting eDRX or PSM, I suppose it would be possible to get feedback from the modem right? I'd expect the lte_lc_psm_req() and lte_lc_edrx_req() to signal that they failed the negociation. I could give it a go. Are you open to PRs?

     Yes, take a look at the CEREG function for that after you have set the PSM mode. If you set CEREG to 4, you should be able to see the active time & periodic tau for PSM.  Yes, we are open to PRs.

Related