mirror of
https://github.com/safijari/openpuck.git
synced 2026-11-03 22:30:22 +00:00
[GH-ISSUE #167] [Feature Request] Better Multi-Puck #72
Labels
No labels
pull-request
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
safijari/openpuck#72
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @Heroj04 on GitHub (Jul 14, 2026).
Original GitHub issue: https://github.com/safijari/openpuck/issues/167
Base Idea:
Allow switching between each multiple pucks during controller boot expanding the total number of pucks able to be left on and switched between.
Reasoning:
I would love to have multiple pucks that are always on and then depending on button chords held during startup select which one I connect to. However the number of pucks I want to use is greater than the default two slots available. This would theoretically allow me to selectively wake a specific device.
Possible Implementation:
I admit I don't know how feasible this really is, but I can imagine a couple ideas.
1 - ID based using back buttons - WebUSB config, set a "Multi-Puck ID" between 1-4. When a controller connects it first checks if the back button matching the ID is held down. If not, then it will ignore the connection request and allow another puck to check/connect.
If no buttons are pressed, then it will follow normal connection rules.
2 - Chord based - Same basic premise as above but you set a button chord to be held during start up, each puck checks if the chord matches its setting before connecting.
3 - Multi-Puck Network - More complex/future. The pucks actually communicate with each other as well as the controller allowing them to save which controller was last connected to which puck, ID settings, seamless handover using button chords. all pucks listen to connected controllers but only the selected puck responds. Possibly allow syncing of other config options.
@sakarzac000 commented on GitHub (Jul 16, 2026):
I believe the limiter is in the Controller itself, not the puck. Puck advertises, controller looks for a specific ID depending on which puck you chose to connect to, and will only connect to that one.
@Leseratte10 commented on GitHub (Jul 16, 2026):
Yeah, but there is no reason you can't have multiple pucks with the same ID.
I've tested it before, you can just "clone" the pairing data from one puck and copy it to multiple other pucks, and the controller will connect to whichever puck happens to be in range. This works both with the OpenPuck and with the original puck.
So if you have two Pucks with the same Valve pairing data, the controller connects to the 1st one, then you press a specific button combination, you could make the 1st puck disconnect the controller and refuse connection requests from that controller for a couple seconds, which should force the controller to connect to the 2nd puck instead.