Skip to content

Button boxes: buying, building, and common mappings

A button box puts pit and chassis controls under dedicated switches so you stop hunting through wheel buttons or reaching for the keyboard mid-stint. In iRacing that means fuel and tire changes on physical toggles, tear-off and fast repair on their own buttons, and a 16-detent encoder for brake bias you can spin without looking. The blind-operation part matters most in VR, where you can’t see your hands and you find a switch by its shape.

Three paths, in rising order of effort:

  1. Pre-built box — plug in, map, done.
  2. Interface board plus your own switches — little to no soldering, full layout control.
  3. Full Arduino build — a microcontroller, the Joystick library, and a 3D-printed or CNC case.

The PXN CB1 runs about $100 (often on sale from a $130 list), and the assorted AliExpress boxes drop as low as $40-70 — all work fine as buttons-and-switches panels. They show up as a USB game controller, so iRacing and other titles see them with no extra software. Ignition Controls sits at the premium end — beautifully machined, properly labeled, and expensive enough that most people building a rig look at the DIY path first.

The Leo Bodnar BBI-32 is the easiest no-solder route. It reads up to 32 buttons, 16 encoders, and 11 twelve-position rotary switches, uses push-in screw connectors instead of soldered joints, and registers as a native game controller. It runs about $43-55 with the connector kit, or roughly £20 for the bare board if you wire your own. The BBI-64 doubles that to 64 inputs. You supply the switches and the enclosure; the board handles the USB HID work.

Build your own and the board choice is the one decision that breaks projects: use a Pro Micro or Arduino Leonardo. Both run the ATmega32U4, which speaks USB HID natively and shows up as a game controller on its own. An Uno or Nano will not without extra bridging firmware, so skip them. Flash the box with the Arduino Joystick Library (MHeironimus) and follow the AMstudio tutorial and sketch — that’s the canonical reference. A simple 12-button box with a couple encoders in a printed case lands around $30-40; a loaded panel with a funky switch, an ignition cover, and a CNC case climbs toward $200. The same ATmega32U4-plus-HID approach drives a DIY handbrake with a load cell, so the electronics carry over if you build both.

Avoid the “zero-delay” USB joystick encoder boards (the ~$8 arcade-style ones) if you want rotaries — they handle buttons and switches only and have no rotary-encoder support. For a buttons-only box they’re fine.

Encoders are where most builds go sideways. Buy a 16-detent rotary like the Bourns/Bohsen PEC11-style (e.g. PEC11H-4020F-S0016) for TC, ABS, and brake-bias knobs.

The classic bug is two clicks per detent: turn the knob one notch and the game reads it as a double-press. That’s the encoder’s transitions-per-click rating not matching the board’s mode. The BBI-32 supports 1, 2, and 4 transitions-per-click modes (CTS, ELMA, ALPS) — set it to match your encoder and the doubling stops.

Two more things to expect:

  • Buttons don’t auto-repeat when held. Hold a brake-bias button and the game registers one press, not a stream. You can code auto-repeat into an Arduino build; an interface board won’t do it for you.
  • An encoder fires one momentary pulse per click, which is why a rotary maps to brake bias one step at a time — exactly the behavior you want for stepped adjustments.

A Stream Deck is the no-wiring alternative, with relabelable LCD keys. The XL has 32 keys ($250), the MK.2 has 15 ($150), and the Plus has 8 keys plus 4 dials. For a rig the XL is the pick — 32 is enough to cover a full pit and chassis layout where 8 or 15 forces compromises.

It is not a native game controller. You need a plugin (iRaceIT or SimHub) to translate a key press into a game input. And because the keys are flat glass with no tactile variation, a Stream Deck is hard to use in VR — you can’t find a key blind.

This is the part people skip until the box is built. A solid starting layout:

Pit black box: fuel +/-, fuel amount/fill, tire change LF / RF / LR / RR, tear-off, fast repair, pit speed limiter, pit-lane request.

In-car: ignition, starter, headlights/flash, wipers, traction control, ABS, brake bias (and brake migration where the car has it), fuel mix, the per-car FFB strength knob, and PTT (push-to-talk) for the radio.

Put the encoders on the adjustables — TC, ABS, brake bias, fuel mix — and the toggles on the latched states like ignition and lights. Keep tear-off and fast repair on big, distinct buttons you can hit without looking.

A raw Pro Micro, your wheel, and a Stream Deck don’t naturally live in one mapping layer. SimHub’s Control Mapper / Keyboard Emulator aliases all of them into a single profile, so one button can fire the same game input regardless of which device sent it. It also drives the LED side if your box has one — Daniel Newman Racing (DNR) profiles are the popular choice there.

iRacing allows latched (maintained, always-on) switches for most controls, so a physical toggle that stays up for headlights or fuel mix is fine. A few inputs are best left momentary — starter and reset among them — which is why a spring-back toggle cover on a “start” button is a common build. When in doubt, momentary is the safe default.

For the rest of the rig, see pedals and wheels and wheelbases.

Frequently asked questions

Should I buy or build a button box?

Three paths in rising order of effort. A pre-built box plugs in as a USB controller (PXN CB1 around $100, AliExpress boxes around $40-70). An interface board like the Leo Bodnar BBI-32 takes your own switches with no soldering (up to 32 buttons and 16 encoders). A full Arduino build runs around $30-40 for a simple box and toward $200 loaded. Building is mostly just wiring switches once the board handles the USB work.

Which Arduino board do I use for a DIY button box?

Use a Pro Micro or Arduino Leonardo. Both run the ATmega32U4, which speaks USB HID natively and shows up as a game controller on its own. An Uno or Nano will not work without extra bridging firmware. Flash it with the MHeironimus Arduino Joystick Library and follow the AMstudio tutorial — that is the canonical reference.

Why does my rotary encoder register two presses per click?

The encoder's transitions-per-click rating does not match the board's mode. On a Leo Bodnar BBI-32, set it to 1, 2, or 4 transitions-per-click (CTS, ELMA, ALPS) to match your encoder and the doubling stops. Put encoders on stepped adjustables like brake bias, TC, ABS, and fuel mix.

Is a Stream Deck a good button box, and which model?

It is the no-wiring option with relabelable LCD keys. The XL has 32 keys and is the pick for a full pit and chassis layout; the MK.2 has 15 and the Plus has 8 keys plus 4 dials. It is not a native game controller, so you need a plugin (iRaceIT or SimHub) to translate a press into a game input, and the flat glass keys are hard to find blind in VR.

Will iRacing flag a button box with toggle switches as cheating?

No. iRacing allows latched (maintained, always-on) switches for most controls, so a toggle that stays up for headlights or fuel mix is fine. A few inputs are best left momentary — starter and reset among them — which is why a spring-back toggle cover on a start button is a common build. When in doubt, momentary is the safe default.