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

Modem open after ended transmission

Dear Devzone

I have an NB-IoT application running on a Thingy:91, that wakes up every two minutes and sends a small package over TCP to a remote server.  
I'm using a Keithley DMM6500 to measure the current consumption, and from that it is clearly visible that the modem doesn't not power down after sending the data. The current consumption is high (~30+mA) for at least 20 seconds after transmission has been completed. This of course ruins the average current consumption.
I have tried using different Power Saving Modes (PSM) with an active time as low as possible (a couple of seconds). The PSM mode is accepted by the network, but does not change the described behaviour. I have also tried different network vendors but without success.

I see similar behaviour when using the Asset Tracker example project.

Is this intended behaviour?

Modem firmware: 1.1.0

Best Regards, Andreas (Thireo)

Parents
  • Hi,

     

    The current consumption is high (~30+mA) for at least 20 seconds after transmission has been completed

    PSM has two components, one requested TAU (the sleep period) and the requested active time (active time after TAU).

    The lowest period for both these are different for every network provider. In norway, I get this back from AT+CEREG? (enable PSM intervals by issuing AT+CEREG=5 first):

    +CEREG: 1,"76C1","014A0305",7,,,"00100001","00000110"

    *edit: this was initially parsed wrong, as I read CEREG return Active time as TAU (and vice-versa)* 

    Incorrect parsing:

    This translates to 1 hour sleep (001 00001 -> GPRS timer 3), and 6 seconds (000 00110 -> GPRS timer 2) of active time after TAU.

    Correct parsing:

    +CEREG: 1,"76C1","014A0305",7,,,"00100001","00000110"

    00100001 is the active time, 001 = minute, 1 * 1 minute is your active time.

    00000110 is the TAU (sleep period), 000 = 10 minutes, 10 min * 6 = 1 hour, is the sleep period.

    *edit finished*

    If you have a larger active time, try to request a lower active time by setting "CONFIG_LTE_PSM_REQ_RAT="00000110"" in your prj.conf file.

    This will then request 6 seconds, but note that this is ultimately driven by the network, so be sure to check your returned PSM intervals using AT+CEREG=5 and AT+CEREG?.

     

    Kind regards,

    Håkon

  • Hi Håkon

    The requested TAU is set to two minutes (0b10000100) and active time is set to 6 seconds (0b0000011). Both have been confirmed and acknowledged by the network. By polling AT+CEREG and by enabling LTE_LINK_CONTROL_LOG_LEVEL_DBG in Zephyr.

    The Thingy:91 is located in Denmark and is using a Telia/Telenor NB-IoT SIM-card provided. They have also confirmed that no restrictions are set for PSM on their network.

    Best regards,
    Andreas

  • Do you have a detailed view of the current consumption? TCP will do a 3-way handshake, and nb-iot is not the speediest transport layer, so it would be interesting to see if there's any TX peaks.

    Could you try to set the PSM RPTAU (sleep) interval higher, let's say 30 minutes? If you set 2 minutes, and start an application timer of 2 minutes, you might get into a scenario where the application timer drifts in time (lets say 2 minutes and 10 sec), where you get two TAU back-to-back.

    To avoid this scenario, a workaround is to set the PSM high. Or set the application timer below the PSM TAU interval.

     

    Kind regards,

    Håkon

  • Hi again

    I had some trouble getting the data from the measuring unit. But it seems you may be right regarding the TX peaks. The picture below depicts the modem idle current of ~30mA, a TX peak and afterwards the modem off period. The measurement was done with the PSM RPTAU set to 1 hour.

    Best regards,
    Andreas

  • Hi Andreas,

     

    Hard to see how long that RX period is, as the instrument does not log before 0854, but it seems to already be 6 seconds.

    You still see unwanted behavior?

     

    Kind regards,

    Håkon

Reply Children
  • Hi Håkon

    I finally got the DMM6500 to do what's supposed to. Please see the attached figure for a complete cycle.

    And yes, I'm still seeing unwanted behaviour.

    Best regards,
    Andreas

  • Hi Andreas,

     

    Thanks for the detailed scope.

    It looks like your current active time is approx. 30 seconds.

    Does this correlate with the return from CEREG?

    I see now that I have flipped the former return values from CEREG.

    +CEREG: 1,"76C1","014A0305",7,,,"00100001","00000110"

    00100001 is the active time, 001 = minute, 1 * 1 minute is your active time from the former scenario.

    00000110 is the TAU (sleep period), 000 = 10 minutes, 10 min * 6 = 1 hour, is the sleep period from the former example.

     

    Kind regards,

    Håkon

  • Hi Håkon

    I have just double checked the results from my CEREG requests. It responds with:
    +CEREG: 5,1,"61B4","02781248",9,,,"00000001","00000110"

    Which from my interpretation should equal to 2 seconds active time and 3600 seconds sleep period.

    Enabling LTE control debugging seems to confirm this:
    "[00:04:11.449,127] <dbg> lte_lc.lte_lc_psm_get: TAU: 3600 sec, active time: 2 sec"

    Best regards,
    Andreas

  • Hi Andreas,

     

    Are you enabling the GPS? That will also draw 30 to 40 mA (depending on what the CPU is up to)

    Could you try the same setup with at_client and see if this also behaves similar?

    There are delays in terms of when asset_tracker sends data, especially when GPS is enabled, as the GPS only runs when in PSM or eDRX mode.

     

    Kind regards,

    Håkon

  • Hi Håkon

    No GPS is not enabled. At least not that I'm aware of. In prj.conf systemmode is set to "CONFIG_LTE_NETWORK_MODE_NBIOT". 
    The build generated .config file for zephyr seems to confirm my assumption:
    "# CONFIG_LTE_NETWORK_MODE_LTE_M is not set
    # CONFIG_LTE_NETWORK_MODE_LTE_M_GPS is not set
    CONFIG_LTE_NETWORK_MODE_NBIOT=y
    # CONFIG_LTE_NETWORK_MODE_NBIOT_GPS is not set"

    Could you give me some pointers as to how I'm supposed to send data via AT commands. I have yet to find any information regarding this, in the datasheets for NRF9160.

    Best regards,
    Andreas

Related