Case study
Open Steam Controller: reverse-engineered Steam Controller firmware
Documents the reverse engineering of Valve's original Steam Controller, whose LPC11U37F main-processor firmware the author ran in a modified pinkySim simulator to log its hardware accesses, and uses the findings to write replacement firmware. Build options turn the controller into a USB-serial development board for querying its peripherals, or into a wired Nintendo Switch controller that presents itself as a PowerA pad. A Qt converter writes MusicXML songs as startup and shutdown jingles into an EEPROM area that the official firmware also reads, and notes record the board's pin connections and USB messages.
- Targets
- Firmware · Protocol
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Sources reviewed
- Stars
- 545
- Last commit
- 2019-09-17
- Language
- C
GitHub data as of 2026-11-09
Requirements & limits
- The replacement firmware targets the Steam Controller Luna_mainboard V000456-00 rev3 board and its LPC11U37F processor. The nRF51822 Bluetooth firmware remains original.
- A Steam Controller with that board is needed to run the custom firmware or jingle workflow. Repeating the simulation requires Valve’s vcf_wired_controller_d0g_57bf5c10.bin firmware and an LPC11U37 16 kB boot ROM dump, supplied separately.
- Firmware builds use LPCXpresso IDE v8.2.2 and the bundled NXP lpc_chip_11uxx_lib; select DEV_BOARD_FW or SWITCH_WIRED_POWERA_FW in fw_cfg.h. SCJingleConverter uses Qt 5.12; SteamControllerConfig.py uses PyUSB.
- Author source files carry MIT notices; the bundled NXP LPCOpen library is limited to NXP microcontrollers. The repository has no license file. The custom firmware embeds default jingle data from Valve firmware and a HID report descriptor copied from a PowerA controller.
Cite
BibTeX
@misc{open-steam-controller-firmware-case,
title = {{Open Steam Controller: reverse-engineered Steam Controller firmware}},
howpublished = {\url{https://github.com/greggersaurus/OpenSteamController}},
url = {https://github.com/greggersaurus/OpenSteamController},
urldate = {2026-10-19},
note = {Awesome REA entry: \url{https://awesomerea.org/resources/open-steam-controller-firmware-case/}}
}Plain text
Open Steam Controller: reverse-engineered Steam Controller firmware. https://github.com/greggersaurus/OpenSteamController (accessed 2026-10-19). Awesome REA entry: https://awesomerea.org/resources/open-steam-controller-firmware-case/
Useful? Star Awesome REA on GitHub2.4k
About this entry
The description was reviewed against primary sources.
Primary sources
- README.md GitHub · greggersaurus/OpenSteamController · Revision 3258015
- ReverseEngineering/README.md GitHub · greggersaurus/OpenSteamController · Revision 3258015
- ReverseEngineering/LPC11U37F_Software.md GitHub · greggersaurus/OpenSteamController · Revision 3258015
- ReverseEngineering/usbInterface.md GitHub · greggersaurus/OpenSteamController · Revision 3258015
- Firmware/README.md GitHub · greggersaurus/OpenSteamController · Revision 3258015
- Firmware/OpenSteamController/src/init.c GitHub · greggersaurus/OpenSteamController · Revision 3258015
- Firmware/OpenSteamController/src/jingle_data.c GitHub · greggersaurus/OpenSteamController · Revision 3258015
- Firmware/OpenSteamController/inc/fw_cfg.h GitHub · greggersaurus/OpenSteamController · Revision 3258015
- Firmware/lpc_chip_11uxx_lib/src/chip_11xx.c GitHub · greggersaurus/OpenSteamController · Revision 3258015
- Jingle/README.md GitHub · greggersaurus/OpenSteamController · Revision 3258015
- UsbConfiguration/README.md GitHub · greggersaurus/OpenSteamController · Revision 3258015
- UsbConfiguration/SteamControllerConfig.py GitHub · greggersaurus/OpenSteamController · Revision 3258015
More in Firmware and hardware
- open-desk-lamp-firmware: replacement firmware for the Xiaomi desk lamp · Case study
- EchoPod: replacement firmware for the Snowsky Echo Mini 8 GB · Case study
- GLaBIOS: a scratch-built 8K ROM BIOS · Case study
- TC66 custom firmware: a replacement image for the RuiDeng USB-C meter · Case study
- UV-K5: an open reimplementation of Quan Sheng firmware v2.1.27 · Case study
- R64Emu: low-level Nintendo 64 hardware reconstruction · Case study
All 260 entries in Firmware and hardwareFirmware and hardware case studies (175)