// the find
Azure/azure-iot-sdk-c
A C99 SDK for connecting devices to Microsoft Azure IoT services
The official Microsoft C SDK for connecting devices to Azure IoT Hub and Device Provisioning Service. Written in C99 with a platform abstraction layer that lets it run on everything from Linux/Windows servers down to microcontrollers with 64KB RAM. If you're shipping hardware that talks to Azure IoT, this is the path Microsoft officially supports.
The platform abstraction layer is genuinely well-designed — porting to a new OS means implementing a small set of adapter functions, not rewriting the stack. Supporting MQTT, AMQP, and HTTPS at the transport layer with runtime selection is practical for hardware that may only have one protocol stack available. The LTS release model with dated tags gives embedded teams a stable target they can certify against without chasing main. The test suite covers unit, integration, and long-haul scenarios, which is more than most embedded SDKs ship with.
The README still warns about a TLS certificate migration from October 2022 — that's a dead notice left in place for years, which signals documentation hygiene problems throughout. The service client and serializer libraries are deprecated and still sitting in the repo, making it unclear what's safe to use versus what will quietly stop being maintained. TPM enrollment is being deprecated but the code still ships, which is a support landmine. The SDK depends on multiple git submodules (c-utility, uamqp, umqtt) that each have their own release cycles, making dependency management messier than it should be for a project where firmware update cadence is slow.