1159  Cellular IoT Power and Cost Optimization

Cellular IoT devices often run on batteries for years without replacement. This chapter teaches you:

  • Power Saving Modes: How PSM and eDRX reduce power consumption by 1,500x
  • Battery Life Calculations: How to estimate if your battery will last 10+ years
  • Cost Planning: How to choose data plans that minimize total cost over 5-10 year deployments

These skills are essential for designing practical, cost-effective IoT solutions.

1159.1 Learning Objectives

By the end of this chapter, you will be able to:

  • Configure Power Modes: Implement PSM and eDRX to achieve 10+ year battery life
  • Calculate Battery Life: Model power consumption across different operating modes
  • Estimate Costs: Calculate monthly subscription and data costs for cellular IoT deployments
  • Optimize TCO: Select cost-effective data plans based on usage patterns
  • Use AT Commands: Configure power saving modes through standard AT command interface

1159.2 Prerequisites

Required Chapters:

Technical Background:

  • Basic understanding of NB-IoT and LTE-M
  • Familiarity with battery capacity (mAh)
  • Understanding of data transmission concepts

Estimated Time: 35 minutes

1159.3 Key Concepts

  • Power Saving Mode (PSM): Deep sleep mode with periodic wakeup for ultra-low power
  • eDRX (Extended DRX): Extended discontinuous reception for longer sleep cycles
  • TAU Timer: Tracking Area Update timer - how long device sleeps in PSM
  • Active Window: Brief period after transmission when device is reachable
  • AT Commands: Standard interface for controlling cellular modules
  • APN: Access Point Name for connecting to carrier’s packet data network
  • TCO: Total Cost of Ownership over deployment lifetime

1159.4 Power Saving Modes for Cellular IoT

⏱️ ~15 min | ⭐⭐⭐ Advanced | 📋 P09.C21.U02

Understanding power modes is critical for achieving 10+ year battery life:

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor':'#2C3E50','primaryTextColor':'#fff','primaryBorderColor':'#16A085','lineColor':'#16A085','secondaryColor':'#E67E22','tertiaryColor':'#ecf0f1','textColor':'#2C3E50','fontSize':'14px'}}}%%
graph TB
    subgraph "Standard Idle Mode"
        IDLE1["Power: 15 mA continuously"]
        IDLE2["Reachable: Always"]
        IDLE3["Battery Life: 14 days"]
        IDLE4["Use: Real-time messaging"]
    end

    subgraph "eDRX (Extended Discontinuous Reception)"
        EDRX1["Power: 1.5 mA sleep<br/>15 mA during wake"]
        EDRX2["Wake Cycle: 5.12s - 163 min"]
        EDRX3["Battery Life: 1-2 years"]
        EDRX4["Use: Hourly sensor updates"]
    end

    subgraph "PSM (Power Save Mode)"
        PSM1["Power: 10 µA deep sleep"]
        PSM2["TAU Timer: Hours to days"]
        PSM3["Battery Life: 10+ years"]
        PSM4["Use: Daily meter readings"]
        PSM5["Reachable: Active window only"]
    end

    style IDLE1 fill:#E67E22,stroke:#2C3E50,color:#fff
    style IDLE2 fill:#E67E22,stroke:#2C3E50,color:#fff
    style IDLE3 fill:#E67E22,stroke:#2C3E50,color:#fff
    style IDLE4 fill:#E67E22,stroke:#2C3E50,color:#fff
    style EDRX1 fill:#16A085,stroke:#2C3E50,color:#fff
    style EDRX2 fill:#16A085,stroke:#2C3E50,color:#fff
    style EDRX3 fill:#16A085,stroke:#2C3E50,color:#fff
    style EDRX4 fill:#16A085,stroke:#2C3E50,color:#fff
    style PSM1 fill:#2C3E50,stroke:#16A085,color:#fff
    style PSM2 fill:#2C3E50,stroke:#16A085,color:#fff
    style PSM3 fill:#2C3E50,stroke:#16A085,color:#fff
    style PSM4 fill:#2C3E50,stroke:#16A085,color:#fff
    style PSM5 fill:#2C3E50,stroke:#16A085,color:#fff

Figure 1159.1: Cellular IoT Power Saving Modes: Idle, eDRX, and PSM Comparison

Power Mode Comparison:

Mode Power Consumption Reachability Battery Life Use Case
Standard Idle 15 mA continuously Always 14 days (5000 mAh) Real-time messaging
eDRX 1.5 mA (sleep), 15 mA (wake) Every wake cycle 1-2 years Hourly sensor updates
PSM 10 µA (deep sleep) Only during active window 10+ years Daily smart meter readings

eDRX (Extended Discontinuous Reception) Details:

Parameter Value
Wake Cycle Every 5.12s - 163 min (configurable)
Sleep Current 1.5 mA (light sleep)
Active Current 15 mA (listening for pages)
AT Command AT+CEDRXS=1,4,'0101'

PSM (Power Save Mode) Details:

Parameter Value
TAU Timer Hours to days (configurable)
Deep Sleep Current 10 µA (ultra-low power)
Active Window 6-60 seconds after TX
AT Command AT+CPSMS=1,,,'00100100','00000011'

Timeline Examples:

Mode Pattern
eDRX (1 hour update) Wake 5s -> Sleep 81.92s -> Wake 5s -> Sleep…
PSM (Daily update) TX + Active 10s -> Deep Sleep 24h -> Wake for TX -> Deep Sleep…

Power Comparison:

  • PSM (10 µA) = 1,500x less than Idle (15 mA)
  • eDRX (1.5 mA) = 10x less than Idle (15 mA)

1159.5 PSM Configuration and Battery Life Calculation

1159.5.1 Configuring PSM via AT Commands

The PSM AT command format:

AT+CPSMS=<mode>,<Requested_Periodic-RAU>,<Requested_GPRS-READY-timer>,<Requested_Periodic-TAU>,<Requested_Active-Time>

Binary encoding (8 bits): First 3 bits = unit, Last 5 bits = value

TAU (T3412) Units:

  • 000 = 10 minutes
  • 001 = 1 hour
  • 010 = 10 hours
  • 011 = 2 seconds
  • 100 = 30 seconds
  • 101 = 1 minute

Active Time (T3324) Units:

  • 000 = 2 seconds
  • 001 = 1 minute
  • 010 = decihours

Example: 24-hour TAU, 30-second Active Time:

// TAU: 001 (1-hour units) + 00100 (4 decimal) = 4×6h = 24h → "00100100"
// Active: 000 (2-second units) + 01111 (15 decimal) = 15×2s = 30s → "00001111"

sendAT("AT+CPSMS=1,,,\"00100100\",\"00001111\"");

1159.5.2 Battery Life Calculation Example

Scenario: Smart water meter with daily readings

# Device parameters
battery_capacity_mah = 5000  # 2× AA batteries
transmissions_per_day = 1
payload_bytes = 50

# Current consumption
tx_current_ma = 220  # NB-IoT transmit
rx_current_ma = 60   # Receive acknowledgment
idle_current_ma = 15 # Connection overhead
psm_current_ua = 10  # Deep sleep (0.01 mA)

# Timing (seconds)
tx_duration_s = 3
rx_duration_s = 1
connection_overhead_s = 5
active_window_s = 6

# Calculate daily energy consumption
# Active phases (in mAh)
tx_energy = (tx_duration_s / 3600) * tx_current_ma * transmissions_per_day
rx_energy = (rx_duration_s / 3600) * rx_current_ma * transmissions_per_day
overhead_energy = (connection_overhead_s / 3600) * idle_current_ma * transmissions_per_day
active_energy = (active_window_s / 3600) * idle_current_ma * transmissions_per_day

# PSM sleep (remaining ~24 hours)
psm_hours = 24 - (tx_duration_s + rx_duration_s + connection_overhead_s + active_window_s) / 3600
psm_energy = psm_hours * (psm_current_ua / 1000)  # Convert µA to mA

# Total daily consumption
daily_consumption = tx_energy + rx_energy + overhead_energy + active_energy + psm_energy
# ≈ 0.183 + 0.017 + 0.021 + 0.025 + 0.240 = 0.486 mAh/day

# Battery life
battery_life_days = battery_capacity_mah / daily_consumption
battery_life_years = battery_life_days / 365
# ≈ 10,288 days = 28.2 years

Result: With PSM, a 5000 mAh battery can last 28+ years (theoretical). Real-world factors (self-discharge, temperature, retransmissions) reduce this to 10-15 years.

TipPower Optimization Tips
  • Always Enable PSM for Infrequent Updates: PSM (10 µA) vs Idle (15 mA) = 1,500x power reduction
  • PSM Configuration: Set TAU (Tracking Area Update) >= transmission interval for maximum sleep
  • eDRX for Moderate Frequencies: Use eDRX (1.5 mA) for 1-minute to 1-hour update intervals
  • Optimize Transmission Time: Reduce payload size to minimize TX duration (220 mA for NB-IoT)
  • Connection Caching: Maintain PDP context to avoid reconnection overhead (5-10 seconds)
  • AT Commands for Monitoring:
    • PSM: AT+CPSMS=1,,,<TAU>,<Active>
    • eDRX: AT+CEDRXS=1,4,<eDRX_value>
    • Check status: AT+CPSMS? and AT+CEDRXS?

1159.6 Data Plan Cost Analysis

⏱️ ~15 min | ⭐⭐⭐ Advanced | 📋 P09.C21.U03

1159.6.1 Calculating Data Usage

Monthly data formula:

Monthly Data = Payload × (1 + Overhead%) × Transmissions/day × 30 days

Protocol overhead factors:

Protocol Stack Overhead
MQTT over TCP/IP ~30%
CoAP over UDP ~15%
MQTT-SN ~10%

Example calculation:

# Sensor parameters
payload_bytes = 100
protocol_overhead = 1.3  # MQTT over TCP/IP (30%)
transmissions_per_day = 48  # Every 30 minutes

# Monthly data
data_per_transmission = payload_bytes * protocol_overhead  # 130 bytes
monthly_transmissions = transmissions_per_day * 30  # 1,440
monthly_data_bytes = data_per_transmission * monthly_transmissions  # 187,200 bytes
monthly_data_mb = monthly_data_bytes / (1024 * 1024)  # 0.178 MB

1159.6.2 Provider Cost Comparison

Common IoT Connectivity Providers:

Provider Pricing Model Best For
1NCE $10 flat for 10 years (500 MB) Low-data, long-term deployments
Hologram $0.60/month + $0.40/MB Variable data usage, global roaming
Twilio $2/month + $0.10/MB Developer-friendly, API integration
Particle $2.99/month (3 MB included) Integrated device management

1159.6.3 TCO Calculation Example

Scenario: 10,000 environmental sensors, 5-year deployment, 0.18 MB/month data usage

1NCE (Flat-rate):

Cost per device: $10 for 10 years
5-year pro-rated: $5/device
Fleet cost: $5 × 10,000 = $50,000
Monthly equivalent: $0.083/device

Hologram (Pay-as-you-go):

Monthly base: $0.60
Monthly data: 0.18 MB × $0.40/MB = $0.072
Monthly total: $0.672/device
5-year cost: $0.672 × 60 months = $40.32/device
Fleet cost: $40.32 × 10,000 = $403,200

Particle (Pooled with included data):

Monthly: $2.99 (data within 3 MB included)
5-year cost: $2.99 × 60 = $179.40/device
Fleet cost: $179.40 × 10,000 = $1,794,000

Comparison Summary:

Provider Monthly/Device 5-Year/Device Fleet 5-Year TCO
1NCE $0.08 $5.00 $50,000
Hologram $0.67 $40.32 $403,200
Particle $2.99 $179.40 $1,794,000

Key Insight: For low-data IoT at scale, 1NCE is 8-36x cheaper than pay-as-you-go alternatives.

TipCost Optimization Strategies
  • Right-size Data Plan: Calculate actual data usage (payload × overhead × frequency × 30 days)
  • Flat-rate for Predictable Loads: 1NCE $10/10yr unbeatable for <500 MB (smart meters, env sensors)
  • Pay-as-you-go for Variable Loads: Hologram/Soracom better if monthly data varies 10x
  • Optimize Protocol Overhead:
    • MQTT over TCP/IP: 30% overhead
    • CoAP over UDP: 15% overhead
    • MQTT-SN: 10% overhead
  • Compression: gzip can reduce sensor data by 60-80%
  • Batch Transmissions: Send 10 readings at once instead of 10x separate (reduces overhead)
  • Monitor Usage: Most carriers offer APIs to track per-device data consumption
  • Regional Considerations: Some carriers cheaper in specific regions (check roaming fees)

1159.7 Knowledge Check

A utility company is deploying 50,000 smart water meters. Each meter:

  • Sends 1 reading per day (50 bytes)
  • Installed in basements (deep indoor coverage needed)
  • Must operate for 15+ years on 2x AA batteries (5000 mAh total)
  • Using NB-IoT with SIM7020 module

Without power-saving features, the meter battery lasts only 14 days. You need to configure PSM (Power Save Mode) to achieve 15+ year battery life.

What PSM configuration would achieve this goal, and how does it work?

  1. Enable eDRX with 81.92-second wake cycle - sufficient for daily readings
  2. Configure PSM with TAU=24 hours, Active Time=6 seconds
  3. Use LTE-M instead because it has better power efficiency
  4. Reduce reading frequency to once per week to save power
Click to reveal answer

Answer: B) Configure PSM with TAU=24 hours, Active Time=6 seconds

Why PSM is Required:

Without PSM, the module stays in Idle mode (connected, listening for pages):

  • Idle current: ~15 mA
  • Daily consumption: 15 mA × 24 hours = 360 mAh/day
  • Battery life: 5000 mAh / 360 mAh/day = 13.9 days

PSM Solution:

PSM puts the module into deep sleep between transmissions:

  • PSM sleep current: ~10 µA (0.01 mA) - 1,500x reduction!
  • Only wakes briefly for transmission

Configuration:

// Configure PSM parameters
sendAT("AT+CPSMS=1,,,\"00100100\",\"00000011\"");

// TAU (T3412): "00100100"
// Bits 0-2 (010): Time unit = 6 hours
// Bits 3-7 (00100): Value = 4
// TAU = 4 × 6 hours = 24 hours

// Active Time (T3324): "00000011"
// Bits 0-2 (000): Time unit = 2 seconds
// Bits 3-7 (00011): Value = 3
// Active = 3 × 2 seconds = 6 seconds

Power Budget with PSM:

  • TX energy: 0.183 mAh/day (39.7%)
  • RX energy: 0.017 mAh/day (3.7%)
  • Connection: 0.021 mAh/day (4.6%)
  • PSM sleep: 0.240 mAh/day (52.1%)
  • Total: 0.461 mAh/day

Battery Life: 5000 mAh / 0.461 mAh/day = 10,847 days = 29.7 years

Why other options are incorrect:

  • Option A (eDRX): eDRX current ~1.5 mA, battery life only ~139 days
  • Option C (LTE-M): LTE-M PSM is 15 µA (slightly worse than NB-IoT’s 10 µA)
  • Option D (Weekly): Still requires PSM; weekly readings insufficient for leak detection

Question 1: You need to configure PSM (Power Save Mode) for a sensor that reports every 6 hours. The sensor needs 30 seconds of active time after waking. Which AT command configures PSM correctly?

PSM AT command format: AT+CPSMS=mode,,,TAU,Active-Time. Binary encoding (8 bits): First 3 bits = unit, Last 5 bits = value. TAU units: 000=10 min, 001=1 hour, 010=10 hours, 011=2 sec, 100=30 sec, 101=1 min. For 6-hour reporting: Set TAU >= 6 hours. Use 24 hours for margin: 001 (1-hour units) + 00100 (4 decimal) = 4×6h = 24h = “00100100”. Active Time units: 000=2 sec. For 30 seconds: 000 (2-second units) + 01111 (15 decimal) = 15×2s = 30s = “00001111”. The correct command is AT+CPSMS=1,,,“00100100”,“00001111”.

Question 2: You’re comparing data plans for 10,000 environmental sensors. Each sensor sends 100 bytes every 15 minutes. Which provider offers the LOWEST total cost of ownership over 10 years?

Data calculation: 100 bytes × 4/hour × 24 hours × 30 days × 12 months × 10 years = ~10.5 MB/device/10 years (plus ~30% protocol overhead = ~14 MB actual). Cost comparison over 10 years per device: 1NCE: $10 flat for 500 MB = $10 total. Well within 500 MB limit (14 MB used). Hologram: $0.60/mo × 120 months = $72 base + ($0.40/MB × 14 MB) = $72 + $5.60 = $77.60 total. Twilio: $2/mo × 120 months = $240 + ($0.10/MB × 14 MB) = $240 + $1.40 = $241.40 total. Particle: $2.99/mo × 120 months = $358.80 total. For 10,000 devices: 1NCE = $100K, Hologram = $776K, Twilio = $2.4M, Particle = $3.6M. 1NCE is 7-32x cheaper for low-data, long-term deployments.

Question 3: An elderly care device must support voice calls for emergencies AND provide location tracking. Battery life should exceed 2 years. Which cellular IoT configuration is MOST appropriate?

LTE-M is the ONLY cellular IoT technology with voice support: Voice Capability (VoLTE) - LTE-M supports Voice over LTE, enabling emergency calls. NB-IoT explicitly does NOT support voice - designed only for data. Mobility Support - Elderly person moves around (home, outdoors, medical appointments). LTE-M provides full handover at pedestrian/vehicular speeds. NB-IoT has limited/no handover. Low Latency - 10-15 ms ensures responsive emergency call connection (vs NB-IoT’s 1.6-10 second latency which is unacceptable for voice). Battery Life - LTE-M with PSM achieves 2+ years for this use case (daily GPS checks + occasional calls). Why not alternatives: 4G LTE consumes too much power (200-500 mA active) - battery would last weeks, not years. 3G UMTS is being shut down globally (AT&T/Verizon/T-Mobile sunsets 2022-2023).

1159.8 Summary

This chapter covered cellular IoT power and cost optimization:

  • PSM (Power Save Mode): Reduces idle current from 15 mA to 10 µA (1,500x reduction), enabling 10+ year battery life with proper configuration
  • eDRX: Intermediate power savings (1.5 mA) for applications requiring more frequent downlink reachability
  • AT Command Configuration: Use AT+CPSMS=1,,,<TAU>,<Active> with binary-encoded timer values
  • Battery Life Calculation: Factor TX/RX/overhead/sleep modes; PSM makes transmission energy dominant instead of idle listening
  • Cost Optimization: Flat-rate providers (1NCE) offer 8-36x lower TCO than pay-as-you-go for low-data IoT at scale
  • Protocol Overhead: Reduce overhead with CoAP (15%) instead of MQTT (30%); use compression and batch transmissions

1159.9 What’s Next

Continue with practical implementation and troubleshooting:

  • Next Chapter: Cellular IoT Practical Knowledge - AT commands, troubleshooting, and hands-on exercises
  • Application Protocols: MQTT - Learn the most widely-used IoT messaging protocol
  • Alternative: CoAP - Lightweight protocol with lower overhead for constrained devices
NoteCross-Hub Connections

Interactive Learning Resources: