Enthusiast reverse-engineers Steam Controller 2 puck, creates DIY 'OpenPuck' that works without Steam Input — custom firmware can emulate Nintendo, PlayStation, and Xbox controllers

Valve Steam Controller
(Image credit: Tom's Hardware)

Valve's new Steam Controller lacks native XInput support, but you can still emulate it as long as Steam is running in the background. An enthusiast named Safijari has just engineered a more seamless solution, creating his own DIY "OpenPuck" that lets the Steam Controller emulate other gamepads on the fly. It can emulate Xbox, PlayStation, and even Nintendo layouts, and do so away from your PC.

OpenPuck for Steam Controller 2 Intro - YouTube OpenPuck for Steam Controller 2 Intro - YouTube
Watch On

OpenPuck serves as open-source firmware for a microcontroller, allowing you to easily flash and convert that dev board into a DIY Steam Controller puck. The firmware intercepts raw data from the Steam Controller and translates it on-device, enabling fully-fledged, real-time emulation without the need for Steam Input.

There are other options out there, but the creator used a Pro Micro NRF52480 from Amazon that has the appropriate Bluetooth and 2.4 GHz radios. Once primed in DFU mode, all you need to do is plug the board into your computer via USB-C, drag and drop the Arduino sketch onto it, and the microcontroller turns into an OpenPuck right away. You can 3D print a case to make the assembly look more polished, too.

Latest Videos FromTom's Hardware

Valve Steam Controller

The original Steam Controller 2 puck (Image credit: Tom's Hardware)

The sketch is available on the project's GitHub page. Once you've flashed your controller, head to the configurator to manage the puck. It's a simple website that uses the WebUSB API to manage the controller, allowing you to switch between the different modes, which include Switch Pro, Xbox, DualSense (PS5), and DualShock 4 (PS4). The project description claims the puck only has a 1ms latency.

The Switch mode works natively on a Switch console with gyro and haptics support, but you can also emulate a Hori Pad that disables those extra features. The PlayStation modes only work on PC, but there's a special DualShock 3 mode that can work natively on a PlayStation 3 console as well, with gyro and haptics (Sixaxis). Of course, the default Steam Controller mode is also there.

You can switch between some of these different controller modes by pressing all four back buttons together and hitting either A, B, X, or Y, but the PlayStation modes require you to use the web configurator. Once everything is set up, however, the Steam Controller runs just like an official Switch, Xbox, or PlayStation controller without Steam even being open in the background.

The different emulation modes of the OpenPuck

(Image credit: Future)

There's even a bonus "ReversePuck" sub-project that allows a Steam Deck to act as an external controller, supporting all of the Steam Controller's features (except grip). If you flash a second NRF52840 Pro Micro and plug it into a Steam Deck, you can stream the Steam Deck's built-in controls across the room over 2.4GHz to your OpenPuck-equipped PC, giving you access to essentially another Steam Controller.

Google Preferred Source

Follow Tom's Hardware on Google News, or add us as a preferred source, to get our latest news, analysis, & reviews in your feeds.

Hassam Nasir
Contributing Writer

Hassam Nasir is a die-hard hardware enthusiast with years of experience as a tech editor and writer, focusing on detailed CPU comparisons and general hardware news. When he’s not working, you’ll find him bending tubes for his ever-evolving custom water-loop gaming rig or benchmarking the latest CPUs and GPUs just for fun.

  • edzieba
    That's great! Having a peripheral device's operation tied to a shop application is unacceptable, no matter which corporation owns the shop.
    Reply
  • mcmx77
    edzieba said:
    That's great! Having a peripheral device's operation tied to a shop application is unacceptable, no matter which corporation owns the shop.
    They made it, they get to choose what to do with it.
    Reply
  • sarge1892
    edzieba said:
    That's great! Having a peripheral device's operation tied to a shop application is unacceptable, no matter which corporation owns the shop.
    The reason it's not compatible is steam input is not some random controller spec it's specifically built for pc games and calls on hooks direct into the game that only steam input can make use of

    Xinput meanwhile from ms only sends forward controller input and leaves the game to handle what that does

    Steam input sends game controll instructions and it manages how the controller hooks into those

    Finally whilst cool a steam controller on any other system is kinda useless all of the custom inputs like touchpads and capacitive sensors are not supported by anything

    It's cool it can be done but this wasn't like Sony making up a custom spec just to be proprietary

    Valve created the spec because it fundamentally works different than how every other controller ever works
    Reply
  • thestryker
    sarge1892 said:
    Valve created the spec because it fundamentally works different than how every other controller ever works
    You wrote an awful lot of words while ignoring a very simple fact: Literally nothing stopped Valve from implementing an Xinput fallback mode other than choosing not to. This choice doesn't benefit anyone except for Valve.
    Reply
  • edzieba
    sarge1892 said:
    The reason it's not compatible is steam input is not some random controller spec it's specifically built for pc games and calls on hooks direct into the game that only steam input can make use of
    That makes it worse, not better. Tying something as fundamental as input handling to a shop is utterly ludicrous.

    USB HID is universal (and already supports the pedestrian selection of input devices on the Steam Controller). DirectInput is universal under Windows (albeit legacy), and OpenXR is universal across OSes, and its input API can be implemented independently of any display output - and if you for some reason want to configure input mapping in some third application rather than in game you can do that with OpenXR.

    If Valve chose to implement SteamInput in addition to one of the many choices of open standard, that would be one thing. But instead they choose to be proprietary-only.
    Reply