%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#2C3E50', 'primaryTextColor': '#fff', 'primaryBorderColor': '#16A085', 'lineColor': '#16A085', 'secondaryColor': '#E67E22', 'tertiaryColor': '#7F8C8D'}}}%%
sequenceDiagram
participant D as Device
participant BS as Base Station
participant Cloud as Sigfox Cloud
participant App as Customer App
Note over D: Prepare 12-byte message
D->>BS: Transmit (100 bps, ~6 sec)
Note over D: TX: 40 mA × 6 sec = 0.067 mAh
BS->>Cloud: Forward + metadata (RSSI, SNR)
Cloud->>Cloud: Deduplication<br/>Geolocation
Cloud->>App: HTTPS callback
Note over D,App: Optional Downlink (4 max/day)
alt Downlink requested
D->>BS: Uplink with downlink flag
BS->>Cloud: Message received
Cloud->>BS: Downlink data (8 bytes, 600 bps)
Note over D: Open RX window (20-25 sec)
Note over D: RX: 50 mA × 25 sec = 1.25 mAh
BS->>D: Send downlink
Note over D: Power cost: 17× uplink!
else No downlink
Note over D: Return to sleep immediately
Note over D: Sleep: 1 µA
end
1115 Sigfox Message Flow and Communication
1115.1 Introduction
Understanding Sigfox’s message flow is crucial for designing efficient IoT applications. This chapter covers the uplink and downlink communication patterns, power consumption implications, and common pitfalls that developers encounter.
By the end of this chapter, you will be able to:
- Explain the Sigfox uplink and downlink message flow
- Calculate power consumption for different messaging patterns
- Avoid common pitfalls in payload design and message budgeting
- Design applications that work within Sigfox’s constraints
1115.2 Prerequisites
Before this chapter, ensure you’ve completed:
- Sigfox Technology Overview: Core technology and architecture understanding
- LPWAN Fundamentals: Basic LPWAN concepts and trade-offs
1115.3 Sigfox Message Flow: Uplink and Downlink
The Sigfox communication protocol follows a carefully orchestrated sequence for uplink (device-to-cloud) and optional downlink (cloud-to-device) messaging:
{fig-alt=“Sigfox message flow sequence diagram illustrating the complete uplink and optional downlink communication protocol with power consumption analysis.”}
1115.3.1 Uplink Characteristics (Device to Cloud)
- Transmission: 6 seconds at 40 mA current
- Energy cost: ~0.067 mAh per message
- Frequency: Up to 140 messages per day
- Payload: 12 bytes maximum
- Reliability: Fire-and-forget (no acknowledgment by default)
- Reception: Multiple base stations receive simultaneously
- Processing: Backend performs deduplication and geolocation
1115.3.2 Downlink Characteristics (Cloud to Device)
- Frequency: Maximum 4 messages per day
- Payload: 8 bytes maximum
- Timing: Only sent immediately after uplink with downlink request flag
- RX window: Device must listen for 20-25 seconds at 40-50 mA
- Energy cost: ~1.2 mAh per downlink (17x more than uplink!)
- Use cases: Configuration updates, firmware triggers, critical alerts
- Limitation: Not suitable for frequent bidirectional communication
1115.3.3 Energy Impact Comparison
| Operation | Duration | Current | Energy | Impact |
|---|---|---|---|---|
| Sleep | 23h 59m | 1 µA | 0.024 mAh/day | Minimal |
| Uplink only | 6 sec | 40 mA | 0.067 mAh | 1x (baseline) |
| Uplink + Downlink RX | 26 sec | 45 mA | 0.325 mAh | 5x more |
| Daily operations | 24 msg/day | Mixed | 1.6 mAh/day | 7.4 year battery |
| With 4 downlinks | 24 up + 4 down | Mixed | 2.9 mAh/day | 2.4 year battery |
Design recommendation: Use downlink sparingly (monthly configuration updates) rather than frequently (daily commands) to preserve battery life.
1115.4 Common Pitfalls and Solutions
1115.4.1 Pitfall 1: Sigfox Downlink Limitation
The mistake: Designing IoT applications that require frequent bidirectional communication, assuming Sigfox supports downlink messaging comparable to uplink capacity.
Symptoms:
- Configuration updates to devices take days instead of hours
- Remote firmware updates are practically impossible (64KB firmware / 8 bytes per downlink / 4 downlinks per day = 2,048 days!)
- Devices cannot receive acknowledgments for critical alerts
- Actuator control commands fail or arrive too late to be useful
Why it happens: Sigfox is fundamentally asymmetric by design:
- Uplink: 140 messages/day, 12 bytes each (1,680 bytes/day capacity)
- Downlink: Only 4 messages/day, 8 bytes each (32 bytes/day capacity)
- Downlink is 52x more constrained than uplink
This asymmetry exists because downlink requires the device to stay awake in receive mode for 20-25 seconds after requesting a downlink window, consuming 17x more energy than uplink-only operation.
The fix:
- Design for uplink-only: Treat Sigfox as a sensor reporting network, not a command-and-control system
- Batch configuration changes: Accumulate settings and send in monthly firmware updates via physical access or alternative channel
- Use downlink sparingly: Reserve 4 daily downlinks for critical alerts (alarm acknowledgments, emergency shutoff)
- Hybrid architecture: Pair Sigfox with cellular fallback (NB-IoT) for devices requiring frequent commands
Prevention: Before choosing Sigfox, count your downlink requirements. If devices need more than 4 commands/day or firmware updates more than annually, consider LoRaWAN (unlimited downlinks after each uplink) or NB-IoT (full bidirectional TCP/UDP). Sigfox excels at “sensors that report” but struggles with “actuators that receive commands.”
1115.4.2 Pitfall 2: Message Size Constraint
The mistake: Designing payload formats without considering Sigfox’s strict 12-byte uplink limit, leading to either data truncation or message fragmentation across multiple transmissions.
Symptoms:
- Critical sensor data is dropped or rounded excessively to fit payload
- Multi-message sequences arrive out of order or with gaps (lost messages)
- Application logic becomes complex trying to reassemble fragmented payloads
- Message quota exhausted mid-day due to payload fragmentation
Why it happens: Sigfox enforces a hard 12-byte payload limit for uplink messages. Developers accustomed to MQTT (256MB), HTTP (unlimited), or even LoRaWAN (243 bytes) often design payloads that exceed this:
- GPS coordinates: 8-12 bytes (latitude + longitude as floats)
- Timestamp: 4-8 bytes (Unix epoch or ISO format)
- Device ID: 4-8 bytes (UUID or serial number)
- Sensor readings: 2-8 bytes per sensor
A “simple” GPS tracker with timestamp and battery level easily reaches 16-20 bytes in naive encoding.
The fix:
Compact binary encoding: Replace floats with scaled integers (GPS: 4 bytes for lat/lon combined at 10m resolution)
Eliminate redundant data: Device ID is already in Sigfox frame header; don’t repeat in payload
Relative timestamps: Send seconds-since-last-message (2 bytes) instead of full epoch (4 bytes)
Data prioritization: Send critical values every message, less critical values in rotation
Payload design template:
Bytes 0-1: Primary sensor (scaled integer) Bytes 2-3: Secondary sensor (scaled integer) Bytes 4-5: Battery/status flags (packed bits) Bytes 6-11: GPS or additional data (compressed)
Prevention: Design payloads on paper before coding. Use bit-packing for boolean flags, scaled integers instead of floats, and delta encoding for slowly-changing values. Validate that typical and worst-case payloads fit in 12 bytes. If 12 bytes is insufficient even with optimization, consider LoRaWAN (243 bytes) or NB-IoT (1600 bytes per message).
1115.4.3 Pitfall 3: Exhausting Daily Message Budget
The Mistake: Implementing aggressive retry logic that sends the same message multiple times when no acknowledgment is received, quickly consuming the 140 messages/day quota.
Why It Happens: Developers accustomed to TCP/IP or MQTT expect acknowledgments and implement retry patterns like “send up to 5 times until ACK received.” With Sigfox’s fire-and-forget model (no native ACKs) and 140 message/day limit, this approach exhausts the daily budget by mid-morning:
Scenario: Sensor sends every 15 minutes with 3 retries per reading
- Readings/day: 96 (24 hours × 4/hour)
- With 3 retries: 96 × 3 = 288 messages/day
- Sigfox limit: 140 messages/day
- Result: Device blocked by 10:30 AM, no data for rest of day
The Fix: Accept Sigfox’s inherent ~95-98% delivery rate without retries. Design your application to tolerate occasional missing messages:
- No application-level retries: Trust Sigfox’s built-in triple transmission (each message sent 3× on different frequencies)
- Backend interpolation: Fill missing readings using adjacent values
- Delta encoding: Send only changes from last confirmed value
- Critical alerts: Reserve 10-20 messages/day for burst alerts, use remaining 120-130 for scheduled readings
- Budget monitoring: Track daily message count in firmware, throttle non-critical messages when approaching 100
1115.4.4 Pitfall 4: Missing the Downlink RX Window
The Mistake: Requesting a downlink but putting the device to sleep before the receive window opens, resulting in missed configuration updates or commands.
Why It Happens: The downlink window has strict timing requirements that developers often misunderstand:
Sigfox Downlink Timing:
1. Device sends uplink with downlink request flag = TRUE
2. Device MUST stay awake for 20-25 seconds in RX mode
3. Base station transmits 8-byte downlink during this window
4. If device sleeps early → downlink lost forever
Common mistake:
- Uplink sent at T=0
- Device enters sleep at T=5 seconds (too early!)
- Downlink arrives at T=20 seconds → device asleep → lost
The downlink arrives 20 seconds after uplink, but many implementations only wait 5-10 seconds before sleeping.
The Fix: Implement proper downlink handling with conservative timing:
- Wait full 25 seconds: After uplink with downlink flag, keep radio in RX mode for 25 seconds minimum
- Power budget: Each downlink costs ~1.25 mAh (vs 0.067 mAh uplink-only)—factor this into battery calculations
- Downlink scheduling: Only request downlinks when essential (firmware triggers, config changes)
- Timeout handling: If no downlink received after 25 seconds, log the miss and continue
- Daily limit awareness: Only 4 downlinks/day—request sparingly, not on every uplink
1115.5 Global Coverage Misconception
The Misconception: Many companies assume Sigfox offers global coverage similar to cellular networks (190+ countries), leading to deployment failures in 20-40% of target markets.
Reality Check with Real-World Data:
Sigfox Coverage Reality (2024):
- Strong Coverage: 22 Western European countries (85-95% population coverage)
- Moderate Coverage: USA, Canada, Australia (60-70% population, concentrated in major cities)
- Limited Coverage: Latin America (Sao Paulo, Mexico City, Buenos Aires only), Eastern Europe (Poland, Czech Republic)
- Essentially No Coverage: China, Russia, India (>3 billion people excluded), most of Africa and Middle East
Case Study: Global Fleet Management Failure
- Company: European logistics firm with 10,000 shipping containers
- Assumption: “Sigfox operates in 70 countries, we operate in 30 countries, we’re covered”
- Reality: 8 out of 30 target countries had zero Sigfox coverage (China, Russia, India, Indonesia, Vietnam, Thailand, Kenya, Nigeria)
- Impact: 2,400 deployed devices (24% of fleet) became non-functional in coverage gaps
- Financial Loss: $24,000 hardware + $14,400/year subscriptions wasted = $86,400 over 5 years
- Resolution: Emergency deployment of dual-mode NB-IoT devices in gap countries, additional $72,000 cost
Why This Happens:
- Operator-Dependent Model: Sigfox requires local Sigfox Network Operator (SNO) in each country
- Business Case Limitations: SNOs only deploy where IoT market size justifies infrastructure investment
- Competitive Landscape: In Asia, cellular IoT (NB-IoT/LTE-M) dominates; no business case for Sigfox SNOs
- Regulatory Barriers: Some countries restrict unlicensed LPWAN or have national security concerns
Pre-Deployment Verification Protocol:
- Step 1: Check sigfox.com/coverage for each target country (not just “Sigfox exists”)
- Step 2: Deploy 10-20 test devices in actual deployment locations for 30-day field trial
- Step 3: Measure message success rate (accept only if >95% delivery)
- Step 4: For coverage gaps, design hybrid deployment (Sigfox + NB-IoT fallback) or choose cellular IoT for true global coverage
Bottom Line: Sigfox is excellent for European regional deployments but NOT a global solution like cellular networks. Always verify operator availability AND coverage quality per country before committing to Sigfox.
1115.6 Summary
In this chapter, you learned about Sigfox’s communication patterns and constraints:
Message Flow:
- Uplink: 6 seconds at 100 bps, 12-byte payload, 140 messages/day
- Downlink: 8-byte payload, 4 messages/day maximum, 20-25 second RX window
Power Impact:
- Uplink-only: 0.067 mAh per message (battery-efficient)
- With downlink: 1.25 mAh (17x more energy)
- Always request downlinks sparingly to preserve battery
Common Pitfalls to Avoid:
- Designing for bidirectional communication (use uplink-only patterns)
- Exceeding 12-byte payload limit (use compact binary encoding)
- Aggressive retries exhausting daily quota (trust triple transmission)
- Missing downlink RX window timing (wait full 25 seconds)
- Assuming global coverage like cellular (verify per-country)
1115.7 What’s Next
Continue learning about Sigfox deployment:
- Next: Sigfox Deployment - Coverage verification and deployment best practices
- Then: Sigfox Hands-On - Interactive lab with ESP32 simulation
- Then: Sigfox Assessment - Comprehensive quizzes and review