MQTT (Message Queuing Telemetry Transport) is a lightweight open messaging protocol that was developed for constrained environments such as M2M (Machine to Machine) and IoT (Internet of Things), where a small code footprint is required. MQTT is based on the Pub/Sub messaging principle of publishing messages and subscribing to topics. The protocol efficiently packs messages to keep the overhead very low. The MQTT specification recommends TLS as a transport option to secure the protocol using port 8883 (secure-mqtt). Constrained devices can benefit from using TLS session resumption to reduce the reconnection cost.
The wolfMQTT library is a client implementation of the MQTT written in C for embedded use. It supports SSL/TLS via the wolfSSL library. It was built from the ground up to be multi-platform, space conscience and extensible. It supports all Packet Types, all Quality of Service (QoS) levels 0-2 and supports SSL/TLS using the wolfSSL library. This implementation is based on the MQTT v3.1.1 specification.
wolfMQTT is built for maximum portability, and is generally very easy to compile on new platforms. If your desired platform is not listed under the supported operating environments, please contact wolfSSL at firstname.lastname@example.org.
• Built from scratch by wolfSSL engineers
• Based on MQTT v3.1.1 specification
• Supports all client side packet types and protocol options
• QoS Levels 0-2 (guaranteed delivery)
• Supports plain TCP or TLS (via the wolfSSL library)
• Single threaded model and single message callback
• Written in Native C89 with portability/compatibility in mind
• Space conscience design (Compiled size is about 3.6KB)
• User manual with build instructions, example overview and API documentation
• Example MQTT client implementations for AWS, Azure IoT Hub, Firmware Upgrade and basic client.
• Network interface is abstracted via callbacks for extensibility
• Packet parsing encoding/decoding structured for custom use
• Minimal external dependencies (strlen, memcpy, memset)
• Non-blocking support
• Detailed error checking/handling
• Doxygen style inline documentation
• Less than 1200 lines of well structured C code
• Tested on multiple variants of MQTT broker servers, QoS levels 0-2 with/without TLS.
• Tested on Linux, Mac OS X , Windows, Arduino, FreeRTOS and Harmony.
• Inherits wolfSSL library features such as lightweight TLS using ECDH-ECDSA, ChaCha20/Poly1305 AEAD.
• Open source (GPLv2)
• GitHub location: https://github.com/wolfSSL/wolfMQTT