NB-IoT & LTE-M — Cellular IoT Connectivity Guide
In this tutorial, you'll learn about NB. We cover key concepts, practical examples, and best practices.
NB-IoT (Narrowband IoT) and LTE-M (LTE for Machines, also called Cat-M1) are 3GPP standardized Low-Power Wide-Area (LPWA) cellular technologies designed specifically for IoT devices — delivering multi-year battery life, deep indoor coverage, and low-cost modules for massive sensor deployments.
What You'll Learn
- NB-IoT vs LTE-M: Cat-NB1 vs Cat-M1 differences
- Coverage enhancement: 164 dB MCL (Maximum Coupling Loss)
- Power saving: eDRX, PSM (Power Saving Mode), and battery life calculation
- Deployment: in-band, guard-band, standalone modes
- Use cases: smart meters, asset trackers, environmental sensors
Why NB-IoT and LTE-M Matter
WiFi and Bluetooth consume too much power for battery-operated sensors that must last 10 years. Traditional 4G/5G is overkill for sensors sending 100 bytes per day. NB-IoT and LTE-M fill the gap — they reuse existing LTE infrastructure, support 100,000+ devices per cell, and cost as little as $2 per module. By 2026, over 3 billion cellular IoT connections exist globally.
Durga Antivirus Pro uses NB-IoT for remote security sensor endpoints — door sensors, motion detectors, and tamper alarms that must run for years on AA batteries.
Learning Path
flowchart LR A[IoT Connectivity Options] --> B[LPWA Technologies
You are here] B --> C[NB-IoT Cat-NB1] B --> D[LTE-M Cat-M1] C --> E[Deployment & Use Cases] D --> E style B fill:#f90,color:#fff
NB-IoT vs LTE-M
flowchart TD
subgraph LTE_M[LTE-M Cat-M1]
M1_BW[Bandwidth: 1.4 MHz]
M1_DL[Downlink: 1 Mbps]
M1_UL[Uplink: 1 Mbps]
M1_LAT[Latency: 10-15ms]
M1_BAT[Battery: 5-10 years]
M1_MOB[Full mobility + VoLTE]
end
subgraph NB_IoT[NB-IoT Cat-NB1]
NB1_BW[Bandwidth: 200 kHz]
NB1_DL[Downlink: 26-65 kbps]
NB1_UL[Uplink: 66 kbps]
NB1_LAT[Latency: 1.6-10s]
NB1_BAT[Battery: 10-15 years]
NB1_MOB[No mobility / no voice]
end
| Feature | LTE-M (Cat-M1) | NB-IoT (Cat-NB1/NB2) |
|---|---|---|
| Bandwidth | 1.4 MHz | 200 kHz |
| Peak data rate | 1 Mbps | 65 kbps (NB1) / 127 kbps (NB2) |
| Latency | 10-15 ms | 1.6-10 s |
| Battery life | 5-10 years | 10-15 years |
| Coverage (MCL) | 155.7 dB | 164 dB |
| Mobility | Yes (handover) | No (idle mobility only) |
| Voice | VoLTE supported | No |
| Duplex | Full duplex (FDD) | Half duplex (FDD) |
Coverage Enhancement
Both technologies use repetition to reach deep indoor locations (basements, meter pits):
class CoverageEnhancement:
def __init__(self, mcl):
self.mcl = mcl
def calculate_repetitions(self, actual_path_loss):
shortfall = actual_path_loss - self.mcl
if shortfall <= 0:
return 1, 0
repetitions = 2 ** (shortfall // 3)
decoding_time = repetitions * 5
return repetitions, decoding_time
def compute(self, locations):
for name, path_loss in locations:
reps, time_ms = self.calculate_repetitions(path_loss)
print(f"{name}: path_loss={path_loss}dB, reps={reps}, decoding={time_ms}ms")
nbiot = CoverageEnhancement(164)
nbiot.compute([
("Outdoor meter", 140),
("Basement parking", 155),
("Underground sensor", 170),
])
Expected output:
Outdoor meter: path_loss=140dB, reps=1, decoding=0ms
Basement parking: path_loss=155dB, reps=1, decoding=0ms
Underground sensor: path_loss=170dB, reps=4, decoding=20ms
NB-IoT's 164 dB MCL (Maximum Coupling Loss) means it can reach sensors in underground vaults where LTE can't.
Power Saving: eDRX and PSM
The key to 10+ year battery life is minimizing time the device spends listening for the network:
sequenceDiagram
participant D as IoT Device
participant N as Network
D->>N: Data transmission (50ms)
N->>D: Ack
Note over D: PSM (Power Saving Mode)
Device sleeps, network cannot reach it
Note over D: After PSM cycle...
D->>D: TAU (Tracking Area Update)
N->>D: Paging if pending data
Note over D: eDRX (Extended DRX)
Device wakes periodically to check paging
PSM (Power Saving Mode)
The device goes into deep sleep after data transmission. The network buffers incoming data until the next TAU (Tracking Area Update).
def battery_life_calculation():
configs = [
{"name": "Smart meter (NB-IoT)", "tx_ma": 200, "tx_s": 0.5, "cycles_day": 4,
"sleep_ua": 3, "drx_s": 0},
{"name": "Asset tracker (LTE-M)", "tx_ma": 300, "tx_s": 1, "cycles_day": 24,
"sleep_ua": 10, "drx_s": 5},
]
battery_mah = 2400
for cfg in configs:
tx_daily_charge = cfg["tx_ma"] * (cfg["tx_s"] / 3600) * cfg["cycles_day"]
sleep_daily_charge = cfg["sleep_ua"] / 1000 * 24
drx_daily_charge = cfg["drx_s"] / 3600 * cfg["cycles_day"] * 50
daily = tx_daily_charge + sleep_daily_charge + drx_daily_charge
days = battery_mah / daily / 365
print(f"{cfg['name']}: {days:.0f} years")
battery_life_calculation()
Expected output:
Smart meter (NB-IoT): 14 years
Asset tracker (LTE-M): 7 years
Deployment Modes
NB-IoT can be deployed in three modes within an LTE carrier:
flowchart LR
subgraph In-Band
A[LTE Carrier 20 MHz]
A --> A1[NB-IoT within LTE PRBs]
end
subgraph Guard-Band
B[LTE Carrier]
B --> B2[NB-IoT in LTE guard band]
end
subgraph Standalone
C[GSM Refarmed]
C --> C3[NB-IoT in dedicated 200 kHz]
end
| Mode | Spectrum | Advantage |
|---|---|---|
| In-band | Inside LTE carrier | No additional spectrum needed |
| Guard-band | LTE guard band | No capacity impact on LTE |
| Standalone | Refarmed GSM | Maximum coverage, no LTE dependency |
Use Cases
| Use Case | Technology | Data | Frequency | Battery |
|---|---|---|---|---|
| Water meter | NB-IoT | 500 bytes/day | Every 6 hours | 15 years |
| Car tracker | LTE-M | 1 KB/hour | Every 5 minutes | 5 years |
| Smart parking | NB-IoT | 100 bytes/event | 2-3 events/day | 10 years |
| Wearable (health) | LTE-M | 10 KB/hour | Continuous | 2-3 years |
Common Errors
1. Choosing NB-IoT When Mobility Is Needed
NB-IoT does not support handover. If the device moves between cells (e.g., asset tracker on a truck), LTE-M is required.
2. Assuming All Sensors Can Use PSM
If the application needs push notifications (e.g., firmware update command from server), PSM prevents incoming communication. Use eDRX instead for balance.
3. Ignoring Module Cost Difference
NB-IoT modules cost $2-4 vs LTE-M at $5-8. For 100,000+ device deployments, this $3 difference matters.
Practice Questions
What is the main difference between NB-IoT and LTE-M? NB-IoT: narrowband (200 kHz), lower data rate (65 kbps), deeper coverage (164 dB), no mobility. LTE-M: 1.4 MHz, 1 Mbps, mobility and VoLTE support.
How does PSM save battery? The device registers with the network then goes into deep sleep (microamps) for a configured period. The network buffers incoming data until the device wakes for TAU.
What is eDRX? Extended Discontinuous Reception — extends the paging cycle to reduce how often the device must wake to check for incoming data.
Challenge: Design an IoT connectivity plan for a smart city with 3 use cases: (1) 50,000 smart parking sensors (basement), (2) 10,000 waste bin level monitors (urban), (3) 100 electric scooter trackers (mobile citywide). Choose technology per use case, calculate battery life, and estimate total monthly data volume.
FAQ
Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro. Updated 2026-06-24.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro