All systems operational·50+ combined years · 14 verticals · UK HQ
IoT-WorkS
home/engineering/firmware development
/ engineering / firmware · 02 of 03

Firmware that
finishes the device.

Made-to-order embedded software — for hardware we designed, hardware you've designed, or off-the-shelf modules you'd like to make production-grade.

main.c — iot-works/sensor-fw
esp-idf 5.4 · fw v2.4.1
// Cold-chain telemetry — publish + sleep
#include "esp_sleep.h"
#include "mqtt_client.h"
#include "sht4x.h"

void app_main(void) {
    sht4x_init(I2C_NUM_0);
    mqtt_client_t *m = mqtt_connect("mqtts://hub.iot-works.com");

    while (1) {
        float t, h;
        sht4x_read(&t, &h);

        // Signed payload, OTA-rolled keys
        mqtt_publish_signed(m, "v1/telemetry",
            "{\"t\":%.2f,\"h\":%.2f}", t, h);

        esp_deep_sleep(15 * 60 * 1000000ULL); // 15 min
    }
}
$ idf.py build flash monitor —port /dev/ttyUSB0
I (4231) sht4x: temp=4.12°C rh=78.4%
I (4233) mqtt: TLS handshake OK · cert OU=IoT-WorkS
I (4287) mqtt: PUBLISH v1/telemetry · ack 200
I (4290) ota: signature verified · current=v2.4.1
I (4291) sleep: deep_sleep 900s · wake on RTC
$
/ scope

From bring-up to OTA-deployable.

bring-up

Board bring-up

First-light. Boot, clock tree, peripherals validated, blink-test, JTAG/SWD set up.

drivers

Drivers + protocols

I2C, SPI, UART, CAN, USB, RS485. Sensor drivers, protocol stacks, abstraction layers.

app

Application logic

State machines, sleep + power management, telemetry buffering, edge inference.

deploy

OTA + security

Secure boot, signed updates, OTA delivery, rollback, key provisioning.

/ flexibility

Hardware-agnostic by design.

Three common scenarios — and we run all three regularly:

scenario 01

"Use your modules."

Customer adopts our LTE / LoRa / Battery / Ethernet module family. We've already shipped firmware for them — fastest path to a working product.

typical timeline: 4–8 weeks
scenario 02

"We have hardware. Need firmware."

Most common. Customer brings their own board, off-the-shelf modules, or a partner's reference design. We deliver embedded software against it.

typical timeline: 8–16 weeks
scenario 03

"Modernise legacy firmware."

Existing product, frozen toolchain, no OTA, security audit issues. We refactor, add OTA + secure boot, get it certification-ready.

typical timeline: 6–12 weeks
/ start

What chip? What stack? What does it need to do?

Even a one-line description gets a real engineering response within one working day. No salespeople in the loop.