Choose Your Hardware Config
Browse available configs
HayBox includes pre-built configurations for many popular controllers:You can view the full config files in the
RP2040/Pico Boards
pico- Generic Raspberry Pi Picob0xx_r4- B0XX R4 (Pico-based)c53- Crane’s Model C≤53schism- Schism controller
Arduino/AVR Boards
b0xx_r1- B0XX R1 (Leonardo)b0xx_r2- B0XX R2 (Leonardo)lbx- LBX controllergccpcb1/gccpcb2- Crane’s GCCPCBgccmx- Crane’s GCCMXsmashbox- Smash Boxhtangl_v1- HayBox TANGL v1
config/ directory of the repository.Download firmware
Choose your download source:Stable Release (Recommended)Download from the latest HayBox release on GitHub.Development Build (Unstable)For the latest features:
- Go to HayBox GitHub Actions
- Click on a recent successful workflow run
- Download the artifact for your hardware config
Flash Firmware
RP2040/Pico (.uf2 files)
Enter bootsel mode
Put your Pico-based controller into bootsel mode:First time installation:
- Hold the BOOTSEL button on the Pico while plugging in the USB cable
- Hold RT2 (C-Down) while plugging in the USB cable
RPI-RP2 should appear on your computer.Copy firmware file
Drag and drop the
.uf2 firmware file onto the RPI-RP2 drive.The controller will automatically reboot with the new firmware once the file is copied.Arduino/AVR (.hex files)
Install QMK Toolbox
Download and install QMK Toolbox for your operating system:
- Windows:
qmk_toolbox.exe - macOS:
QMK.Toolbox.app.zip - Linux:
qmk_toolbox.pkg.tar.zst(or useavrdudedirectly)
Prepare controller
- Launch QMK Toolbox
- Click “Open” and select your
.hexfirmware file - Plug in your controller via USB
- The controller should appear in the device list
If your controller doesn’t appear, you may need to install drivers. QMK Toolbox can help install the appropriate drivers.
Flash firmware
- Click the “Flash” button in QMK Toolbox
- Wait for the flashing process to complete
- The log should show “avrdude done. Thank you.”
Configuration by Hardware Type
Pin Mappings
Each config includes default pin mappings inconfig/<environment>/config.cpp. Here’s an example from the generic Pico config:
If your controller has a different pinout than the existing configs, you’ll need to build from source with custom pin mappings.
Default Button Holds
HayBox uses button holds on plugin to access special functions:Special Boot Modes
| Button Hold | Function | Platform |
|---|---|---|
| MB1 (Start) | Enter config mode | Pico only |
| RT2 (C-Down) | Reboot to bootsel mode | Pico only |
| RF1 (B) | Switch to Brook board passthrough | GCCPCB2, GCCMX, B0XX R2, LBX |
Communication Backend Selection
On Pico/RP2040, the backend is auto-detected:- USB connection defaults to XInput (best for PC games)
- GameCube/Nintendo 64 console detected automatically
| Button Hold | Backend |
|---|---|
| RF2 (X) | Nintendo Switch USB mode |
| RF3 (Z) | DInput mode (for games without XInput) |
- USB connection uses DInput
- Defaults to GameCube backend for console
| Button Hold | Backend |
|---|---|
| RT1 (A) | GameCube (polling rate fix disabled) |
| RT3 (C-Left) | Nintendo 64 backend |
Game Mode Selection
Switch modes on the fly (without unplugging):| Button Combination | Game Mode |
|---|---|
| Start + Mod X + L | Melee mode (default) |
| Start + Mod X + Left | Project M/Project+ |
| Start + Mod X + Down | Ultimate mode |
| Start + Mod X + Right | FGC mode (Hitbox layout) |
| Start + Mod X + B | Rivals of Aether |
| Start + Mod X + R | Rivals of Aether 2 |
| Start + Mod Y + L | Keyboard mode (DInput only) |
Next Steps
Building from Source
Customize pin mappings, button functions, and game modes
Dolphin Setup
Configure controller profiles for Slippi and Dolphin
Customization
Learn about SOCD modes, modifiers, and input modes
Troubleshooting
Solve common issues with adapters and consoles
