Azure IoT Edge supported systems

This article provides details about which systems and components are supported by IoT Edge, whether officially or in preview.

If you experience problems while using the Azure IoT Edge service, there are several ways to seek support. Try one of the following channels for support:

Reporting bugs – The majority of development that goes into the Azure IoT Edge product happens in the IoT Edge open-source project. Bugs can be reported on the issues page of the project. Fixes rapidly make their way from the project in to product updates.

Microsoft Customer Support team – Users who have a support plan can engage the Microsoft Customer Support team by creating a support ticket directly from the Azure portal.

Feature requests – The Azure IoT Edge product tracks feature requests via the product’s User Voice page.

Container engines

Azure IoT Edge modules are implemented as containers, so IoT Edge needs a container engine to launch them. Microsoft provides a container engine, moby-engine, to fulfill this requirement. This container engine is based on the Moby open-source project. Docker CE and Docker EE are other popular container engines. They're also based on the Moby open-source project and are compatible with Azure IoT Edge. Microsoft provides best effort support for systems using those container engines; however, Microsoft can't ship fixes for issues in them. For this reason, Microsoft recommends using moby-engine on production systems.

The Moby engine as container runtime

Operating systems

Azure IoT Edge runs on most operating systems that can run containers; however, not all of these systems are equally supported. Operating systems are grouped into tiers that represent the level of support users can expect.

  • Tier 1 systems are supported. For tier 1 systems, Microsoft:
    • has this operating system in automated tests
    • provides installation packages for them
  • Tier 2 systems are compatible with Azure IoT Edge and can be used relatively easily. For tier 2 systems:
    • Microsoft has done informal testing on the platforms or knows of a partner successfully running Azure IoT Edge on the platform
    • Installation packages for other platforms may work on these platforms

The family of the host OS must always match the family of the guest OS used inside a module's container. In other words, you can only use Linux containers on Linux and Windows containers on Windows. When using Windows, only process isolated containers are supported, not Hyper-V isolated containers.

Host OS matches guest OS

Tier 1

The systems listed in the following table are supported by Microsoft, either generally available or in public preview, and are tested with each new release.

Operating System AMD64 ARM32v7 ARM64
Raspbian Stretch Raspbian Stretch + ARM32v7
Ubuntu Server 16.04 Ubuntu Server 16.04 + AMD64 Public preview
Ubuntu Server 18.04 Ubuntu Server 18.04 + AMD64 Public preview
Windows 10 IoT Core, build 17763 Windows IoT Core + AMD64
Windows 10 IoT Enterprise, build 17763 Windows 10 IoT Enterprise + AMD64
Windows Server 2019, build 17763 Windows Server 2019 + AMD64
Windows Server IoT 2019, build 17763 Windows Server IoT 2019 + AMD64

The Windows operating systems listed above are the requirements for devices that run Windows containers on Windows, which is the only supported configuration for production. The Azure IoT Edge installation packages for Windows allow the use of Linux containers on Windows; however, this configuration is for development and testing only. For more information, see Use IoT Edge on Windows to run Linux containers.

Tier 2

The systems listed in the following table are considered compatible with Azure IoT Edge, but are not actively tested or maintained by Microsoft.

Operating System AMD64 ARM32v7 ARM64
CentOS 7.5 CentOS + AMD64 CentOS + ARM32v7 CentOS + ARM64
Debian 8 Debian 8 + AMD64 Debian 8 + ARM32v7 Debian 8 + ARM64
Debian 9 Debian 9 + AMD64 Debian 9 + ARM32v7 Debian 9 + ARM64
Debian 10 1 Debian 10 + AMD64 Debian 10 + ARM32v7 Debian 10 + ARM64
Mentor Embedded Linux Flex OS Mentor Embedded Linux Flex OS + AMD64 Mentor Embedded Linux Flex OS + ARM32v7 Mentor Embedded Linux Flex OS + ARM64
Mentor Embedded Linux Omni OS Mentor Embedded Linux Omni OS + AMD64 Mentor Embedded Linux Omni OS + ARM64
RHEL 7.5 RHEL 7.5 + AMD64 RHEL 7.5 + ARM32v7 RHEL 7.5 + ARM64
Ubuntu 16.04 Ubuntu 16.04 + AMD64 Ubuntu 16.04 + ARM32v7 Ubuntu 16.04 + ARM64
Ubuntu 18.04 Ubuntu 18.04 + AMD64 Ubuntu 18.04 + ARM32v7 Ubuntu 18.04 + ARM64
Wind River 8 Wind River 8 + AMD64
Yocto Yocto + AMD64 Yocto + ARM32v7 Yocto + ARM64
Raspbian Buster 1 Raspbian Buster + ARM32v7 Raspbian Buster + ARM64

1 Debian 10 systems, including Raspian Buster, use a version of OpenSSL that IoT Edge doesn't support. Use the following command to install an earlier version before installing IoT Edge:

sudo apt-get install libssl1.0.2

Virtual Machines

Azure IoT Edge can be run in virtual machines. Using a virtual machine as an IoT Edge device is common when customers want to augment existing infrastructure with edge intelligence. The family of the host VM OS must match the family of the guest OS used inside a module's container. This requirement is the same as when Azure IoT Edge is run directly on a device. Azure IoT Edge is agnostic of the underlying virtualization technology and works in VMs powered by platforms like Hyper-V and vSphere.

Azure IoT Edge in a VM

Minimum system requirements

Azure IoT Edge runs great on devices as small as a Raspberry Pi3 to server grade hardware. Choosing the right hardware for your scenario depends on the workloads that you want to run. Making the final device decision can be complicated; however, you can easily start prototyping a solution on traditional laptops or desktops.

Experience while prototyping will help guide your final device selection. Questions you should consider include:

  • How many modules are in your workload?
  • How many layers do your modules’ containers share?
  • In what language are your modules written?
  • How much data will your modules be processing?
  • Do your modules need any specialized hardware for accelerating their workloads?
  • What are the desired performance characteristics of your solution?
  • What is your hardware budget?