DEV Community

Cover image for IoT Architectures Under Pressure: a Firmware-less Approach (Part 2)
Adriano Repetti
Adriano Repetti

Posted on • Edited on

2 1 1 2 2

IoT Architectures Under Pressure: a Firmware-less Approach (Part 2)

TL;DR

By drawing inspiration from solutions in other domains, we should embrace a firmware-less approach for smart devices, ensuring greater flexibility, security, and long-term adaptability.

By centralizing device firmware on a hub or edge device, we eliminate redundant feature development across multiple devices. This reduces development and support costs but also simplifies maintenance.

Recap

In the previous post, we highlighted some (though certainly not all) of the challenges involved in building a smart device, focusing primarily on unforeseen costs and complications.

Post-sale costs often catch developers and customers off guard. Many products unexpectedly reach their end-of-support, leaving users with expensive devices they can no longer use at full capacity. This creates adoption anxiety, slowing the widespread integration of smart devices into our lives. Combined with high prices, poor security, and multiple cumbersome applications, these issues become significant barriers to adoption.

As companies and developers, we have a responsibility to support our customers to the best of our ability. Building smart devices isn’t just about innovation—it’s about ensuring long-term usability, security, and trust.

Rationale

Let's consider a few real-life scenarios:

  • When traveling from New York to Tokyo, most people don’t buy or even rent a private jet: they share existing infrastructure.
  • You don’t need separate computers for Microsoft Word and email: one device can handle multiple tasks.

Similarly, many features we expect from smart devices should be shared across multiple systems, rather than being duplicated on individual devices:

  • Internet connectivity.
  • User interfaces (local control panels, web interfaces, mobile apps).
  • User authentication.
  • Security and over-the-air updates.
  • Data collection.

In many cases (especially in a smart home setup) computing resources can also be shared. Input methods, CPU, memory, and graphics are often underutilized, making resource pooling a practical and efficient approach.

The very same idea we applied in serverless computing could be applied here: that's why I'm calling this firmware-less (with or without hyphen? leave a comment).

An Overview

Let's compare a possible traditional approach with a firmware-less approach.

A Traditional Approach

Our traditional smart thermostat is engineered somehow like this:

Diagram for a typical architecture for a smart thermostat

The fragmentation of interfaces and connectivity across smart home devices leads to redundancy, inefficiency, and complexity. Every new addition (whether an AC unit, alarm system, or smart speaker) introduces another screen, remote, or app, making interaction cumbersome instead of seamless.

A Firmware-less Approach

A more integrated approach could streamline smart home management, reducing unnecessary duplication and clutter while enhancing usability. Centralized control, shared UI frameworks, and edge computing could help consolidate resources so devices operate more efficiently and cohesively.

Smart devices could be thin clients, connecting to a hub that handles processing and UI rendering. Think of it like how cloud gaming works: instead of every gaming device needing high-end hardware, a central server does the heavy lifting.

Possible firmware-less architecture diagram

At first both approaches seem similar but note a few differences:

  • The edge device hosts our firmware (in theory our thermostat wouldn't even need a microcontroller at all).
  • All the expensive resources are shared: the edge device hosts multiple firmware and they all share CPU, memory, Internet connection, UI and cloud services.
  • Running on the same device it's easy for multiple applications to expose their own services and to use other services, when available, to add functionalities.

Which are the advantages?

  • Lower development costs – Comparable to a traditional non-smart device.
  • More affordable – Potentially cheaper than both other smart devices and even traditional non-smart thermostats.
  • No running costs – Updates are only required for the hub, which can be sourced by the user from any vendor and maintained via a subscription program.
  • Long-term relevance – Your product remains secure and up-to-date without additional company costs.
  • Better user experience – Simplifies interactions and eliminates redundant interfaces.
  • Stronger security management – Centralized control ensures consistent updates and authentication.
  • A service-oriented approach – Enables exciting possibilities:
    • Your AC unit could integrate with the alarm system to detect occupancy, optimizing energy use or adjusting when windows are open.
    • Your floor-cleaning robot could serve as an additional security layer within your alarm system.
    • Automation tasks become easier to set up (we all love Node-RED but it's not for everyone!)
    • Write a comment if you can think of other integration!

Of course, there are technical challenges to address, and we will explore them in the next post. However, this is not a disruptive approach: we already have all the necessary tools, and these patterns have been successfully tested across various industries and applications. Rather than reinventing the wheel, we should embrace a sustainable and efficient solution.

Dynatrace image

Observability should elevate – not hinder – the developer experience.

Is your troubleshooting toolset diminishing code output? With Dynatrace, developers stay in flow while debugging – reducing downtime and getting back to building faster.

Explore Observability for Developers

Top comments (2)

Collapse
 
chen-feng-cn profile image
Chen Feng ( 陳冯) • Edited

An alarm system is one of the most pervasive devices in any (smart) home, with various sensors placed throughout to detect presence and intrusions. These sensors could be shared across devices (aligning perfectly with the spirit of this approach).
For example, a floor-cleaning robot could use this data to prioritize cleaning the rooms where you spend the most time or to clean immediately after you leave a room.

Establishing communication protocols between services is essential, but the biggest challenge I can see is offloading a firmware to an unknown edge device. While an interpreted language like JavaScript or Python could work, it would be highly limiting. Containerized applications (Docker-style) might offer flexibility, but they are resource-intensive and wouldn’t fully resolve compatibility issues across different architectures (CPU, OS, etc.)

Collapse
 
adriano-repetti profile image
Adriano Repetti

Thank you for your feedback!

These sensors could be shared across devices

This is a very good point. A "client" device could/should share its own resources (as a service) to offer additional functionalities to the whole system. In an ideal world I'd imagine a simple "discovery" protocol to allow each firmware to search and use what's in the system without forcing the user to setup automation tasks.

...the biggest challenge I can see is offloading a firmware to an unknown edge device.

This is one of the points we're going to discuss in the next post.

Currently we have things like MicroPython (or CircuitPython) and tiny JS engines like JerryScript (and a few more others I can't remember) but you're right in saying that it would be extremely limiting (and possibly sub-optimal from a performance point of view).

Containers would run with relatively inexpensive hardware but they have the problem you mentioned.

One of the possible solutions we explored is based on WebAssembly, it has some VERY promising characteristics and we're going to talk about it in another post.

Gen AI apps are built with MongoDB Atlas

Gen AI apps are built with MongoDB Atlas

MongoDB Atlas is the developer-friendly database for building, scaling, and running gen AI & LLM apps—no separate vector DB needed. Enjoy native vector search, 115+ regions, and flexible document modeling. Build AI faster, all in one place.

Start Free

👋 Kindness is contagious

Explore this insightful piece, celebrated by the caring DEV Community. Programmers from all walks of life are invited to contribute and expand our shared wisdom.

A simple "thank you" can make someone’s day—leave your kudos in the comments below!

On DEV, spreading knowledge paves the way and fortifies our camaraderie. Found this helpful? A brief note of appreciation to the author truly matters.

Let’s Go!