LTE-M consuming way to much power to transmit 100 bytes UDP every 15 seconds, please help me understand why.

I'm using the UDP sample from SDK 1.8.0 with the following modifications:

  • No PSM
  • No eDRX
  • Send 100 bytes every 15 seconds

This is on the nrf9160-DK board.

I suspect I can improve power consumption by disabling RRC idle mode, but I cannot find any documentation on how to do this.

I am unsure of the actual cDRX timing parameters as what seems like DRX events are sporadic.

Here are some power profile images and a modem trace if that's helpful.

The above image shows large period of almost continuous activity after the TX event for ~5 seconds and then iDRX activity until the next TX event.

This is the activity while RRC connected. 

I am seeing an average of 10mA, with 22mA during the connection period. I was expecting the average current consumption to be 2.5 - 4mA.

7723.trace-2022-02-14T21-46-37.030Z.bin

  • Sorry for the slow response, 

    There is a way to get an indication when the modem goes to sleep wit one of the power saving features. The XMODEMSLEEP AT command. Its part of the link controller and can be enabled through Kconfig option CONFIG_LTE_LC_MODEM_SLEEP_NOTIFICATIONS. 

    ```

    config LTE_LC_MODEM_SLEEP_NOTIFICATIONS
            bool "Modem sleep notifications"
            help
                    If this option is enabled the application will get notifications when the modem
                    enters and exits sleep. The application will also get pre-warning notifications
                    prior to when the modem exits sleep depending on the configured pre-warning time.
    config LTE_LC_MODEM_SLEEP_PRE_WARNING_TIME_MS
            int "Modem sleep pre-warning time"
            range 500 3600000
            default 5000
            help
                    Time before modem exits sleep that a pre-warning is to be received.
    config LTE_LC_MODEM_SLEEP_NOTIFICATIONS_THRESHOLD_MS
            int "Modem sleep notifications threshold"
            range 10240 3456000000
            default 1200000
            help
                    Minimum value of the duration of the scheduled modem sleep that triggers a
                    notification.



            /** @brief Modem sleep pre-warning
             *         This event will be received a configurable amount of time before
             *         the modem exits sleep. The time parameter associated with this
             *         event signifies the time until modem exits sleep.
             *         The associated payload is the modem_sleep member of type @ref lte_lc_modem_sleep
             *         in the event.
             */
            LTE_LC_EVT_MODEM_SLEEP_EXIT_PRE_WARNING,
            /** @brief This event will be received when the modem exits sleep.
             *         The associated payload is the modem_sleep member of type @ref lte_lc_modem_sleep
             *         in the event.
             */
            LTE_LC_EVT_MODEM_SLEEP_EXIT,
            /** @brief This event will be received when the modem enters sleep.
             *         The time parameter associated with this event signifies
             *         the duration of the sleep.
             *         The associated payload is the modem_sleep member of type @ref lte_lc_modem_sleep
             *         in the event.
             */
            LTE_LC_EVT_MODEM_SLEEP_ENTER,


    So this way you can make sure that it does not surpass the threshold. Not sure if it will solve the inconsistency in the power consumption you have. 
    Regards,
    Jonathan

  • Hi EDLT, 

    Sorry for bringing back an old thread, but your comment here seems to be the only evidence I can find of anyone successfully getting RAI to work on LTE-M. Is this true?

    My LTE-M packets look identical to your original post, at around 120mC and I have ran out of things to try in attempting to get RAI to work. I've had success using RAI on NB-IoT with the %RAI and socket options as you say, but not on LTE-M. Older threads seem to suggest RAI doesn't work on LTE-M, but maybe things have changed? I'm wondering if I have everything right and it is simply the network saying no. 

    Which modem firmware were you using in combination with SDK 1.6.1? Was there anything special you had to do to get things working on LTE-M?

    Many thanks

  • Hi Jake,

    Can you create a new ticket her on Devzone and link or refer to this ticket, this way we can more specifically try to help you with your exact issue.

    We can always update this thread with a link to the new ticket as long as it is public.

    Regards,
    Jonathan

  • Jake,

    Firstly, I've initialized the modem with the following commands

    1. AT%XDATAPRFL=0
    2. AT+CFUN=4
    3. AT%REL14FEAT=0,1,0,0,0
    4. AT%RAI=1

    Then utilizing RAI can be tricky. I've found in my brief experiments that sending upwards of 700 bytes will cause a retransmission - likely because the socket is terminated early before an acknowledge is received. For short bursts (i.e. sending small mqtt payloads) I've used:

    • setsockopt(mqtt_socket, SOL_SOCKET, SO_RAI_ONGOING, NULL, 0);
      • To indicate I'm about to send data
    • mqtt_publish(...)
    • setsockopt(mqtt_socket, SOL_SOCKET, SO_RAI_NO_DATA, NULL, 0);
      • To indicate I'm done sending data and would like an early release

    Note that I've only bench tested and don't yet have evidence that this will work in all cell tower situations.

Related