# Open Steam Controller：逆向工程得来的 Steam Controller 固件

> 记录对 Valve 初代 Steam Controller 的逆向工程：作者在修改版 pinkySim 模拟器中运行其 LPC11U37F 主处理器固件并记录硬件访问，再据此编写替代固件。不同构建选项可让手柄成为通过 USB 串口查询外设的开发板，或伪装成 PowerA 手柄、供 Nintendo Switch 使用的有线控制器。Qt 转换工具可把 MusicXML 乐曲写入官方固件同样会读取的 EEPROM 区域，作为开机和关机提示音；另有文档记录主板引脚连接和 USB 消息。

- 类型：案例
- 目标：固件 · 协议
- 类别：独立重建案例
- 关联：独立重建项目
- 来源复核于：2026-10-19
- 收录于：2026-11-09
- 原始资源：<https://github.com/greggersaurus/OpenSteamController>
- 一手来源：<https://github.com/greggersaurus/OpenSteamController/blob/325801542fcb762d19a91addd801f0630c825966/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/open-steam-controller-firmware-case/>
- 记录 JSON：<https://awesomerea.org/resources/open-steam-controller-firmware-case/record.json>
- 英文版：[English](https://awesomerea.org/resources/open-steam-controller-firmware-case/index.md)

## 使用条件与局限

- 替代固件面向 Steam Controller 的 Luna_mainboard V000456-00 rev3 主板及其 LPC11U37F 处理器。nRF51822 蓝牙固件仍为原版。
- 运行自制固件或提示音流程需要使用该主板的 Steam Controller。重复模拟过程还需另行提供 Valve 的 vcf_wired_controller_d0g_57bf5c10.bin 固件及 LPC11U37 的 16 kB 启动 ROM 转储。
- 固件构建使用 LPCXpresso IDE v8.2.2 和随附的 NXP lpc_chip_11uxx_lib；在 fw_cfg.h 中选择 DEV_BOARD_FW 或 SWITCH_WIRED_POWERA_FW。SCJingleConverter 使用 Qt 5.12；SteamControllerConfig.py 使用 PyUSB。
- 作者的源文件带有 MIT 声明；随附的 NXP LPCOpen 库仅限与 NXP 微控制器配合使用。仓库没有许可证文件。自制固件内嵌了 Valve 固件的默认提示音数据，以及从 PowerA 手柄复制的 HID 报告描述符。

## 一手来源

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>

## 同分区更多条目：固件与硬件

- [open-desk-lamp-firmware：小米台灯的替代固件](https://awesomerea.org/zh/resources/xiaomi-desk-lamp-open-firmware-case/index.md) · 案例
- [EchoPod：Snowsky Echo Mini 8 GB 替代固件](https://awesomerea.org/zh/resources/echopod-echo-mini-firmware-case/index.md) · 案例
- [GLaBIOS：从零编写的 8K ROM BIOS](https://awesomerea.org/zh/resources/glabios-rom-bios-case/index.md) · 案例
- [TC66 定制固件：RuiDeng USB-C 功率计的替代镜像](https://awesomerea.org/zh/resources/tc66-meter-firmware-case/index.md) · 案例
- [UV-K5：泉盛固件 v2.1.27 的开源重实现](https://awesomerea.org/zh/resources/uv-k5-firmware-case/index.md) · 案例
- [R64Emu：Nintendo 64 硬件的低层重建](https://awesomerea.org/zh/resources/r64emu-n64-case/index.md) · 案例

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
