This tutorial describes how to use Microsoft IoT Edge to connect a Revolution Pi system to Azure IoT Hub. The process involves configuring Azure IoT Hub, registering your IoT device, and setting up the IoT Edge runtime on your RevPi.

Prerequisites #

✓ A valid Azure account
✓ RevPi device (at least 8 GB storage)
✓ PC with internet access
✓ Basic familiarity with Linux command line
✓ SSH access to your RevPi

Hardware #

✓ RevPi base module with minimum 8 GB storage
✓ Power supply
✓ Network connecion
✓ PC with internet access

Software #

✓ Latest version of Raspberry Pi OS
✓ At least 600 MB of available memory
✓ SSH client (e.g., PuTTY)

▷ Create an Azure account at azure.microsoft.com/free.

▷ Log in to the Azure Portal.

▷ Set up SSH access to your RevPi device.

▷ Update your RevPi to the latest version of Raspberry Pi OS.

▷ Ensure you have 600 MB of free memory available.

Step 1: Setting up Azure #

Creating the IoT Hub #

▷ Log in to the Azure Portal at portal.azure.com.

▷ Choose Create a resource and search for IoT Hub.

▷ Choose Create.

▷ Select your subscription and resource group or create a new one.

▷ Choose the region closest to you.
NOTE: Not all Azure services are available in all regions.

▷ Select the pricing tier that matches your needs under Management.

▷ Choose Review + Create.

▷ Choose Create to deploy your IoT Hub.

Creating the Edge Device #

▷ Navigate to your newly created IoT Hub.

▷ Select IoT Edge under Device management in the sidebar.

▷ Choose Add IoT Edge Device.

▷ Enter a Device ID for your RevPi.

▷ Accept the default settings.

▷ Choose Save.

▷ Choose Refresh.

▷ Select your newly created device.

▷ Copy the Primary Connection String - you’ll need this later.

Step 2: Setting up the RevPi Device #

Installing Required Packages #

▷ First, add the Microsoft package repository and GPG key:

curl https://packages.microsoft.com/config/debian/stretch/multiarch/packages-microsoft-prod.deb > ./packages-microsoft-prod.deb
sudo apt install ./packages-microsoft-prod.deb

curl https://packages.microsoft.com/config/debian/stretch/multiarch/prod.list > ./microsoft-prod.list
sudo cp ./microsoft-prod.list /etc/apt/sources.list.d/

curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo cp ./microsoft.gpg /etc/apt/trusted.gpg.d/

sudo apt-get update

Installing IoT Edge Runtime #

▷ Install the Moby container engine and IoT Edge:

sudo apt-get install moby-engine -y
sudo apt-get install iotedge -y

Configuring IoT Edge #

▷ Open the configuration file:

sudo nano /etc/iotedge/config.yaml

▷ Find the Manual provisioning configuration section and update the device_connection_string with your Primary Connection String:

provisioning:
  source: "manual"
  device_connection_string: "HostName=XXX.azure-devices.net;DeviceId=rpi-1;SharedAccessKey=XXXXc="

Starting and Verifying IoT Edge #

▷ Restart the IoT Edge service:

sudo systemctl restart iotedge

▷ Check the status:

sudo systemctl status iotedge
sudo iotedge check

▷ Run iotedge check twice.

NOTE: One remaining error about Production readiness: Edge hub’s storage directory is still displayed.

Troubleshooting #

If you encounter issues:

▷ Check the RevPi forum at revolutionpi.de/forum/.

▷ Review Azure IoT Edge logs: journalctl -u iotedge.

▷ Verify network connectivity.

▷ Ensure all required ports are open.

▷ Check system resources.