[GH-ISSUE #167] [Feature Request] Better Multi-Puck #72

Closed
opened 2026-10-22 05:02:11 +00:00 by roman · 2 comments
Owner

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.

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.
roman closed this issue 2026-10-22 05:02:12 +00:00
Author
Owner

@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.

<!-- gh-comment-id:4987144730 --> @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.
Author
Owner

@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.

<!-- gh-comment-id:4988109746 --> @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.
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#72
No description provided.