Skip to main content

Command Palette

Search for a command to run...

From Prototype to Production: A Firmware Engineer’s Checklist for Shipping IoT Devices

Updated
5 min read

The biggest challenge in IoT isn't coming up with ideas—it's execution.

Many embedded projects work well in the lab, but they fail in the real world: flaky connectivity, unstable firmware, inconsistent power behavior, strange resets, or untestable hardware.

Over the last 13+ years working across HVAC, industrial IoT, healthcare wearables, and heavy equipment, I’ve refined a practical checklist that helps take a prototype all the way to a stable, production-ready device.

If you’re building an IoT product (or want to avoid expensive surprises later), here’s the checklist I wish every team followed.

1. Hardware → Firmware Handoff: What Must Be Finalized

A painful truth:

Most firmware problems are actually hardware mistakes discovered too late.

Before freezing the PCB, make sure your firmware team has validated:

✔ Proper power domain mapping

  • Backup battery rails

  • Analog vs digital isolation

  • Power sequencing for radios (BLE, Wi-Fi, LTE)

✔ Available debug interfaces

  • SWD/JTAG exposed — not removed in final revision

  • Test pads for UART logs

  • Boot mode pins accessible

✔ Flash / RAM sizing

A prototype may run on oversized dev kits, but production hardware often shrinks memory.

Ensure:

  • Bootloader + application + OTA partition sizes fit

  • Worst-case stack usage is measured

  • Heap fragmentation risk is evaluated

    ✔ Sensor & peripheral validation

Before PCB freeze, verify with firmware:

Better hardware = easier firmware.

2. Bootloader Strategy: Don’t Ship a Device You Can’t Fix

A production IoT device must be updatable.

Your bootloader isn’t just a technical detail — it’s the safety net that prevents bricked devices and expensive recalls.

A good production bootloader includes:

✔ Dual-bank firmware architecture

  • Image A (running)

  • Image B (update candidate)

  • Rollback if CRC/signature fails

  • Status flags stored outside the application partition

✔ Cryptographic signing

At minimum:

  • SHA-256 digest

  • RSA/ECC signature

  • Version metadata embedded

Never trust unsigned field updates.

✔ Update integrity & staged flashing

  • Write → verify → switch

  • Never boot incomplete images

  • Log update failures for support teams

✔ Fail-safe behavior

If update fails:

  • Revert to last known image

  • Don’t soft-brick the device

  • Leave logs for diagnostics

A robust bootloader is worth more than the entire application.

3. OTA Update Planning: Architecture, Cloud, and Safety

OTA updates are one of the hardest parts of IoT.

Here’s a streamlined strategy:

✔ Decide update transport early

  • MQTT

  • HTTPS

  • BLE (for consumer mobile apps)

  • USB/UART (service/debug mode)

✔ Chunked vs full-image updates

  • Small devices: delta patches reduce bandwidth

  • Larger devices: full binary is simpler and safer

✔ Secure update pipeline

  • Cloud signs the firmware

  • Device verifies before accepting

  • Logs update progress to backend

  • Rate limit updates (avoid DDOSing your fleet)

✔ Update policy

  • Mandatory vs optional

  • Staged rollout (1% → 10% → 100%)

  • Rollback rules

  • Force-update for critical failures

OTA is not “just a feature” — it’s a strategy.

4. Battery & Power Optimization: The Silent Production Killer

The biggest source of field complaints for IoT products?

🔋 “Battery drains too fast.”

Before production, validate:

✔ Sleep mode behavior under real conditions

  • CPU sleep instead of idle loops

  • Wake sources: RTC, GPIO, radio events

  • Deep sleep current measured with a real power analyzer (Otii, Joulescope)

✔ Radio duty cycle audits

  • BLE connection intervals

  • Wi-Fi scan rates

  • LTE attach/re-attach timing

  • Cloud report frequency (no unnecessary pings)

✔ Peripheral power domains

  • Disable unused sensors when idle

  • Reduce sampling rate during stable periods

  • Only wake ADC when needed

✔ Temperature effects

Battery performance can degrade:

  • High temperature (industrial enclosures)

  • Low temperature (outdoor sensors)

Measure in environmental chambers if possible.

Small optimizations can double battery life.

5. Certification Considerations: Plan Early, Save Money

Certifications are expensive and slow.

Plan them before you write 100,000 lines of firmware.

Common certifications:

  • FCC (USA)

  • CE (Europe)

  • IC (Canada)

  • UL / IEC safety

  • BLE/Wi-Fi Alliance (depending on stack)

  • Medical / Healthcare (IEC 62304)

Firmware influences certification:

  • Radio transmission duty cycles

  • Spurious emissions from poorly timed GPIO toggling

  • Stable boot sequence (test labs re-power devices constantly)

  • Error-free operation during EMC tests

Good engineering reduces certification retries (saves weeks).

6. Manufacturing Test Hooks: Don’t Wait Until Last Minute

Your factory will need ways to:

  • Test sensors quickly

  • Validate connectivity

  • Flash firmware

  • Record device IDs

  • Run automated self-tests

Plan this before handing firmware to manufacturing.

✔ Add a factory test mode

Activated by:

  • GPIO strap

  • Magic UART command

  • Specific boot sequence

Includes tests for:

  • Sensors

  • Flash integrity

  • Radio ping

  • Buttons/LEDs

  • Battery voltage

✔ Include unique ID + provisioning logic

Every device needs:

  • Serial number

  • Model ID

  • MAC address

  • Cryptographic keys (careful!)

Simplify manufacturing → reduce defects → happier customers.

Final Thoughts

Going from prototype to production isn’t just “more coding.”

It’s a shift in mindset:

  • Reliability over convenience

  • Safety over speed

  • Maintainability over hacks

  • Testability over “it works on my desk”

Following this checklist consistently has saved teams I work with months of rework and prevented expensive field failures.

If you’re building an IoT device and want help reviewing firmware architecture, OTA strategy, or production readiness, feel free to reach out. I help teams design and ship reliable, maintainable embedded systems.

🌐 Visit: https://vinodtech.com

✉️ Email: vinodkumar1947@gmail.com