wiredopposite / OGX-Mini

RP2040 USB gamepad emulation for multiple platforms.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

OGX-Mini

OGX-Mini Boards

Firmware for the RP2040, capable of emulating gamepads for several consoles. The firmware now comes in 3 flavors, for the Adafruit Feather USB Host board, the Pi Pico, and the Waveshare RP2040-Zero.

Supported platforms

  • Original Xbox
  • Playstation 3
  • Nintendo Switch (docked)
  • XInput (not Xbox 360)
  • Playstation Classic

Supported devices

Wired controllers

  • Original Xbox Duke and S
  • Xbox 360, One, Series, and Elite
  • Dualshock 3 (PS3)
  • Dualshock 4 (PS4)
  • Dualsense (PS5, Dualsense Edge should work but it's untested)
  • Nintendo Switch Pro
  • Nintendo Switch wired (tested with PowerA brand)
  • Nintendo 64 USB (experimental, tested with RetroLink brand)
  • Playstation Classic
  • Generic DInput

Wireless adapters

  • Xbox 360 PC adapter (Microsoft or clones, syncs 1 controller)
  • 8Bitdo v1 and v2 Bluetooth adapters (set to XInput mode)
  • Most wireless adapters that present themselves as Switch/XInput/PlayStation controllers should work

Note: There are some third party controllers that can change their VID/PID, these might not work correctly.

Changing input mode

By default the input mode is set to OG Xbox, you must hold a button combo for 3 seconds to change which platform you want to play on. Your chosen input mode will persist after powering off the device.

Start = Plus (Switch) = Options (Dualsense/DS4)

XInput

Start + Dpad Up

Original Xbox

Start + Dpad Right

Switch

Start + Dpad Down

PlayStation 3

Start + Dpad Left

PlayStation Classic

Start + A (Cross for PlayStation and B for Switch gamepads)

After a new mode is stored, the RP2040 will reset itself so you don't need to unplug it.

Hardware

I've designed a PCB for the RP2040-Zero so you can make a small form-factor adapter yourself. The gerber files, schematic, and BOM are in Hardware folder.

OGX-Mini Boards

If you would like a prebuilt unit, you can purchase one, with cable and Xbox adapter included, from my website wiredopposite.com or my Etsy store.

For the Pi Pico, this is a diagram of how you'd connect the extra USB port:

Pi Pico Wiring Diagram

For the Adafruit Feather USB Host board, no extra work is needed.

Adding supported controllers

If your third party controller isn't working, but the original version is listed above, send me the device's VID and PID and I'll add it so it's recognized properly.

Compiling

You can compile this for different boards by changing USBD_BOARD in the usbd_config.h file, you can also adjust USBD_MAX_GAMEPADS to enable more controllers on PlayStation 3 (this is experimental).

Choosing OGXM_PI_PICO will set the D+ and D- host pins to GPIO 0 and 1.

You can also choose OGXM_RPZERO_INTERPOSER for the RP2040-Zero and that will set D+ and D- to GPIO 10 and 11, so connecting a USB port is easier. You can still use the Pi Pico firmware on the RP2040-Zero (the other way around has not been tested though).

Special thanks

Thank you to Ryzee119 and the OpenStickCommunity, without their work this project would not exist.

About

RP2040 USB gamepad emulation for multiple platforms.

License:MIT License


Languages

Language:C++ 63.5%Language:C 31.2%Language:CMake 4.5%Language:Makefile 0.8%