[PR #119] [MERGED] Puck cloning support #207

Closed
opened 2026-10-22 05:07:37 +00:00 by roman · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/safijari/openpuck/pull/119
Author: @Leseratte10
Created: 7/4/2026
Status: ✅ Merged
Merged: 7/4/2026
Merged by: @safijari

Base: main ← Head: cloning


📝 Commits (1)

  • 261728d Improve scpair.py to allow cloning

📊 Changes

2 files changed (+130 additions, -5 deletions)

View changed files

➕ ReversePuck/PUCK_CLONING.md (+21 -0)
📝 ReversePuck/scpair.py (+109 -5)

📄 Description

I took the existing scpair.py script and added three different features to it:

  • Listing a puck's config will now not only show the controller serial but also the pairing key for each slot.
  • When pairing a controller to a puck, you can force it to use a specific 8-byte key instead of randomly generating one.
  • There's a new function write-puck that can write an arbitrary controller serial and pairing key to a Puck's slot.
  • There's a new function write-controller that can write an arbitrary puck serial and pairing key to a Controller's slot.

This also includes a short readme on how to use it.

With this, it's possible to have one single controller slot paired to infinitely many Pucks at the same time, both original Valve pucks and also OpenPucks. As long as you don't have multiple pucks in wireless range of the controller, this should work fine.

It might also be possible to have more than 4 controllers paired to a Puck this way, but that's completely untested as I don't have multiple Steam Controllers.

Also, interestingly, during my tests, wiping a controller's slot seems to fail all the time, not sure why that's the case. Wiping a puck's slot seems to work.

Also, another funny thing I found out: There's nothing that says that the serial number must even be a valid serial number. You can enter whatever you want in there and Steam will display it. Both for the controller (so you can name your Pucks) and for the Pucks (so you can name your controllers):

naming a puck connection

Linking #93 because that is related.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/safijari/openpuck/pull/119 **Author:** [@Leseratte10](https://github.com/Leseratte10) **Created:** 7/4/2026 **Status:** ✅ Merged **Merged:** 7/4/2026 **Merged by:** [@safijari](https://github.com/safijari) **Base:** `main` ← **Head:** `cloning` --- ### 📝 Commits (1) - [`261728d`](https://github.com/safijari/openpuck/commit/261728d09b8b7dc813a7f7005f19e8b580d07189) Improve scpair.py to allow cloning ### 📊 Changes **2 files changed** (+130 additions, -5 deletions) <details> <summary>View changed files</summary> ➕ `ReversePuck/PUCK_CLONING.md` (+21 -0) 📝 `ReversePuck/scpair.py` (+109 -5) </details> ### 📄 Description I took the existing scpair.py script and added three different features to it: - Listing a puck's config will now not only show the controller serial but also the pairing key for each slot. - When pairing a controller to a puck, you can force it to use a specific 8-byte key instead of randomly generating one. - There's a new function `write-puck` that can write an arbitrary controller serial and pairing key to a Puck's slot. - There's a new function `write-controller` that can write an arbitrary puck serial and pairing key to a Controller's slot. This also includes a short readme on how to use it. With this, it's possible to have one single controller slot paired to infinitely many Pucks at the same time, both original Valve pucks and also OpenPucks. As long as you don't have multiple pucks in wireless range of the controller, this should work fine. It *might* also be possible to have more than 4 controllers paired to a Puck this way, but that's completely untested as I don't have multiple Steam Controllers. Also, interestingly, during my tests, wiping a controller's slot seems to fail all the time, not sure why that's the case. Wiping a puck's slot seems to work. Also, another funny thing I found out: There's nothing that says that the serial number must even be a valid serial number. You can enter whatever you want in there and Steam will display it. Both for the controller (so you can name your Pucks) and for the Pucks (so you can name your controllers): <spoiler> <img width="2003" height="827" alt="naming a puck connection" src="https://github.com/user-attachments/assets/92827913-16a0-4787-a376-adbaf5ce5b03" /> </spoiler> Linking #93 because that is related. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
roman 2026-10-22 05:07:37 +00:00
Sign in to join this conversation.
No labels
pull-request
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
safijari/openpuck#207
No description provided.