// the find
eclipse-paho/paho.mqtt.embedded-c
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.