How to Enable Power Saving Modes of NB-IoT and Cat-M and the Energy Consumption Expected

By Markus Pihl, Vanja Samuelsson

Increased battery life of Internet of Things (IoT) devices is one of the key goals of Low Power Wide Area Network (LPWAN) technologies. For that reason, power saving features are an essential part of the cellular LPWAN technologies, NB-IoT (Cat-NB1 & Cat-NB2) and Cat-M (LTE-M aka Cat M1). But, how are they used and what effect on the current consumption can be observed?

In this article, the objective is to answer these questions, looking into the definitions of the power saving features, the timers and how they are calculated, and the commands that enable them. All of this is accompanied by visualization of the current consumption profile to gain an understanding of the impact on energy consumption.

Power saving modes of NB-IoT and Cat-M

There are two essential power saving features for NB-IoT and Cat-M technologies: Power Saving Mode (PSM) and Extended Discontinuous Reception (eDRX).

PSM enables the device to set sleep and active timers which are forwarded to the network: Periodic Tracking Area Update (TAU) (T3412) and Active time (T3324) (Figure 1). If accepted by the network, the network will keep the device registered in the system for the set time and if the device wakes up during this time, no reattach procedure is needed (detach and reattach procedure can be very energy consuming). During the sleep interval, the device is not reachable but the network knows, due to the timers, the next wake up time of the device and how long it will be active to receive paging messages. It is possible to set a device in a deep sleep mode for up to 14 days.

eDRX is extending the time of the regular DRX that already exists in the LTE networks today. It allows for more extended time for the device to not listen to the network during the active time phase. For many IoT devices, to be unreachable for several seconds or longer is acceptable. The power consumption is decreased, yet the device is still reachable compared to when PSM is applied. The tradeoff is that the power consumption decrease is not as large as for PSM. eDRX can be configured with timers Paging Cycle Length (PCL) and Page Time Window (PTW) (Figure 1).

The commands to set both PSM and eDRX timers on a cellular module are defined in 3GPP Technical Specification TS 27.007, as follows:

AT+CPSMS=[<mode>,,[, <RequestedPeriodicTAU>[, <RequestedActiveTime>]]]

AT+CEDRXS=[<mode>[, <AcT-type>[, <Requested_eDRX_value>]]]

PTW is the exception. This article introduces a command for PTW created by Thales and specific for the Thales Cinterion® modules used as devices under test (DUT): 

AT^SEDRXS=[<mode>[, <AcT-type>[, <Requested_eDRX_value>][, <Requested_Paging_time_window>]]]

Additionally, the so-called Suspend Mode will be introduced, another Thales specific power saving feature for the Cinterion modules, to further push the module the into lowest energy consumption state. This command needs to be set only once.


Diagram of power saving features, PSM timers, and eDRX timers (click to enlarge)Figure 1: Power saving features, PSM timers (Periodic TAU and Active Time) and eDRX timers (PCL and PTW). (Image source: Thales)

The set-up

For the purpose of visualizing the low power modes, two different sets of Cinterion modules from Thales were used along with and the Otii power analyzer from Qoitech.

For the PSM timers the Thales DevKit ENS22-E was used, which comes already soldered to a NB-IoT only module. Measurements have been done in live network (roaming) in NB-IoT with a global MNO SIM card.

For eDRX timers, the Cinterion® EMS31, Cat-M only module on a LGA DevKit was used. Due to the lack of Cat-M network in Germany, where the tests were performed, this module was connected via antenna (not wired) to an Amarisoft Cat-M network simulator.

For an all-in-one prototyping and power analyzing setup, Thales, Qoitech, and Digi-Key have made the 5G NB-IoT Low-Power Cellular Developer Starter Kit available for product development in this application area.

Qoitech´s Otii is a multi-faceted power analyzer used, in this case, for three purposes:

  • For visualization and power profile analysis
  • For control of the radio modules (via GPIO pins)
  • For the power measurement and UART log syncs (via RX/TX pins and mains)

Cabling was according to Table 1.

Image of LGA Dev kit with cellular module from Thales and Otii from QoitechFigure 2: The measurement setup:  LGA Dev kit with cellular module from Thales and Otii from Qoitech. (Image source: Thales)

LGA DevKit pins Otii pins
On GP02
PWR(A) +

Table 1: Pin connections for the Figure 2 setup.

For the PSM measurement, the Cinterion ENS22-E NB-IoT module (range 2.8 - 4.2 V) was powered with 3.6 V (Figure 3) to make the result comparable to the current consumption ratings of the module’s hardware interface description. The digital voltage level for the GPOs needs to be set to 3 V (Figure 3).

Image of Otii project SUPPLY set-upFigure 3: Otii project SUPPLY set-up. (Image source: Thales)

VUSB => +5 V - This supply is needed to supply the LGA DevKit. Note! Do not power the DevKit additionally via USB.

Accordingly, the DevKit switches on the lower left side of the board are set to left PWR – EXT and left ASC0 – RS232 (Figure 4).

Image of DevKit switches setupFigure 4: DevKit switches setup. (Image source: Thales)

According to the measurement setup, the UART command line within the Otii application was used. It needs to be enabled in the Otii project settings in the LOGS section.

The serial interface ASC0 (RX0/TX0 cabling) by default operates with 115200 baud speed (Figure 5).

Image of Otii project LOGS setupFigure 5: Otii project LOGS setup. (Image source: Thales)

How to calculate PSM timers?

For the PSM, the AT+CPSMS command was used to set the requested periodic TAU (T3412) cycle and the requested active time (T3324).  The value needs to be entered in an 8-bit binary format where the first 3 bits represent the base multiplier of a 5-bit binary number. This is as specified in the 3GPP and can be found in specification: TS 24.008 (Figure 6).

Image of calculation of Periodic TAU and Active Time from 3GPP TS 24.008Figure 6: Calculation of Periodic TAU and Active Time from 3GPP TS 24.008. (Image source: Thales)

As an application example, the module will be configured to send a Tracking Area update message to the network every 7 minutes. This means Periodic TAU will be set to 7 min or 420 seconds.

For 7 minutes, a multiplier of 1 Minute (101) with a value of 7 (00111) or a multiplier of 30 secs (100) and the value binary 14 (01110) can be used (Figure 6).

The Active Time works accordingly, but with different base values. For example, a 10 second active time would have the values of 000 as the 2 second base multiplier and 00101, which equals 5, resulting in the command being:


How to set the PSM timers?

After enabling the power for the Devkit (5 V, see Figure 7) and the module power (3.6 V, see Figure 7), start is initiated by switching GPO2 (Figure 7) on for about 2 seconds and off again.

Image of Otii Power switchesFigure 7: Otii Power switches. (Image source: Thales)

The module will start up and will indicate this with the following URC (Unsolicited Result Code) in the UART Log:



Now at-commands can be passed to the module to 1) enable the suspend mode, 2) enable the display of the registration status, and 3) check and set the PSM timers:

  1. As previously mentioned, the Thales specific power saving feature needs to be enabled by sending a configuration command only once. This setting is non-volatile and will stay until changed.


    ^SCFG: "MEOpMode/PowerMgmt/Suspend","1"


    +CIEV: suspendAvailable,1

    The module will announce with a +CIEV URC that suspend functionality is now available. In case suspend was enabled already, there will not be a suspendAvailable URC.

  2. After sending “at+cereg=5”, the module will inform the user with URCs about registration status changes of the module. This setting is volatile and has to be repeated after restarts. In case the module is registered already, it might answer with OK only. In that case, the status can be requested by sending “at+cereg?”.
    +CEREG: 5,5,C9F9,00323333,9,,,00001111,10100111
              |   |    |      |      |        |_Periodic-TAU(T3412): 10m
              |   |    |      |      |__________Active-Time (T3324): 30s
              |   |    |      |_________________Act:E-UTRAN(NB-S1 mode)
              |   |    |________________________CI - cell ID
              |   |_____________________________TAC - Tracking Area Code
              |_________________________________stat:5 registered roaming

    In the above example, the module is registered in roaming mode and is showing the currently configured PSM values of the network (TAU every 10 minutes with a 30 second active time).

  3. Now, the requested values can be set with the “at+cpsms” command. This command will trigger the module to send a TAU (Tracking Area Update) message to the network. In the reply message (Tracking Area Update Accept) from the network, the module will receive the values which have to be put in action. In other words, the network decides which values to take. Hopefully, the values are the same as requested, but this is not assured. It depends on the mobile network provider and if they allow the requested values or override them with their, sometimes fixed, values.
+CEREG: 5,5,C9F9,00323333,9,,,00001111,10010100
          |   |    |      |      |        |_Periodic-TAU(T3412):  7m
          |   |    |      |      |__________Active-Time (T3324): 30s
          |   |    |      |_________________Act:E-UTRAN(NB-S1 mode)
          |   |    |________________________CI - cell ID
          |   |_____________________________TAC - Tracking Area Code
          |_________________________________stat:5 registered roaming
+CIEV: suspendReady,0
+CIEV: suspendReady,1

The module will indicate, with the suspendReady URC, when it will be able to enter the suspend mode. As soon as “suspendReady,1” is indicated, it is possible to put the module into suspend mode by setting RTS0, which is GPO1 (Figure 7), for 5 seconds (5 seconds is the default and could be changed as well, see modules at-specification document).

What effect do PSM timers have on energy consumption?

As a reference measurement, Figure 8 shows the current profile for the Cinterion ENS22-E NB-IoT in default mode, hence no PSM, no eDRX nor Suspend Mode is enabled.

Image of current consumption profile for the reference measurement (click to enlarge)Figure 8: Current consumption profile for the reference measurement with no power saving modes enabled. (Image source: Thales)

The expected average current consumption in the marked area is approximately 16 mA.

Once PSM timers are enabled, in this case the Periodic TAU of 7 minutes and 10 sec of active time, and the network has accepted them, the current consumption decreases to an average of 13 mA (Figure 9).

Note, that the network could have disregarded the request for the PSM timers and suggested others. Different MNOs and different networks in general have very different sets of timers that they allow, hence this needs to be understood prior to deploying IoT devices.

Image of current consumption profile when PSM is enabled (click to enlarge)Figure 9: Current consumption profile when PSM is enabled. (Image source: Thales)

If Suspend Mode is set, the module will indicate it is ready to go to suspend with a URC (Unsolicited Result Code). After toggling the RTS signal, in this case set to GPO1 (Figure 7) in the Otii, the module goes into Suspend Mode with an average power consumption of approximately 3 µA (Figure 10).

Image of current consumption profile when Suspend Mode is enabled (click to enlarge)Figure 10: Current consumption profile when Suspend Mode is enabled. (Image source: Thales)

How to calculate eDRX timers?

The timer values for setting eDRX are calculated in a straight forward approach. There are timers for each radio access technology as shown in the table in Figure 11.

Image of definition of eDRX timers from 3GPP TS 24.008Figure 11: Definition of eDRX timers from 3GPP TS 24.008. (Image source: Thales)

How to set eDRX timers?

The effect of using eDRX can be demonstrated with the Cinterion EMS31 Cat-M only module on a LGA DevKit. This LTE-M module has a power supply range of 3.2 - 5.5 V. The Otii will power it with 3.8 V. The Main voltage has to be adapted in the Project settings of the Otii application (Figure 3).

After startup of the module, indicated by the ^SYSSTART URC, the PSM timers need to be increased to have a longer active phase (5 min) to better see the eDRX effect [(set at+cpsms=1,,,00000110,00100101), disable eDRX (at+cedrxs=0) and enable the registration status display with at+cereg=4].

+CIEV: prov,1,sbmjp

To check if eDRX was disabled as requested, use the at+cedrxrdp command which reads the current dynamic eDRX parameters.


As soon as the module gets registered to the network, the related URC should be received showing the registration status with an active time of 5 minutes.

+CEREG: 1,"0001","01A2D004",7,,,"00100101","00000110"
      |         |_TAU(T3412):  60min
                                   |_____Active-Time(T3324): 5min

Measuring with the Otii application, the continuous radio listener peaks can be seen every 1.25 ms during the active time, as shown in Figure 10, in the area around the 1 min timestamp.

Now the command to enable eDRX is sent either using the 3GPP command at+cedrxs or by using the Thales specific command at^sedrxs. The disadvantage of the 3GPP command is that there is no possibility to set the paging time window (PTW) which is possible with dedicated AT command implemented on Thales Cinterion module.

According to the table in Figure 10, the eDRX value in Cat-M was set to 20.48 seconds (“0010”) with a paging time window of 5.12 seconds (“0011”).

+CEDRXP: 4,"0010","0010","0011"

The module will inform the user about the eDRX value change with +CEDRXP URC showing the requested eDRX (PCL) value of “0010”, the one which was set from the network and has to be used from the module as well (2nd “0010”), and the PTW (“0011”).

The module needs some time to adapt to the changed cycles and finally will show the eDRX behavior as seen in Figure 12.

What effect do eDRX timers have on energy consumption?

eDRX timers have an effect in the active phase only. The shorter an active phase is configured, the lower is the eDRX effect.

eDRX is good for devices which need to be reachable from the network for a long time interval or even the whole time. Within this time, the receiver part of the device will be enabled only for a specific time interval (PTW) which is repeated every eDRX (PCL) cycle. Due to the timers set, the mobile network knows in which time frames the device will listen to pagings and will send a paging for this device only during this time frame. This will as well save resources on the network (eNodeB) side.

The default is PTW, set to 5 sec with no eDRX enabled (Figure 12). Once eDRX is enabled, the average current consumption goes from 3 mA to 2 mA.

Image of paging time window set to 5 sec as reference with no eDRX enabled (click to enlarge)Figure 12: Paging time window, set to 5 sec as reference with no eDRX enabled, and the same PWT but with eDRX enabled on the right, marked. (Image source: Thales)


Depending on the use case of the IoT device and on the available network technology, different power saving features can be used to extend the battery life of a device.

With the use of PSM, it is possible to set a device in a deep sleep mode for up to 14 days.

The device will, according to the set interval, wake up periodically, connect to the network, and have the option to send data. Shortly after the connected state, the device will be active but idle and listen for incoming data during the active time. Within this active time, the slots where the device enables its receiver can be configured using eDRX.

All settings are done in cooperation with the network. The network always knows when and how long a device is able to receive data.

A device working in Cat-M will need more power than a NB-IoT device. The longer a device is sleeping, the more energy could be saved. The shorter and fewer time slots that a device is listening for incoming data, the more optimized its consumption.

Therefore, in best case, a NB-IoT device with a maximum PSM and a minimal active time with only one listening peak (PTW minimal) is the most power optimized approach.

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of Digi-Key Electronics or official policies of Digi-Key Electronics.

About this author

Markus Pihl

Markus Pihl is a Senior Application Engineer at Thales with an Engineering degree in Telecommunication Technologies. He has 20 years of experience in the telecom industry with a focus on mobile networks. The last 4 years he has moved to work in depth with mobile devices, and in specific the cellular LPWAN Cinterion modules for Thales DIS.

Vanja Samuelsson

Vanja Samuelsson is the Founder of Qoitech. Her background is in product development for the telecom industry and most recently research and innovation on 5G, cellular IoT connectivity and low power IoT at Sony. Vanja has a Master of Science degree and a PhD in Electrical Engineering from Lund University, Sweden.