Skip to content

Fix: reset every Stream Deck model at startup, not a subset - #649

Open
mhlas7 wants to merge 1 commit into
StreamController:mainfrom
mhlas7:reset-all-deck-models
Open

mhlas7 wants to merge 1 commit into
StreamController:mainfrom
mhlas7:reset-all-deck-models

Conversation

@mhlas7

@mhlas7 mhlas7 commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

reset_all_decks() clears a deck left in a state where writes fail, but its product id list had drifted behind StreamDeck.ProductIDs. Mini Discord, Mini MK2, Neo, Plus XL, Studio and XL V2 were never reset.

On those models a wedged deck stayed wedged across restarts: the app opened the device, the first feature report returned -1, and startup aborted with a TransportError every time until the device was reset by hand.

Coverage

names in the list distinct product ids covered
before 11 11 of 17
after 17 17 of 17

ProductIDs defines 18 constants but 17 distinct values, since USB_PID_STREAMDECK_MK2_MODULE and USB_PID_STREAMDECK_MK2_V2 are both 0x00b9.

One caveat

Of the six ids added, udev.rules tags only Mini MK2 (0x0090), Neo (0x009a) and XL V2 (0x008f) for uaccess. On Mini Discord (0x00b3), Plus XL (0x00c6) and Studio (0x00aa) the device.reset() can still fail on permissions and be caught by the existing handler, so those three need a udev rule before the reset takes effect. I left that out here since it is a separate concern — happy to fold it in or do a follow-up, whichever you prefer.

For what it's worth the two lists were already inconsistent in both directions: the module ids (0x00b8, 0x00b9, 0x00ba) are in the reset list with no udev rules either.

@mhlas7
mhlas7 marked this pull request as ready for review September 3, 2026 03:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant