Back
Loading views...Cellular_LTE_M
Cellular (LTE-M)
Category: Wireless
Overview
LTE-M (LTE Cat-M1, eMTC) is a low-power wide-area cellular standard optimized for IoT devices, operating on licensed LTE spectrum. It supports mobility, voice, and firmware updates with low power consumption, targeting smart meters, wearables, and asset trackers.
1. Theory & Fundamentals
- LTE category: Cat-M1 (1.4 MHz bandwidth, 1 Mbps downlink/uplink)
- Power saving: PSM (Power Saving Mode) + eDRX (Extended Discontinuous Reception)
- Coverage: MCE (Maximum Coupling Loss) 155.7 dB; better indoor penetration than 4G
- Frequency: Operates in licensed LTE bands (Band 2, 4, 12, 13, etc.)
- Handover: Supports full mobility across cells
- Carrier: AT&T, Verizon, T-Mobile, Vodafone IoT networks
- Module examples: u-blox SARA-R4, Quectel BG96, Nordic Thingy91
2. Frame / Packet Structure
LTE-M uses LTE frame structure:
10ms Radio Frame → 10 Subframes (1ms each) → 2 Slots (0.5ms)
PSM (Power Saving Mode):
Active → TAU Timer → PSM (sleep, µA) → Wake → Transmit → Back to sleep
TAU interval: Minutes to hours; device negotiates with network
eDRX (Extended DRX):
Device wakes periodically to check for downlink (10s to 40 min interval)
AT command interface (standard for modules):
AT+CEREG? Network registration status
AT+CGDCONT PDP context (APN)
AT+COPS Operator selection
AT+CMQTTCON MQTT connection (some modules)
3. Protocol Mechanics
- AT commands: Module controlled via UART AT commands (Hayes compatible + extensions)
- PDP context: Configure APN for data connection
- TCP/UDP sockets: Module handles TCP/IP stack internally
- SSL/TLS: Many modules support onboard TLS for MQTT/HTTPS
- PSM negotiation: AT+CPSMS to configure sleep periods
4. Hardware Implementation
- Module: Quectel BG96 (LTE-M + NB-IoT + GNSS), u-blox SARA-R410M
- UART: Connect to MCU UART; 115200 baud typical
- SIM: nano-SIM or eSIM; IoT-specific SIM from carrier
- Antenna: External LTE antenna; 50Ω coax
- Power: 3.8V; up to 500mA TX peak; µA in PSM sleep
5. Register-Level / Configuration
// AT command driver
void LTE_Init(void) {
UART_Send("AT
"); WaitOK(1000);
UART_Send("AT+CGDCONT=1,"IP","iot.carrier.com"
"); WaitOK();
UART_Send("AT+CEREG=1
"); WaitOK(); // Enable registration URC
UART_Send("AT+CFUN=1
"); WaitOK(); // Full functionality
// Wait for +CEREG: 0,1 (registered home)
}
void LTE_SendTCP(const char *host, uint16_t port, uint8_t *data, uint16_t len) {
char cmd[80];
sprintf(cmd, "AT+QIOPEN=1,0,"TCP","%s",%d,0,1
", host, port);
UART_Send(cmd); WaitResponse("CONNECT", 30000);
sprintf(cmd, "AT+QISEND=0,%d
", len);
UART_Send(cmd); UART_Send(data, len);
WaitOK(5000);
}
6. Driver / Software Development
// PSM configuration
void LTE_EnablePSM(uint32_t tau_seconds, uint32_t active_seconds) {
// T3412 (TAU) timer: encode in 3GPP format
// T3324 (Active) timer: encode in 3GPP format
char cmd[60];
sprintf(cmd, "AT+CPSMS=1,,,"%s","%s"
",
encode_timer(tau_seconds), encode_timer(active_seconds));
UART_Send(cmd);
}
7. Debugging & Testing
- AT terminal: PuTTY/minicom to test AT commands manually
- Quectel QCOM tool: GUI for BG96 testing
- Common issues: APN wrong; SIM not recognized; no network coverage; PSM not negotiated
- AT+CGREG? / AT+CEREG? shows registration status; AT+CSQ shows signal strength
8. Real-World Applications
- Smart electricity meters (AMI infrastructure)
- Connected wearables and GPS trackers
- Vehicle telematics
- Remote industrial monitoring
- Medical device connectivity
9. Advanced Topics & Edge Cases
- LTE-M vs NB-IoT: LTE-M has higher throughput and voice; NB-IoT has lower power and cost
- eDRX vs PSM: eDRX allows periodic downlink; PSM for mostly sleeping devices
- FOTA (Firmware Over The Air): Delta updates via LTE-M
- GNSS combo: BG96 combines LTE-M + GPS in one module
- IoT SIM: Multi-IMSI SIM roams across carriers automatically
10. Standards & Variants
| Standard | BW | DL/UL | PSM | Notes |
|---|---|---|---|---|
| LTE-M (Cat-M1) | 1.4 MHz | 1/1 Mbps | Yes | Mobility, voice |
| NB-IoT | 200 kHz | 27/63 kbps | Yes | Lower power/cost |
| LTE Cat-1 | 20 MHz | 10/5 Mbps | Limited | Faster IoT |
| EC-GSM | 200 kHz | 70 kbps | Yes | 2G legacy |
💡 Practical Examples
Example 1: Connect and send MQTT
LTE_Init();
UART_Send("AT+CMQTTACCQ=0,"client_id"
");
UART_Send("AT+CMQTTCONNECT=0,"tcp://broker:1883",60,1
");
UART_Send("AT+CMQTTPUB=0,"sensor/temp",10,5
");
UART_Send("23.50
"); // Payload
Example 2: Enable PSM for battery device
LTE_EnablePSM(3600, 10); // Sleep 1 hour, active 10 seconds
Example 3: HTTP POST
UART_Send("AT+QHTTPCFG="contextid",1
");
UART_Send("AT+QHTTPURL=30,80
"); // URL length
UART_Send("http://api.example.com/data
");
UART_Send("AT+QHTTPPOST=16,80,80
");
UART_Send("{"temp":23.5}
");
🧪 Practice Questions
Beginner
- What does LTE-M stand for?
- What is PSM in LTE-M?
- How does LTE-M differ from standard 4G?
- What interface do cellular modules use for control?
- What is an APN?
Intermediate
- Implement an AT command UART driver with timeout and retry.
- How do you configure PSM timer values?
- What is the difference between PSM and eDRX?
- Implement MQTT over LTE-M using AT commands.
- How does LTE-M handle handover between cells?
Advanced
- Design a fleet tracker using LTE-M + GNSS with 1-year battery.
- Implement FOTA using LTE-M delta updates.
- Build a fallback system: LTE-M primary, NB-IoT secondary.
- Optimize PSM for maximum battery life in a smart meter.
- Implement mutual TLS authentication for MQTT over LTE-M.
Hands-on Projects
- GPS Tracker: BG96 + STM32, send coordinates via MQTT every 30s.
- Smart Meter: LTE-M module sends energy readings hourly to cloud.
- Emergency Alert: LTE-M device wakes from PSM on interrupt, sends alert.
Checklist
- [ ] Send AT commands and parse responses
- [ ] Configure APN and register on network
- [ ] Open TCP socket and send/receive data
- [ ] Implement MQTT over AT commands
- [ ] Configure PSM for long battery life
- [ ] Use eDRX for periodic downlink
- [ ] Implement HTTPS/TLS connection
- [ ] Read signal quality (AT+CSQ)
- [ ] Handle network loss and reconnection
- [ ] Integrate GPS for asset tracking