ControlBlock – Game Controllers, Power Switch, and I/O for the Raspberry Pi

The ControlBlock is an add-on board for the Raspberry Pi. The two key features of the ControlBlock are

  • a safe power button functionality to shutdown the Raspberry Pi without the risk of any data losses and
  • terminal blocks and a driver for connecting original game controllers for arcade machines and various game consoles.

The ControlBlock makes it very easy to connect arcade controllers or console controllers, for example, for (S)NES, Atari, Genesis/Megadrive, or Sega Master System consoles. Up to two players are supported by a single ControlBlock. Stacked upon each other, up to four players are supported. The open-source driver for the ControlBlock is easy to install and can be configured to your liking.

The power switch functionality allows to turn on and off the power to the Raspberry Pi with a toggle switch without the risk of data loss. You can also connect a status LED for indicating the power status of the Raspberry Pi.

ControlBlock connected to arcade controls

Demo Videos

Features and Technical Specifications

  • Additional 32 channels via SPI GPIO expander
  • Supports arcade and original game controllers
    • Arcade controls
    • SNES and NES controllers
    • Atari controllers
    • Sega Master System controllers
    • Sega Genesis / Megadrive controllers
    • All supported controllers for up to two players
  • Safe power button (includes the same functionality as the PowerBlock)
    • Supports toggle and momentary switches
    • Automatic detection of switch type
    • Smooth power status indication via optional external LED
  • Input Voltage: 5V
  • Output Voltage: 5V
  • Continuous Current @ 25°C: maximum 3.7 A
  • MOSFET Static On-Resistance: 0.065 Ω

You can order the ControlBlock here:

What our customers say

Truly, it took this project to the next level. I can’t recommend it highly enough.

Linux Journal,

This is by far the most effective way of providing control inputs and start/stop your Pi without coruupting the filesystem with hard resets. It’s exactly what is needed and nothing you don’t. Delivery was good. Doc is excellent.
Buy a Pi3, add this control block and a class D 20w Adafruit amp and you’re done. Everything just works without any stress. And, don’t forget to donate to RetroPie. Worth every single cent.


Used this in a super Famicom retropie build. Wanted to use original case controller board, power, led, ect. Very easy to install and use. Did not run into a single problem.


I purchased this ControlBlock to build a RetroPI. I was impressed with the look and quality of the board, and included parts. After receiving my board I went to the website and followed the assembly instruction. It was very easy to assemble and looks great. I have not had a chance to try it out yet because I’m still waiting for some other parts. I even have my son interested in building a RetroPI after I get mine completed. Thanks Florian for a great product.


Hardware Interface of the ControlBlock

Here is a top-view of the ControlBlock:

Top-Down view on ControlBlock

2x13 stackable pin header as connector to the Raspberry Pi

2x13 stackable pin header as connector to the Raspberry Pi

The ControlBlock is attached to the Raspberry with a 2×13 stackable pin header. This header is used for connecting to the voltage and ground pins as well as the additional GPIO pins. The board is prepared for breaking out all other pins of that header so that you can easily access all other pins that are not used by the ControlBlock.

ControlBlock with attached micro USB power cable

USB Type Power Supply

USB Type Power Supply

Just as the Raspberry Pi the ControlBlock provides a USB connector for the power supply. That means you can use your existing USB Micro cable. As an alternative you can optionally solder a USB-B socket to the ControlBlock that can be used as input for power supply.

Pin Outs for 5V Power Supply

Pin Outs for 5V Power Supply

If you do not want to use USB connector, GND and the 5V supply voltage can also be accessed via two pins so that you could use batteries or whatever you like for power supply.

ControlBlock with attached Power Switch and Status LED

Pin Outs for a Toggle or a Momentary Button

Pin Outs for a Toggle or a Momentary Button

To control the power state of the Raspberry Pi the ControlBlock provides an interface for attaching a toggle or a momentary buttons. The type of the button is detected automatically. The on-board microcontroller monitors the state of that switch as well as the one of the Raspberry. It safely shuts down the Raspberry without any risk of data loss.

ControlBlock with attached Power Switch and Status LED

Pin Outs for a Status LED

Pin Outs for a Status LED

The current power state can be indicated with a 5V status LED that can be attached to the two pins that are provided by the ControlBlock. These states can be “off”, “booting”, “on”, and “shutdown”. The different state are indicated with easy-to-distinguish static and pulsing patterns.

Additional 2x16 GPIO Pin, Game Controllers

Additional 2x16 GPIO Pin, Game Controllers

Two GPIO expanders provide 32 additional GPIO pins for arbitrary usage. With revision 2.X of the Raspberry Pi, these pins can be accessed via the SPI interface of the Raspberry Pi (With revision 1.X of the ControlBlock, these pins can be accessed via the I2C interface with the I2C addresses 0x20 and 0x27). You can use the provided ControlBlock driver to easily connect various original game controllers.

In-Service Programmer (ISP) Pin Outs

In-Service Programmer (ISP) Pin Outs

The power switch logic is implemented with the help of an Atmel ATtiny85 micro controller. You have the possibility to access the microcontroller with the ISP header. In this way you could reprogram the microcontroller with whatever functionality you like.

GPIO Pins used by the ControlBlock

GPIO Pins used by the ControlBlock

The ControlBlock uses these GPIO pins of the 40-pin header of the Raspberry Pi: 3.3V (pin 1), 5V (pin 2), GPIO 17 (pin 11), GPIO 18 (pin 12), MOSI (pin 19), MISO (pin 21), SCLK (pin 23), CE0 (pin 24).

Getting Started with the ControlBlock – Hardware and Software Setup

Attaching a power supply
If you want to use the power switch function of the ControlBlock you need to connect your (micro USB) connector only to the ControlBlock – and not to the Raspberry Pi directly. Alternatively to the micro USB connector you could also use the USB-B pin outs for soldering a USB-B connector to the ControlBlock. Also, you could use the 5V and GND input pins for power supply.

ControlBlock with attached Power Switch and Status LED
To turn the Raspberry Pi on and off with the ControlBlock you need to attach a toggle or a momentary button to the two button pins on the ControlBlock. The ControlBlock then uses the status of the attached button to power on or off the Raspberry Pi.

  • If you do not want to use the power switch functionality you can disable this in the configuration file /etc/controlblockconfig.cfg by setting “powerswitch”: false.
  • The power switch circuitry of the ControlBlock leads to a tiny voltage drop and we made the experience that a good quality power supply and a good quality USB cable are mandatory for a working setup. If unsure, we can recommend the official Raspberry Pi Power Supply.
ControlBlock with attached Power Switch and Status LED
The ControlBlock has pin outs for an optional status LED that indicates the power state of the Raspberry Pi. You can directly attach an LED to the pins that are marked with “LED”. You need to pay attention to the polarity of the LED: The LED pins are marked with “+” and “-” for that.

The LED will blink in four different patterns that depend on the power state of the Raspberry Pi:

  1. Off: The LED is simply off.
  2. Booting: The LED slowly fades in and out.
  3. On: The LED constantly stays on.
  4. Shutting down: The LED fades in and out twice as fast as during boot up.
ControlBlock attached to original SNES Hardware
The cables of the arcade buttons, joysticks, as well as of the (S)NES or all other gamepads are connected to the ControlBlock via the screw terminal blocks. You need a slotted screwdriver with a maximum width of 2.5 mm for that.

Detailed instructions for the individual controller types are given here.

Regarding the software you need to install the ControlBlock driver to enable the power switch and game controllers functions. You find detailed instructions for the driver installation here.

Related Posts

  • PowerBlock RPi 4 compatible

Our Boards Compatibility with the Raspberry Pi 4

The Raspberry Pi 4 was recently released. This post is about our boards and their compatibility with the Raspberry Pi 4. Are our extension boards like the PowerBlock or the ControlBlock compatible with it? The [...]

Quick Installation Script for the ControlBlock

We realized that the installation of the ControlBlock driver could be simplified. Therefore, we created an installation script that does all the needed steps for compiling, installing the binary, and configuring the ControlBlock service for [...]

  • ControlBlock Update

Update for the ControlBlock Driver with Many New Features

We just released an update for the driver of the ControlBlock! What does this mean for you? More functionalities! More specifically, the updates contain: 4-player support Multiple ControlBlocks can be stacked on top of each [...]