[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-85867":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":14,"stars7d":17,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":23,"topics":24,"createdAt":10,"pushedAt":25,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":16,"starSnapshotCount":16,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},85867,"openpuck","safijari\u002Fopenpuck","safijari","Opensource firmware for NRF52840 Pro Micro that copycats the Steam Controller 2 Puck and adds an Xbox and Switch mode","https:\u002F\u002Fsafijari.github.io\u002Fopenpuck\u002F",null,"C++",113,8,3,10,0,6,12,52.46,"GNU Affero General Public License v3.0",false,"main",true,[],"2026-06-20 18:33:33","2026-06-20 18:33:37","# OpenPuck\nOpensource firmware for NRF52840 Pro Micro that copycats the Steam Controller 2 Puck and adds an Xbox and Switch mode.\n\n> [!WARNING]\n> Every part of this project _HEAVILY_ used LLMs. Everything from discovery of the protocol to writing the arduino sketch and running various automated benchmarks invovled Claude and Codex. This readme is the only organic, single origin, ethically sourced and humanely slaughtered assemblage of words in this project. I have done my best to review the code and I invite anyone concerned about the stability or security of this project to do the same.*\n\n# The Steam Controller 2\nReleased in 2026, the Steam Controller 2 represents the peak (IMO) of controller design. Trackpads, gyro, 4 back buttons, all with the flexibility of Steam Input brings the amazing flexiblity of the Steam Deck's controls to gaming PCs in general.\n\nThe \"puck\" is what the controller uses for wireless communication with the host device. It can handle 4 controllers paired to it at the same time and can run at a very low latency with all 4 connected. While the controller has a bluetooth mode too it has over twice the latency so the puck is truly where it's at.\n\n# The Problem\nThere are two fundamental problems with the controller:\n\n1. The puck is not (yet) available for purchase separately from the controller so if you want a replacement or a second one (a single controller can pair to two) you're out of luck.\n\n2. Steam Input isn't just a nicety, it's a requirement. This means that the controller is basically useless unless you have Steam running (outside of certain contexts that I personally consider niche). If, for example, you have gamepass and want to play FH6 through Gamepass you're gonna be in for a bad time and you'll probalby need specialized software running on your computer in order to make the controller work with it.\n\n# What this project does\n**Video Intro**\n\n[![OpenPuck Intro](https:\u002F\u002Fimg.youtube.com\u002Fvi\u002FgSaqO9oqq9s\u002F0.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=gSaqO9oqq9s)\n\nOpenPuck uses a [Pro Micro NRF52840](https:\u002F\u002Fwww.amazon.com\u002Fdp\u002FB0GSZ7FD6T) ($8 on Amazon, possibly cheaper elsewhere) which uses a radio similar to the one being used by the controller and the puck. Once the arduino sketch is uploaded it emulates the puck over USB to Steam by default and allows pairing the controller normally (almost, the lizard mode for when Steam is off might not be 1:1). Latency [has been measured to be within 1ms of the official puck](https:\u002F\u002Fwww.reddit.com\u002Fr\u002FSteamController\u002Fcomments\u002F1u754ze\u002Fcomplete_latency_testing_of_openpuck_project\u002F).\n\nAt any point you can hold all 4 back buttons and press X to switch over to ***Xbox mode** which maps all canonical inputs to their expected counterparts (plus L4 -> LB, L5 -> L3, etc which are configurable). In this mode the right trackpad acts as a mouse but at present this only works in Android and SteamOS.\n\nSimilarly you can hold all 4 back buttons and press Y to switch (teehee) over to a **Switch mode**. This emulates a pro controller full with gyro and haptics. There's other modes as well:\n\n| Button combo (configurable) | Mode | Comment |\n|---|---|---|\n| back-4 + A | Steam | Steam Controller Mode |\n| back-4 + B | Lizard | Lizard mode, even if Steam is open |\n| back-4 + X | Xbox | Xbox 360 Controller |\n| back-4 + Y | Swith Pro | Switch Controller + Gyro + Haptics |\n| WebUSB panel → mode 4 | Hori Pad | Switch mode with no gyro or haptics |\n| WebUSB panel → mode 5 | DualSense + Gyro + Trackpad | PC only |\n| WebUSB panel → mode 6 | DS4\u002FHIDGYRO + Gyro + Trackpad | PC only |\n\nI'm also adding various QOL items as I go as well. For example having to hold the Steam button for like 6 seconds feels like an eternity. If Steam is open you can do Steam +Y for a shutdown. I'm adding Steam + Y for 2 seconds as a shutdown chort in ALL modes now.\n\nNote: to use the Switch mode on a real Switch you'll need to [enable the pro controller wired communication option](https:\u002F\u002Fwww.nintendo.com\u002Fen-gb\u002FSupport\u002FTroubleshooting\u002FHow-to-Enable-Disable-Pro-Controller-Wired-Communication-1516284.html).\n\n### A note on the Lizard mode:\nThe Lizard mode behaves similarly to how the controller behaves when Steam is closed, but this will work even when Steam is open. This has a few advantages\nthe biggest one being that you can use inputs when a high privilege application is in the foreground (like the Task Manager, when using Steam if you wanna be able to do that Steam must be run as admin).\n\nAdditionally it has some shortcuts that might be useful: Steam + L5\u002FR5 will do volume control, RB is Alt so you can RB + Select to move through windows, LB is Ctrl \nand Steam + L4 ls Ctrl + Alt + Delete.\n\n# How to use it\nYou will need to flash OpenPuck.ino onto a compatible microcontroller. See [build instructions document](.\u002Fdocs\u002FBUILD_AND_DEPLOY.md) for more details.\n\n# Configuration\nA webusb based configuration UI is available [here](https:\u002F\u002Fsafijari.github.io\u002Fopenpuck\u002F). It allows Switching the mode manually and changing the back button mapping for other modes among other things. This will likely only work in Chrome and Edge and needs the pro micro to be connected via USB to the same computer for it to function. Note that it might not work in all modes on all machines but should always work in the Steam Controller mode (which you can revert to with back-4 + A).\n\n# Future work\n- Find a way to make Xinput mode and mouse work together on all platforms\n- Ensure multiple controllers can function correctly (if I can ever buy one)\n- Design the charging portion (and make it short proof)\n- Design a 3D printable housing\n\n# Contributions\nThe firmware is split into small, single-responsibility modules under `OpenPuck\u002F` (one file per emulated controller, plus the RF, config, and host-interface layers). Start with [ARCHITECTURE.md](.\u002FARCHITECTURE.md) for the map of how it all fits together and how to add a new USB personality.\n\nI have tested this software fairly extensively but I have limited resources. I only have one controller so I actually don't know if multiple controllers even work correctly (in fact I'm almost sure they will not). Please submit issues with any issues you find. PRs also welcome of course.\n\n# Acknowledgements\n- Valve for putting out the amazing controller\n- Whoever wrote the drivers for SDL \u002F Linux\n- Alan for not scalping and selling me this controller for $120\n- https:\u002F\u002Fgithub.com\u002Fknflrpn\u002F2wiCC for the Switch Pro controller mode help\n- Massive thanks to [u\u002FCareful_Tune4744](https:\u002F\u002Fwww.reddit.com\u002Fuser\u002FCareful_Tune4744\u002F) for latency testing as well as testing and giving feedback on the Switch Pro mode\n- Thanks to Lawstorant from a mutual discord server for constructive criticism of the repo's state\n\n# * Another note on LLM use\nI want nothing more than for there to be a fully human coded alternative to OpenPuck that's on par with or better in every way. I would love to stop working on OpenPuck.\n\nIf someone builds an alternative that matches this criteria I would happily change the name of this project and archive this repo.\n","OpenPuck 是一个开源固件项目，旨在为NRF52840 Pro Micro微控制器提供类似于Steam Controller 2 Puck的功能，并增加了Xbox和Switch模式。该项目使用C++编写，能够通过USB模拟Puck与Steam通信，支持最多四个控制器同时连接，并且延迟极低。此外，用户可以通过特定按键组合切换到Xbox或Switch模式，使得控制器在不同平台上的兼容性得到显著提升。OpenPuck特别适合那些希望增强自己游戏体验、特别是需要跨平台支持的玩家使用。",2,"2026-06-21 04:01:52","CREATED_QUERY"]