If you've been sim racing for a while, you know the feeling: your wheel has a few buttons, but it's never enough. Pit limiter, radio, MFD, pit menu navigation — before you know it you're fumbling over voice commands or taking your hands off the wheel at the worst possible moment.
A dedicated button box solves all of that. And here's the thing — you don't need to spend €200+ on a commercial unit. For around €30–50, you can build one yourself using an Arduino and SimHub, the free software that handles all the heavy lifting. No soldering experience required, seriously.
This guide walks you through every step: picking the right board, wiring everything up, configuring SimHub, and getting it working in your favourite sim. Let's get into it.
What Is a Button Box and Why Build One?
A button box is a separate controller — usually mounted somewhere within reach — that gives you quick access to functions you don't want to hunt for on your wheel. Think of it as a cockpit control panel.
Most button boxes include:
- Pushbuttons — for on/off actions like pit limiter, headlights, wipers, TC/ABS toggle
- Rotary encoders — for menu navigation, volume control, or anything that scrolls
- Addressable LEDs — to show system status at a glance (engine warning, fuel level, tyre temp)
If you're just getting started and want to understand what gear you're working with, check out our guide to the best direct drive wheels for beginners — it covers how button boxes integrate into a full rig.
💡 Good to know: SimHub is completely free for personal use, supports virtually every sim racing title, and handles button mapping, LED effects, and display output — all without writing a single line of code yourself.
The Parts List — Everything You Need
Here's the complete shopping list. Prices are approximate and based on typical 2026 European pricing — shop around and you'll find deals.
| Component | Quantity | Est. Price |
|---|---|---|
| Arduino Leonardo or Arduino Nano Every (ATmega32U4) | 1 | €12–18 |
| Arcade-style pushbuttons (24mm, with LED) | 8–12 | €8–15 |
| Rotary encoder (KY-040 or similar) | 1–2 | €2–4 |
| WS2812B addressable LED strip (5V) | ~20 LEDs | €3–5 |
| Jumper wires / Dupont cables (M-M, F-M) | ~40 | €2–4 |
| Perfboard or breadboard for prototyping | 1 | €2–4 |
| Micro-USB cable (data-capable) | 1 | €3–5 |
| Optional: 3D printed case (STL files online) | 1 | €0–10 |
| TOTAL | ~€30–50 |
Why Arduino Leonardo or Nano Every? You need a board with a native USB HID interface — one that shows up as a gamepad/joystick to Windows without additional drivers. The Leonardo and Nano Every (ATmega32U4) both do this out of the box. Avoid the standard Arduino Nano (CH340 chip) — it won't enumerate as a joystick.
SimHub Setup — Download and Add Your Device
Head to www.simhubw.com and download SimHub. Installation is straightforward. Once it's running, here's how to add your Arduino:
- Click the Add new hardware button (or go to Settings → Hardware)
- Select Arduino (Generic HID) from the list
- Choose your board type — Leonardo or Nano Every
- SimHub will flash the board with its firmware automatically — you don't need to write any code
⚠️ Important: The first time SimHub flashes your Arduino, it may need to install the HID driver. Give it a moment. If it doesn't work on the first try, unplug and replug the USB cable, then try again.
Once flashed, you'll see the SimHub dashboard with your buttons and encoder inputs listed. Click each one to assign a keypress, button number, or axis. Everything maps here — you don't need to touch Windows gamepad settings at all.
Wiring — Pushbuttons, Rotary Encoders, and LEDs
Here's the text-based wiring diagram. The principle is simple: each pushbutton connects one leg to GND and one leg to a digital input pin. When the button is pressed, the pin reads LOW.
Tips for clean wiring:
- Use a common ground rail — connect all button grounds to one GND pin, then run one wire to Arduino GND
- Keep button runs short (<1 metre) to avoid signal noise
- If using more than 10 LEDs, power them from a separate 5V 2A source rather than the Arduino's onboard 5V
- Label your wires as you go — you'll thank yourself later
Uploading the Arduino Sketch — SimHub Generic Firmware
You don't need to write an Arduino sketch from scratch. SimHub includes a pre-built firmware specifically for generic Arduino boards. Here's how to load it:
- Open the Arduino IDE (download from arduino.cc if you don't have it)
- Go to Tools → Board and select your board (Leonardo or Nano Every)
- Go to Tools → Port and choose the COM port your Arduino is on
- In SimHub, navigate to Settings → Hardware → Arduino Generic HID
- Click Upload Firmware — SimHub handles the compilation and upload automatically
That's it. No coding, no libraries to install. The firmware enumerates all your inputs and makes them available in SimHub's dashboard.
Testing and Troubleshooting
Once everything is wired and the firmware is uploaded, test in SimHub's hardware test view:
- Buttons not registering? — Check your GND connections. Each button needs a solid connection between one leg and Arduino GND.
- Encoder scrolling the wrong way? — Swap the CLK and DT pins in SimHub's encoder settings.
- LEDs not lighting up? — Make sure the data pin is correct (default is D11 on Leonardo). Also check that you've set the correct number of LEDs in SimHub's LED configuration.
- Board not enumerating as a gamepad? — You're likely using a standard Nano with CH340. Switch to Leonardo or Nano Every.
One of the most common issues is a floating input — a pin that reads random values when nothing is connected. SimHub's firmware uses internal pull-ups, but poor ground connections will cause phantom presses. Solder or use a proper crimped connection, not loose breadboard jumpers for the final build.
Upgrade Ideas — Where to Take It Next
Once you've got the basics working, the sky's the limit. Here are some natural upgrade paths:
- More buttons — a Leonardo has 14 digital I/O pins. Use them all, or add a second Arduino for more inputs
- 7-segment displays — SimHub supports small OLED and 7-segment displays showing lap times, fuel, or tyre temps
- Shifter input — wire up a sequential shifter using a microswitch on the same board
- Professional case — design and 3D print your own enclosure, or order a sheet metal box from a local fabricator
- Befaco or modular audio jack panel — add rotary knobs for things like brake bias or mixture
If you're building out your first rig and want to think about the bigger picture before adding peripherals, our sim racing pedals buyer's guide covers what to prioritise — spoiler: a good loadcell pedal set will transform your driving before any button box will.
Ready to upgrade your wheel?
See how direct drive wheels compare for beginners and beyond.
Wrapping Up
Building a sim racing button box with Arduino and SimHub is one of the most satisfying DIY projects in sim racing. The total cost is roughly what you'd spend on a single mid-range game, and the payoff in immersion and control is immediate. You don't need to be an engineer — if you can follow a wiring diagram and plug in a USB cable, you can do this.
Start simple with 6–8 buttons and one encoder. Get it working, learn how SimHub maps inputs, and then expand from there. By the time you're done, you'll have something that's genuinely yours — and you'll understand exactly how it works.
Got questions? Hit us up in the comments below.