This project aims to allow standard input devices (such as game controllers and keyboards) to control output to 4-in-one multi-module transmitters.
Created by Patrick Leiser and Josh Adriano.
Use the Arduino-Pico board core by Earle Philhower Dependencies: U8g2 by oliver ArduinoJson by Benoit Blanchon Bounce2 by Thomas O Fredericks Pico PIO USB by Sekigon-gonnoc
You can program it with the Arduino IDE directly, adjust the menu options as described at the top of GamesteerRC.ino.
Alternatively, for advanced usage and debugging, you can install the Arduino-CLI and use the scripts as described below:
Builds a release version of the firmware using Arduino CLI.
- Optimized for performance (
-O2/-Os) - Produces
.elfand.uf2inbuild/ - Use when you want final or production-like firmware
Builds a debug version of the firmware.
- Uses
-Ogoptimization for good debugging behavior - Includes full debug symbols (
-g) - Outputs to
build-debug/ - Use when stepping through code or inspecting variables with GDB
Flashes firmware using the Raspberry Pi Debug Probe (OpenOCD + SWD).
- Programs the
.elfdirectly to flash - Verifies and resets the device
- Use for fast iteration during debugging
Starts the OpenOCD GDB server.
- Provides a debugging connection on port 3333
- Required before connecting GDB
- Use when preparing a debug session
Launches GDB for source-level debugging.
- Connects to OpenOCD (
localhost:3333) - Uses the project
.elf - Use for breakpoints, stepping, and inspecting state
- See debugging section below for additional details
Flashes firmware using the UF2 bootloader (USB mode).
- uses
arduino-cli upload - Before use, edit upload.sh with the port of your target device, such as
/dev/cu.usbmodem101orCOM7- Alternatively, you can manually boot the device into BOOTSEL mode, and copy
build/GamesteerRC.ino.uf2onto the device.
- Alternatively, you can manually boot the device into BOOTSEL mode, and copy
- No debugger needed
- Use for simple deployment or recovery
Call the scripts from the top level of the directory, such as ./scripts/build.sh
- Development (debugging):
debug-build.sh→flash.sh→openocd.sh→ (in a second terminal session)gdb.sh - Quick standalone flash:
build.sh → upload.sh
For debugging, once OpenOCD and GDB are active, within GDB run
target extended-remote :3333
monitor reset halt
break panic
continue