Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

periph - Peripherals I/O in Go

Documentation is at

Join us for a chat on, get an invite here.



cmd - ready-to-use executables

This directory contains directly usable tools installable via:

go get


If you prefer to build on your workstation and push the binaries to the micro computer, install push from to cross compile and efficiently push via rsync:

go get -u
push -host pi@raspberrypi

Try first periph-info. It will print out if any driver failed to run, for example if you have to run as root to access certain drivers.

Then run headers-list to list all the headers on your board and confirm that you get the expected output. If your board is missing, you can contribute it.


  • apa102: Writes to a LED strip of APA-102 (sometimes called Dotstar). Can show an image animating on the Y axis.
  • bmxx80: Reads the temperature, pressure and humidity off a bmp180/bme280/bmp280. Humidity sensing is only supported on bme280.
  • cap1xxx: Reads the capacitive sensor family.
  • ir: Reads codes (button presses) on an InfraRed remote sensor.
  • led: Reads the state of on-board LEDs.
  • ssd1306: Writes text, an image or an animated GIF to an OLED display.
  • tm1637: Writes to a segment digits display.


  • gpio-list: Looking for the GPIO pins per functionality? Prints the state of each GPIO pin.
  • gpio-read: Read the input value of a GPIO pin and change input resistor.
  • gpio-write: Change the output value of a GPIO pin.
  • headers-list: Pinrts the location of the pin on the header to connect your GPIO. This is the perfect tool to know where to connect the wires.
  • i2c-io: Reads and/or writes to an I²C device.
  • i2c-list: Lists which I²C buses are enabled and where the pins are.
  • spi-io: Reads and/or writes to an SPI device.
  • spi-list: Lists which SPI ports are enabled and where the pins are.


  • periph-info: Lists which periph drivers loaded and which failed.
  • periph-smoketest: Runs one of the smoke test for the drivers. The smoke test differs from unit tests as they require real hardware to confirm that the driver being tested works.
  • videosink: Demonstrates how to provide display contents to HTTP clients.


Having trouble getting the tools to run? File an issue or better visit the Slack channel. You can get an invite here.


periph was initiated with ❤️️ and passion by Marc-Antoine Ruel. The full list of contributors is in AUTHORS and CONTRIBUTORS.


This is not an official Google product (experimental or otherwise), it is just code that happens to be owned by Google.

This project is not affiliated with the Go project.