Skip to content
Branch: master
Find file Copy path
Find file Copy path
3 contributors

Users who have contributed to this file

@shaggygi @richlander @joperezr
120 lines (92 sloc) 7.03 KB


See the following resources to get started.

Repo Layout

This repository mainly contains two different components:

  1. System.Device.Gpio library and tests which is the main library that has the implementation for protocols such as: GPIO, SPI, I2C, PWM. This library is fully supported by the dotnet team since it has the same level of support that dotnet/corefx does. All the code for the library lives under src/System.Device.Gpio. This library targets .NET Standard 2.0, and will work on both Windows and Linux. It's implementation consists of just IL code, so that means that it is supported across different platforms. In order to add new API to this library, an API Proposal would have to be submitted and approved first. Here is an example of a how a good API proposal should look like.
  2. IoT.Device.Bindings device bindings library. These is a collection of types which work as wrappers (or bindings) for devices and sensors which are able to talk to a microcontroller unit (or MCU like a Raspberry Pi for example) using the protocols supported by System.Device.Gpio. For example: BME280 is a temperature sensor which uses SPI and I2C in order to communicate with a MCU and is able to report the current temperature. Because the process of how to compute the temperature from the data is not trivial, we have a Bme280 class which exposes friendly methods like ReadTemperature() which will internally use either SPI or I2C to get the current temperature value. In order to start adding a new binding, check out our guide on how to contribute a new binding. It is worth noting that even though all device bindings will be built and packaged as a single library (Iot.Device.Bindings), the code is split under src/devices on individual projects for easier development of a single binding and developer inner-loop.

System.Device.* APIs

  • Device Bindings - Includes a collection of APIs representing a range of sensors, displays and human interface devices based on System.Device.* APIs.
  • DevicesApiTester CLI - Helpful utility, based on System.Device.* APIs, that include various commands for testing connected development boards and external hardware.

Design Reviews


Mono WinForms GPIO Demo Using Toradex Colibri iMX7D and Torizon Container

Interface Knowledge Base

General-Purpose Input/Output (GPIO)

Inter-Integrated Circuit (I2C)

Serial Peripheral Interface (SPI)

Other Helpful links

Development Boards

NOTE: It has been verified that .NET Core will work on the following development boards. However, there has only been limited testing so far. It is recommended you experiment with the Raspberry Pi 3 and HummingBoard for now.

Raspberry Pi














Maker Resources






You can’t perform that action at this time.