Available Backends
XInput (Default for Pico USB)
XInput is the default USB backend for Pico/RP2040 devices and provides the best PC gaming experience.
- Modern PC games with native controller support
- Steam games
- Windows gaming in general
- Plug-and-play compatibility with most PC games
- No driver installation required on Windows
- Full analog stick and trigger support
- Native rumble support (if implemented)
- Automatically selected on USB connection (Pico)
- Cannot be manually forced on Arduino
DInput
Platform: All devices (Pico and Arduino) Use cases:- Legacy PC games that don’t support XInput
- Dolphin Emulator on Arduino devices
- Games that explicitly require DInput
- Required for keyboard modes
- Pico: Hold RF3 (Z) on plugin
- Arduino: Automatic when USB is detected
DInput is the only backend that supports keyboard modes. To use any keyboard mode, you must be in DInput mode.
GameCube Console
Platform: All devices Use cases:- GameCube console
- GameCube controller adapters (Mayflash, official, etc.)
- Dolphin with native GCC support
- Pico devices automatically detect GameCube console connection
- Arduino devices default to GameCube when no USB detected
- Hold RT1 (A) on plugin for GameCube mode with polling rate fix disabled (required for most adapters)
Nintendo 64 Console
Platform: All devices Use cases:- Nintendo 64 console
- N64 emulators with native controller support
- Pico: Automatically detected when connected to N64 console
- Arduino: Hold RT3 (C-Left) on plugin
- N64 runs at 60Hz polling rate
- Can be configured similarly to GameCube backend on Arduino
Nintendo Switch USB
Platform: Pico/RP2040 only Use cases:- Nintendo Switch console via USB
- Super Smash Bros. Ultimate
- Hold RF2 (X) on plugin
- Automatically sets initial game mode to Ultimate mode
- Emulates Pro Controller
- Full support for all Switch buttons and sticks
- Optimized for Smash Ultimate
B0XX Input Viewer
Platform: All devices Use cases:- Streaming and content creation
- Practice and input analysis
- Visualizing inputs in real-time
- Automatically enabled as secondary backend when using DInput or XInput
- Runs simultaneously with the primary backend
Backend Detection and Selection
Check Button Holds
On plugin, HayBox first checks for button hold combinations to see if a specific backend is requested.
Auto-detect Console
If no button hold matches, HayBox attempts to detect if connected to a console:
- GameCube console (via data line detection)
- N64 console (via data line detection)
Platform-Specific Differences
- Pico/RP2040
- Arduino/AVR
Advantages
- Automatic console detection
- XInput support for better PC compatibility
- No polling rate configuration needed
- Can switch between backends by unplugging and replugging
- More backends available (Switch, XInput)
Default USB Backend
XInput (best for PC gaming)Available Backends
- XInput
- DInput
- GameCube
- N64
- Nintendo Switch
- NES (experimental)
- SNES (experimental)
- Configurator (web-based config)
Multiple Backends Simultaneously
HayBox supports running multiple communication backends at the same time:- Play on PC while streaming with input viewer
- Send inputs to multiple outputs simultaneously
- Debug input behavior while playing
Troubleshooting
Controller not working with GameCube adapter
Controller not working with GameCube adapter
If using an official adapter with Arduino, hold A (RT1) on plugin to disable polling rate optimization.For Mayflash adapters:
- Arduino: Requires both USB cables plugged in for 5V power
- Pico: Works with single USB cable (3.3V native)
Wrong backend selected
Wrong backend selected
The backend is selected on plugin. To change backends:
- Unplug the controller
- Hold the appropriate button combination (see above)
- Plug in the controller while holding the button(s)
Keyboard mode not working
Keyboard mode not working
Keyboard modes only work with the DInput backend. If using Pico:
- Hold RF3 (Z) on plugin to force DInput mode
- Then activate keyboard mode using the mode selection combination
XInput not available on Arduino
XInput not available on Arduino
XInput is only available on Pico/RP2040 devices. Arduino/AVR devices are limited to DInput for USB communication due to hardware constraints.
