QCon is a practitioner-driven conference designed for technical team leads, architects, and project managers who influence software innovation in their teams.

Training: "Hands on hardware fun with the Raspberry Pi using Erlang"

Track: Training / Time: Monday 13:00 - 16:00 / Location: Erlang Solutions


While not a new concept, Embedded Linux is becoming more and more popular with the barriers for entry being lowered by projects such as the Raspberry Pi.

In this short hands on tutorial, we will look at Embedded Linux and managing the hardware peripherals using Erlang, running on the Raspberry Pi. We will take you through the steps required to build and deploy the Linux image and deal with hardware interfacing.


This tutorial will provide an overview of:

  • Current tools and methodologies employed in embedded systems
  • Embedded Linux and the ecosystem around it
  • Hardware drivers and interfacing
  • Erlang 101, focusing on features that are relevant to managing hardware
  • Erlang Embedded framework, a new proposal for architecting embedded systems

Target Audience

Engineers and programmers interested in designing the next generation of connected embedded systems.


  • Basic understanding of Linux, hardware architectures and embedded systems
  • Experience with C and Erlang (An introductory Erlang course will be run prior to this session, details available here)


Module 1: Embedded Linux
In this module we will look at the elements of an Embedded Linux system, such as:

  • Cross compilers and build environments
  • The Kernel and the root file system
  • Bootloaders

We will also look at debugging, connectivity and deployment issues.

Exercise 1: Board bring up
We will build and deploy an image to the Raspberry Pi board using the Linux VM provided and hook up the target system to our computer for debugging.

Module 2: Interfacing Hardware
Embedded devices generally consist of more than just the processor and as such we need to interface our applications processor to external chips/sensors/peripherals. This module looks at:

  • Different kinds of embedded protocols used to interface things together
  • How these protocols are utilised in hardware
  • Memory mapped peripherals and interfaces
  • Linux kernel support for common protocols

Exercise 2: Blinkenlights!
We will get some LEDs blinking using both the kernel abstractions and memory mapped bit twiddling.

Module 3: Concurrent Blinkenlights!
This module will cover the basics of interfacing hardware with Erlang. We will look at using kernel modules within Erlang and the mechanisms available to access external "hardware drivers" written in C.

Exercise 3: Hardware Fun
After playing with concurrent blinkenlights, we will develop a simple temperature monitoring system.

Please note that this tutorial will be held at:
Erlang Solutions, New Loom House, 101 Back Church Lane, London, E1 1LU

Ömer Kilic, Embedded Systems Engineer at Erlang Solutions

Ömer Kilic

Biography: Ömer Kilic

Ömer is an Embedded Systems Engineer working on Erlang Embedded, a Knowledge Transfer Partnership project in collaboration with University of Kent which aims to bring the benefits of concurrent systems development using Erlang to the field of embedded systems; through investigation, analysis, software development and evaluation.

Before joining Erlang Solutions, Ömer was a research student in the Embedded Systems Lab at the University of Kent, working on a reconfigurable heterogeneous computing framework as part of his PhD thesis. He was also the technical editor for the Raspberry Pi User Guide published by Wiley.

Twitter: @OmerK