Controller Software
Install Firmware and Customize Settings
GP2040-CE is an open source gamepad firmware that's compatible with RetroPie, Mac/PC/Linux, PlayStation 3/4/5, Nintendo Switch/Switch 2, Xbox 360/One/Series, mini consoles, and others. It runs on a number of microcontrollers that use the RP2040/RP2305 chips, such as Pico, KB2040 Kee Boar, and more.
First you'll flash the KB2040 with the drag-and-drop .uf2 file and then customize settings within the web editor.
Download Firmware
From the GP2040-CE Downloads page, click the Download button for the KB2040 firmware.
This will save a file named GP2040-CE_0.7.12_KB2040.uf2 (or later) to your download location.
Firmware Installation
This page gives detailed instructions on installation, but the basic steps are:
- Plug the KB2040 into your computer with a known good data and power USB cable
- While holding the
BOOTSELbutton down, press and release theRESETbutton this puts the board into BOOTSEL/USB drive mode - A new removable drive named
RPI-RP2will appear on your computer - Drag-and-drop the GP2040-CE_0.7.12_KB2040.uf2 (or later) firmware .uf2 file onto the
RPI-RP2drive and wait for it to copy the file and reboot itself
Pin Mapping
The default pin mapping in GP2040-CE for the KB2040 is shown here. This will work well for almost all of the buttons and joystick input, but we want to make a few modifications so we can connect an OLED screen to the STEMMA QT port, NeoPixels to pin 7 (GP07) and a Function button to pin 6 (GP06), as shown below.
To make these changes we'll use the web configurator as shown next.
| GP2040 | Fightstick | Emulation Station |
|---|---|---|
| B1 | K1 | South |
| B2 | K2 | East |
| B3 | P1 | West |
| B4 | P2 | North |
| L1 | P4 | LeftShoulder |
| R1 | P3 | RightShoulder |
| L2 | K4 | LeftTrigger |
| R2 | K3 | RightTrigger |
| S1 | Sel | Select |
| S2 | Start | Start |
| A1 | Home | Hotkey |
Button Test
This is a great time to test the controller to make sure basic button presses are working.
Plug the KB2040 into your computer with a known good USB-C data and power cable. Head to this gamepad tester in your browser to see the button presses.
You can now use a jumper wire to short any mapped GPIO pin to ground -- those button presses will register on the controller tester.
Web Configurator
Use a short wire to jumper KB2040 pin SCK/CLK (GP18) to a GND pin (see attached diagram for physical pin locations) and then press and release the RESET button. This puts the KB2040 into configuration mode. After a moment you can un-jumper the GPIO pin from ground.
This action has also caused the KB2040's GP2040-CE firmware to launch a web server you can access from your computer's web browser by visiting http://192.168.7.1
Reboot
Any time you want to leave Web-config mode and test your changes you can reboot the KB2040 into Controller mode.
Click the Reboot button at the upper right of the config page.
In the pop-up window that shows up, click Controller to restart in controller mode.
Then test out your changes. When you're ready to return to web-config, simply re-jumper the SCK/CLK pin to GND and press RESET button on the KB2040.
Debounce Delay
If you find the menu navigation in Emulation Station to be maddening when using the arcade joystick, try increasing the debounce delay from 5ms to 20 or 30ms.
Status LED
In the GP2040-CE configuration enable:
- Add-Ons > Reactive LEDs
- set LED #0 to LED GPIO Pin1
- Action: UP
- Default Mode: Static On
- Active Mode: Static On
Status LED
In the GP2040-CE configuration enable:
- Add-Ons > Reactive LEDs
- set LED #0 to LED GPIO Pin1
- Action: UP
- Default Mode: Static On
- Active Mode: Static On
Page last edited August 17, 2026
Text editor powered by tinymce.