Provisioning MS Azure and the MXChip for the Internet of Things with Chirps

Alasdair Allan
3 min readAug 17, 2018

Chirp started off as a mobile application, a platform for exchanging data using sound. Give the app a link, a piece of text, or an image, and it will “chirp” a sound which can be decoded by anyone else using the app and points to the data on Chirp’s servers. They then went on released an SDK enabling you to use Chirps to transfer data via audio on embedded devices like the Arduino.

“Chirp enables data to be transferred via sound, using a device’s existing speaker and microphone. It can use audible or ultrasonic frequencies, works in the most challenging acoustic environments, and does not need a network connection.”

Earlier this week, the company announced a partnership with Microsoft allowing you to “…provision new IoT devices to the Azure Cloud with nothing more than a single Chirp tone,” alongside a new ARM C SDK intended to be used with Microsoft’s MXChip platform and other Cortex-M4 and -M7 boards.

An MXChip IoT DevKit waiting for Wi-Fi configuration. (📷: Chris Pietschmann)

While the original release of SDK back in 2015 supported the Arduino, it’s somewhat unclear the current status of Chirp’s Arduino GitHub repo as more recent SDK releases seem to have shipped as binary blobs, and there is no mention of Arduino support on the Chirp developer site.

The new ARM C libraries therefore join the existing officially supported “Chirp Connect” SDKs for iOS/macOS, Android, Python, and Javascript.

Provisioning of Microsoft’s IoT DevKit, based around the MXChip module, to connect to their Azure Cloud platform normally involves rebooting the board into AP mode and configuring wireless information from a locally served web form — which is a pretty typical procedure for setting up Internet of Things smart things. However since the MXChip board has an on-board microphone, the Chirp SDK now lets you bypass this manual setup process.

“Credentials are converted into sound and broadcast from a phone or laptop’s loudspeaker. [Then] a nearby offline device running the Chirp ARM SDK receives the data over audio and use the credentials to connect and authenticate with the network.”

Setting up an MXChip devkit and connecting it to Azure IoT Central using sound. (📷: Microsoft)

While this week’s release has been tailored to Microsoft’s MXChip board, the underlying ARM C SDK is a general release for Cortex-M4 and -M7 chips, and should work with any board based around them, “…if you already have an M4- or M7-based device with audio I/O, then your system is already Chirp-ready with no addition to your BOM.”

The problems around provisioning and setup of smart objects, which typically are without screens or keyboards of their own, is one that is the community has been thinking about for a long time, and the use of Chirp is an interesting work around for the problem.

However in a world where every smart object now has its own app, the real trouble with things,” is how we move our smart things away from being so screen focused during all their interactions, not just during the provisioning and setup stage.