# 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.

- Type: Case study
- Targets: Firmware · Protocol
- Category: Independent reconstruction cases
- Relationship: Independent reconstruction project
- Sources reviewed: 2026-10-19
- Added to the catalog: 2026-11-09
- Original resource: <https://github.com/greggersaurus/OpenSteamController>
- Primary source: <https://github.com/greggersaurus/OpenSteamController/blob/325801542fcb762d19a91addd801f0630c825966/README.md>
- Catalog page: <https://awesomerea.org/resources/open-steam-controller-firmware-case/>
- Record JSON: <https://awesomerea.org/resources/open-steam-controller-firmware-case/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/open-steam-controller-firmware-case/index.md)

## 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.

## Primary sources

1. <https://github.com/greggersaurus/OpenSteamController/blob/325801542fcb762d19a91addd801f0630c825966/README.md>
2. <https://github.com/greggersaurus/OpenSteamController/blob/325801542fcb762d19a91addd801f0630c825966/ReverseEngineering/README.md>
3. <https://github.com/greggersaurus/OpenSteamController/blob/325801542fcb762d19a91addd801f0630c825966/ReverseEngineering/LPC11U37F_Software.md>
4. <https://github.com/greggersaurus/OpenSteamController/blob/325801542fcb762d19a91addd801f0630c825966/ReverseEngineering/usbInterface.md>
5. <https://github.com/greggersaurus/OpenSteamController/blob/325801542fcb762d19a91addd801f0630c825966/Firmware/README.md>
6. <https://github.com/greggersaurus/OpenSteamController/blob/325801542fcb762d19a91addd801f0630c825966/Firmware/OpenSteamController/src/init.c>
7. <https://github.com/greggersaurus/OpenSteamController/blob/325801542fcb762d19a91addd801f0630c825966/Firmware/OpenSteamController/src/jingle_data.c>
8. <https://github.com/greggersaurus/OpenSteamController/blob/325801542fcb762d19a91addd801f0630c825966/Firmware/OpenSteamController/inc/fw_cfg.h>
9. <https://github.com/greggersaurus/OpenSteamController/blob/325801542fcb762d19a91addd801f0630c825966/Firmware/lpc_chip_11uxx_lib/src/chip_11xx.c>
10. <https://github.com/greggersaurus/OpenSteamController/blob/325801542fcb762d19a91addd801f0630c825966/Jingle/README.md>
11. <https://github.com/greggersaurus/OpenSteamController/blob/325801542fcb762d19a91addd801f0630c825966/UsbConfiguration/README.md>
12. <https://github.com/greggersaurus/OpenSteamController/blob/325801542fcb762d19a91addd801f0630c825966/UsbConfiguration/SteamControllerConfig.py>

## More in Firmware and hardware

- [open-desk-lamp-firmware: replacement firmware for the Xiaomi desk lamp](https://awesomerea.org/resources/xiaomi-desk-lamp-open-firmware-case/index.md) · Case study
- [EchoPod: replacement firmware for the Snowsky Echo Mini 8 GB](https://awesomerea.org/resources/echopod-echo-mini-firmware-case/index.md) · Case study
- [GLaBIOS: a scratch-built 8K ROM BIOS](https://awesomerea.org/resources/glabios-rom-bios-case/index.md) · Case study
- [TC66 custom firmware: a replacement image for the RuiDeng USB-C meter](https://awesomerea.org/resources/tc66-meter-firmware-case/index.md) · Case study
- [UV-K5: an open reimplementation of Quan Sheng firmware v2.1.27](https://awesomerea.org/resources/uv-k5-firmware-case/index.md) · Case study
- [R64Emu: low-level Nintendo 64 hardware reconstruction](https://awesomerea.org/resources/r64emu-n64-case/index.md) · Case study

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
