finds.dev← search

// the find

eclipse-paho/paho.mqtt.embedded-c

★ 1,524 · C · NOASSERTION · updated Mar 2024

Paho MQTT C client library for embedded systems. Paho is an Eclipse IoT project (https://iot.eclipse.org/)

Paho embedded-c is the Eclipse Foundation's official MQTT client library for microcontrollers and constrained devices. It ships three layers: raw packet serialization (MQTTPacket), a C++ client (MQTTClient), and a C equivalent (MQTTClient-C). Target platforms include Arduino, mbed, FreeRTOS, and bare-metal.

The three-layer architecture is genuinely useful — you can drop in just MQTTPacket if you only need serialize/deserialize and supply your own transport, keeping the footprint tiny. The EPL/EDL dual license is a practical choice for commercial embedded products that can't contribute back. Platform abstraction is done via swappable network structs rather than a vtable, which maps well to C environments without dynamic dispatch. The baremetal non-blocking samples (pub0sub1_nb.c) show the intended usage pattern clearly.

Last commit was March 2024 and the pace before that was already slow — MQTT 5 support is not here (there's a test script for it but no client implementation). The committed Debug/ build artifacts (makefile, .d files, Eclipse CDT settings) are checked into the repo, which is sloppy and suggests the project isn't being actively gardened. FreeRTOS support is a single .c file with no CMSIS-RTOS2 or Zephyr equivalents, so anything not Arduino/mbed/FreeRTOS requires you to write the transport layer yourself with minimal documentation. There's no TLS integration at the MQTTClient layer — you have to bolt on mbedTLS or wolfSSL yourself.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →