Onomondo SoftSIM low power optimization.

Hello,

We are working with Onomondo in integrating their software SIM. We have it working and sending and receiving data, but am having some issues figuring out what is causing the higher power consumption. 

It is not a hardware issue as using the DK and our own hardware with our previous software SIM firmware (Telekom nuSIM) operates in deep sleep.


Build Steps I used to replicate this based on the softsim_static_profile example using SDK and toolchain 2.9.1 change…

CONFIG_SOFTSIM_STATIC_PROFILE=* to a valid profile

Set the following in proj.conf to n to disable serial

CONFIG_SERIAL=n
CONFIG_AT_HOST_LIBRARY=n

There seems to be a constant event happening every 1.27s that wakes the CPU and ends up with the average power only getting down to 500uA.

We are aiming to have around 5uA with this setup with our other firmware. I can see that is correct and matches what we had seen on the other device in the sleep periods between those 1.27s second spikes. So I assume it is going properly to sleep in low power mode.

Here is an example serial output from when the serial is enabled.

*** Booting nRF Connect SDK v2.9.1-60d0d6c8d42d ***
*** Using Zephyr OS v3.7.99-ca954a6216c9 ***
[00:00:00.310,913] <inf> softsim_sample: SoftSIM sample started.
[00:00:00.595,825] <inf> softsim_sample: Waiting for LTE connect event.

+CEREG: 2,"05D4","019B1815",7
[00:00:08.407,379] <inf> softsim_sample: LTE cell changed: Cell ID: 26941461, Tracking area: 1492
+CSCON: 1
[00:00:08.646,423] <inf> softsim_sample: RRC mode: Connected

+CEREG: 5,"05D4","019B1815",7,,,"11100000","11100000"
[00:00:15.618,438] <inf> softsim_sample: Network registration status: Connected - roaming
[00:00:15.618,530] <inf> softsim_sample: LTE connected!

[00:00:15.624,328] <inf> softsim_sample: PSM parameter update: TAU: 3240, Active time: -1
+CSCON: 0
[00:00:28.146,301] <inf> softsim_sample: RRC mode: Idle

Interestingly also disabling CONFIG_UART_INTERRUPT_DRIVEN increases the background idle power consumption to 1mA.


We have checked with Onomondo, and they have been able to replicate and note that 1.27s is one of the shorter DRX cycles, but not sure why it enters that.

I have attached a few PPK files to look at as well, ours and Onomondo’s replicated one. I tried disabling some parts of the code to find out what is causing this. Any insights on where to look would be helpful.

ppk2.zip

  • Hello,

    can you provide a modem trace where this behavior is reproduced?

  • For background information there is Nordic academy pages regarding LTE power saving modes: https://academy.nordicsemi.com/courses/cellular-iot-fundamentals/lessons/lesson-1-cellular-fundamentals/topic/lesson-1-power-saving-techniques/

    Then, regarding this case, Active time -1 means that there is no PSM. So it stays in eDRX.

    I don't see any specific eDRX times requested, try enabling the eDRX and PSM requests, for example like this:

    # Configure PSM mode
    CONFIG_LTE_LC_PSM_MODULE=y
    CONFIG_LTE_PSM_REQ=y
    # Request periodic TAU of 12 hours
    CONFIG_LTE_PSM_REQ_RPTAU="00101100"
    
    # Set Requested Active Time (RAT) to 30 seconds. Preferably same as the
    # configured LWM2M_QUEUE_MODE_UPTIME. Due to NAT/firewall UDP connections are usually
    # closed within 30-60 seconds so there is in general no point in setting a longer
    # LTE PSM active time.
    CONFIG_LTE_PSM_REQ_RAT="00001111"
    
    # Request eDRX mode
    CONFIG_LTE_LC_EDRX_MODULE=y
    CONFIG_LTE_EDRX_REQ=y
    
    # Requested eDRX cycle length for LTE-M and Nb-IoT
    # This should be fine-tuned for the network and the chosen protocol.
    # Lowest value is  the most responsive, but uses more energy during the active eDRX period.
    # Longer period may cause more CoAP packet drops on server requests.
    # "0000" is 5.12 s
    # "0001" is 10.24 s
    # "0010" is 20.48 s.
    CONFIG_LTE_EDRX_REQ_VALUE_LTE_M="0000"
    CONFIG_LTE_EDRX_REQ_VALUE_NBIOT="0000"
    
    # Request Paging time window of 1.28 seconds for LTE-M
    CONFIG_LTE_PTW_VALUE_LTE_M="0000"
    
    # Request Paging time window of 2.56 seconds for NB-IoT
    CONFIG_LTE_PTW_VALUE_NBIOT="0000"
    

    This example is from our LwM2M client. It should stay active for 30 seconds (in eDRX, polling for incoming data), and then drop into PSM mode for low power usage and be unreachable from network at that point.

    Then debug from the LTE event handler what values the network accepts. You need to fine-tune the eDRX and PSM for your use-case, not all networks allow PSM.

Related