The Best practise to achive ultra low power consumption for mobile NRF9160 device

Hi.

1. Before asking my main question, first I would like to ask that is this white paper still valid to achieve low power consumption for up-to-date nrf9160(b1) with ncs2.2.0 and modem fw 1.3.4 because this blog writing has been created in 2019. So I performed all the steps explained there but I couldn't achieve the same result.

2. I have measured the current consumption on the custom board with the modem on and off, and I am confused because when the modem was on it has lower current consumption than the modem was off. How can it be possible? to turn off the modem, sequently, I am invoking these two funcs. lte_lc_offline(); and lte_lc_power_off(); on the custom atv2. The reason for turning off the modem I thought it might be more power efficient because I am going to publish data once a day, and usually board will be out of lte coverage.

3. Could you please clarify this CONFIG_LTE_NETWORK_USE_FALLBACK config? I was expecting if there is no nbiot coverage, the modem would go to search lte_m coverage but it didn't work like that.

here are my configs for that.

# LTE link control
CONFIG_LTE_AUTO_INIT_AND_CONNECT=n
CONFIG_LTE_NETWORK_MODE_NBIOT=y
CONFIG_LTE_NETWORK_USE_FALLBACK=y
CONFIG_LTE_NETWORK_TIMEOUT=300

Should I have added also CONFIG_LTE_NETWORK_MODE_LTE_M?

4. The board is usually out of network coverage. So I observed that the board has higher current consumption than either modem is turned off or in the psm mode even though lte_network_timeout happens and stops searching,(the device has in psm mode 1.25mA, with the modem is turned off:2.1mA and after lte network_timeout 3.6mA in this case what is your suggestion to achieve ultra-low power consumption? is there any discussion about this point?

Edit:  Note that, All tests were performed with overlay-low-power.conf configs and CONFIG_SERIAL=n in C:\ncs\v2.2.0\nrf\samples\spm

Parents
  • Hi,

    1. Before asking my main question, first I would like to ask that is this white paper still valid to achieve low power consumption for up-to-date nrf9160(b1) with ncs2.2.0 and modem fw 1.3.4 because this blog writing has been created in 2019. So I performed all the steps explained there but I couldn't achieve the same result.

    The main points of the blog post is still valid. However, some of the details are outdated. E.g. you shouldn't use the old modem FW version that it refers to, and newer DK versions comes with the solder bridge already cut, and a jumper that must be removed instead.

    But, we have an updated version of that blog post here:  Getting started with current measurements on the nRF9160

    It is probably better to use that one, than the old version.

    2. I have measured the current consumption on the custom board with the modem on and off, and I am confused because when the modem was on it has lower current consumption than the modem was off. How can it be possible? to turn off the modem, sequently, I am invoking these two funcs. lte_lc_offline(); and lte_lc_power_off(); on the custom atv2. The reason for turning off the modem I thought it might be more power efficient because I am going to publish data once a day, and usually board will be out of lte coverage.

    That sounds strange...

    Can you share the current profiles? They can usually give a pretty good hint about what is running or drawing power.

    As for turning the modem off vs. PSM: You should do some measurements with both approaches. The idle current is a bit higher in PSM, but it is more "expensive" to wake up and reattach to the network when the modem has been completely turned off. So you need to check what gives you the lowest total power draw in your use case.

    3. Could you please clarify this CONFIG_LTE_NETWORK_USE_FALLBACK config? I was expecting if there is no nbiot coverage, the modem would go to search lte_m coverage but it didn't work like that.

    If you configure it to use NB-IoT, and enables the fallback mechanism in the lte_lc library, the library will start a timer when it starts searching for a network.

    If the modem hasn't attached to a network before the NETWORK_TIMEOUT is reached, the library will turn the modem off, and change the system mode to LTE-M (or NB-IoT if you started with LTE-M).

    But, if you are using modem FW v1.3.x, the modem can support both system modes at the same time, which means that you don't really need the lte_lc fallback mechanism anymore. See the AT command documentation for more information: https://infocenter.nordicsemi.com/topic/ref_at_commands/REF/at_commands/mob_termination_ctrl_status/xsystemmode_set.html

    Best regards,

    Didrik

  • Hi  thanks for your quick reply,

    But, we have an updated version of that blog post here:  Getting started with current measurements on the nRF9160

    I also read this post as well, But I need to have more work on this, I'll update this post when I fully test all instructions in that post.

    Can you share the current profiles?

     Sure I'll do it asap.

    They can usually give a pretty good hint about what is running or drawing power.

    Absolutely you are right, its really handy.

    So you need to check what gives you the lowest total power draw in your use case.

    Yes, I did, actually there is a major reason for me to go by turning off the modem, which is depending on a lte coverage. So if there is no lte coverage the device doesn't go the psm mode according to my current measurement tests and that causes more power consumption.

    3. Could you please clarify this CONFIG_LTE_NETWORK_USE_FALLBACK config? I was expecting if there is no nbiot coverage, the modem would go to search lte_m coverage but it didn't work like that.

    If you configure it to use NB-IoT, and enables the fallback mechanism in the lte_lc library, the library will start a timer when it starts searching for a network.

    If the modem hasn't attached to a network before the NETWORK_TIMEOUT is reached, the library will turn the modem off, and change the system mode to LTE-M (or NB-IoT if you started with LTE-M).

    But, if you are using modem FW v1.3.x, the modem can support both system modes at the same time, which means that you don't really need the lte_lc fallback mechanism anymore. See the AT command documentation for more information:

    I was using these configs below to set network mode , which I think you meant these configs as well

    LTE_NETWORK_MODE_LTE_M_NBIOT
    CONFIG_LTE_NETWORK_MODE_LTE_M_NBIOT=y
    CONFIG_LTE_MODE_PREFERENCE_NBIOT_PLMN_PRIO=y

    But if I use this config 

    CONFIG_LTE_NETWORK_MODE_LTE_M_NBIOT
    and if there is no lte and nbiot coverage and then timeout happens but there is no timeout handling mechanism like fallback config has to put modem offline mode. 
    if (IS_ENABLED(CONFIG_LTE_NETWORK_USE_FALLBACK) &&
    			    (tries > 0)) {
    				if (sys_mode_target == sys_mode_preferred) {
    					sys_mode_target = sys_mode_fallback;
    				} else {
    					sys_mode_target = sys_mode_preferred;
    				}
    
    				err = lte_lc_func_mode_set(LTE_LC_FUNC_MODE_OFFLINE);
    				if (err) {
    					err = -EFAULT;
    					goto exit;
    				}
    
    				LOG_INF("Using fallback network mode");
    			} else {
    				err = -ETIMEDOUT;
    			}
    And I observed the highest current consumption of ~3.6mA in this case if there is no network coverage. Here i tried to explain this case. So What are your suggestion and nordic teams' suggestion for this case?
    4. The board is usually out of network coverage. So I observed that the board has higher current consumption than either modem is turned off or in the psm mode even though lte_network_timeout happens and stops searching,(the device has in psm mode 1.25mA, with the modem is turned off:2.1mA and after lte network_timeout 3.6mA in this case what is your suggestion to achieve ultra-low power consumption? is there any discussion about this point?
    Thank you, Kind regards
  • zsn said:
    So What are your suggestion and nordic teams' suggestion for this case?

    If you use the lte_lc library in blocking mode, you can set CONFIG_LTE_NETWORK_TIMEOUT to however long you want the modem to search for a network, and if lte_lc_connect() (or _init_and_connect()) returns -ETIMEDOUT, you can turn the modem offline.

    Alternatively, you can do the same in the application by using the lte_lc library asynchronously. You can then register an event handler with the library, which will be called when the modem connects to a network. In the handler, you can then give a semaphore, which you are waiting for with a timeout in your application. If it times out, you can turn off the modem.

    Depending on how important it is for you to find a network as fast as possible, compared to the power consumption, you can also just leave the modem on (though in this case you should use the lte_lc library asynchronously to make sure you are notified when the modem connects to a network), and possibly use the %PERIODICSEARCHCONF AT command to tune how often the modem searches for a network.

    zsn said:
    4. The board is usually out of network coverage. So I observed that the board has higher current consumption than either modem is turned off or in the psm mode even though lte_network_timeout happens and stops searching,(the device has in psm mode 1.25mA, with the modem is turned off:2.1mA and after lte network_timeout 3.6mA in this case what is your suggestion to achieve ultra-low power consumption? is there any discussion about this point?

    I know I didn't answer this question, but I want to wait until I can see the power profile from question 2. I have a feeling that it is connected.

  • Hi  , id like to use this thread to ask a power consumption-related question, Currently, I have a 1.8V supply for the VDD_GPIO and 3.3V for the VDD1-2. The question is that, When I turned off the modem I  have really low power consumption on the 3.3V side i can ignore for now, but on the contrary, on the VDD_GPIO of 1.8V I have 1.20mA consumption, is that normal? So I just wanted to reduce it and thought the best way to do it, turning off the gpio related peripherals and everything during sleep time, I do not need to UART Comms and anything except I only need one gpio to interrupt to wake up, So I tried to turn off all peripherals which I use with these commands below : but these are not working for me: what am I missing?

    I followed these threads but they didn't work for me:

    https://devzone.nordicsemi.com/f/nordic-q-a/51446/disabling-enabling-peripherals-at-runtime-on-nrf91

    I am using I2C1, spi2 and sp3 as peripherals to comms with sensors, UARTE is as the uart console,

    NRF_TWIM1_NS->ENABLE = 0;
    NRF_UARTE0_NS->ENABLE = 0;
    NRF_SPIM2_NS->ENABLE = 0;
    NRF_SPIM3_NS->ENABLE = 0;

    and also I have these configs in child_image/b0.conf, mcuboot.conf, secure_boot.conf, spm.conf

    and app prj.conf

    # Disable serial interface.
    CONFIG_SERIAL=n
    
    # Disable UART console.
    CONFIG_UART_CONSOLE=n
    
    # Disable event logging.
    CONFIG_APP_EVENT_MANAGER_SHOW_EVENTS=n
    
    # Disable AT host library.
    CONFIG_AT_HOST_LIBRARY=n
    
    # Disable logging
    CONFIG_LOG=n
    
    CONFIG_SECURE_BOOT_DEBUG=n

    and just wanted to see the power consumption differences I even try to turn off the regulator by using this code 

    NRF_REGULATORS_NS->SYSTEMOFF = REGULATORS_SYSTEMOFF_SYSTEMOFF_Msk;
    but there was no difference. Could you please help me on how to achieve deep sleep functionality with one gpio interrupt pin to wake up, or if there are any threads to follow up to put my device to deep sleep and use only one gpio pin to wake up in terms of reducing power consumption?
    Thanks, Kind regards
  • Hi, and sorry for the late reply.

    I am not really the best to answer this question, so you might want to open a new ticket.

    However, you should look at Zephyr's power management system.

    You can find the relevant documentation here: https://developer.nordicsemi.com/nRF_Connect_SDK/doc/2.4.0/zephyr/services/pm/index.html

    Best regards,

    Didrik

Reply Children
No Data
Related