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)?

  • 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. 

  • Hi again. 

    Looking at the link control (lte_lc.c) it seems the network registration is not disabled (AT+CEREG=0) in the method w_lte_lc_init_and_connect(). Is it correct to assume the modem will continue to send notifications, preventing the MCU to go into deep sleep? Is is kind of consistent with the tests I did where I saw the firmware come out of k_cpu_idle(); ar regular intervals (~20 seconds). 

    I saw somewhere on the forum a trick to disable rx/uart? Could this be related?

    I am trying to enable disable the PSM/eDRX when I trigger a FOTA update. Is it enough to send AT+CPSMS= or do I need to send AT+CFUN=0, AT+CPSMS= and then AT+CFUN=1?

  • Seems iBasis does not support PSM. At least according to https://devzone.nordicsemi.com/f/nordic-q-a/48641/psm-tau-and-at/196848#196848

    I made some tests and none of the PSM parameters I tried worked:

    [00:00:07.919,403] <dbg> at_cmd.at_write: Sending command AT+CEREG=5
    [00:00:07.926,544] <dbg> at_cmd.socket_thread_fn: Received command: OK
    
    [00:00:07.939,758] <dbg> at_cmd.at_write: Sending command AT+CPSMS=1,,,"00000001",
    [00:00:07.949,005] <dbg> at_cmd.socket_thread_fn: Received command: OK
    
    [00:00:09.968,811] <dbg> at_cmd.at_write: Sending command AT+CEREG?
    [00:00:09.976,043] <dbg> at_cmd.socket_thread_fn: Received command: +CEREG: 5,5,"7789","01039801",7,,,"11100000","11100000"
    
    [00:00:11.000,030] <dbg> at_cmd.at_write: Sending command AT+CPSMS=1,,,"00100001",
    [00:00:11.016,906] <dbg> at_cmd.socket_thread_fn: Received command: OK
    
    [00:00:13.031,280] <dbg> at_cmd.at_write: Sending command AT+CEREG?
    [00:00:13.046,875] <dbg> at_cmd.socket_thread_fn: Received command: +CEREG: 5,5,"7789","01039801",7,,,"11100000","11100000"
    
    [00:00:14.070,343] <dbg> at_cmd.at_write: Sending command AT+CPSMS=1,,,"01000001",
    [00:00:14.087,127] <dbg> at_cmd.socket_thread_fn: Received command: OK
    
    [00:00:16.101,593] <dbg> at_cmd.at_write: Sending command AT+CEREG?
    [00:00:16.117,340] <dbg> at_cmd.socket_thread_fn: Received command: +CEREG: 5,5,"7789","01039801",7,,,"11100000","11100000"
    
    [00:00:17.140,655] <dbg> at_cmd.at_write: Sending command AT+CPSMS=1,,,"01100001",
    [00:00:17.157,501] <dbg> at_cmd.socket_thread_fn: Received command: OK
    
    [00:00:19.171,905] <dbg> at_cmd.at_write: Sending command AT+CEREG?
    [00:00:19.187,652] <dbg> at_cmd.socket_thread_fn: Received command: +CEREG: 5,5,"7789","01039801",7,,,"11100000","11100000"
    
    [00:00:20.210,998] <dbg> at_cmd.at_write: Sending command AT+CPSMS=1,,,"10000001",
    [00:00:20.219,635] <dbg> at_cmd.socket_thread_fn: Received command: OK
    
    [00:00:22.234,436] <dbg> at_cmd.at_write: Sending command AT+CEREG?
    [00:00:22.250,030] <dbg> at_cmd.socket_thread_fn: Received command: +CEREG: 5,5,"7789","01039801",7,,,"11100000","11100000"
    
    [00:00:23.273,468] <dbg> at_cmd.at_write: Sending command AT+CPSMS=1,,,"10100001",
    [00:00:23.281,951] <dbg> at_cmd.socket_thread_fn: Received command: OK
    
    [00:00:25.296,905] <dbg> at_cmd.at_write: Sending command AT+CEREG?
    [00:00:25.312,561] <dbg> at_cmd.socket_thread_fn: Received command: +CEREG: 5,5,"7789","01039801",7,,,"11100000","11100000"
    
    [00:00:26.335,968] <dbg> at_cmd.at_write: Sending command AT+CPSMS=1,,,"11000001",
    [00:00:26.353,820] <dbg> at_cmd.socket_thread_fn: Received command: OK
    
    [00:00:28.367,218] <dbg> at_cmd.at_write: Sending command AT+CEREG?
    [00:00:28.374,450] <dbg> at_cmd.socket_thread_fn: Received command: +CEREG: 5,5,"7789","01039801",7,,,"11100000","11100000"
    
    [00:00:29.398,468] <dbg> at_cmd.at_write: Sending command AT+CPSMS=1,,,"11100001",
    
    [00:00:31.429,718] <dbg> at_cmd.at_write: Sending command AT+CEREG?
    [00:00:31.436,950] <dbg> at_cmd.socket_thread_fn: Received command: +CEREG: 5,5,"7789","01039801",7,,,"11100000","11100000"

    Are you in contact with iBasis? Do you know if they are planning on supporting the PSM/eDRX mode soon?

  • AFAIK, iBasis does not support PSM mode in Norway. You'll need to try with a Telenor or Telia SIM card instead in Norway.

Related