This repository has been archived by the owner on Nov 7, 2022. It is now read-only.
Resolve communication error by changing wValue from 0x3000 to 0x0300 #4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The observed bug is that no response is received from the Steam Deck Controller device. Increasing the timeout or ignoring the timeout error does not resolve the issue. Changing the wValue in the control_transer functions seems to resolve the issue and is consistent with the value during USB communication while SteamOS is running.
Error:
Device Info:
Steam Deck 512GB Model
BIOS Version: F7A0108
Controller FW: Should be the latest as of 2022-08-20. I updated using jupiter-controller-update and now the tool itself no longer works or show the current controller version. (I'll have to look into this more).
Using Wireshark to debug Steam's USB communication, I changed the wValue to 0x0300 and that seems to fix the issue. The USB communication with SteamOS running fairly noisy so I wasn't sure what actual button/device inputs I was seeing but the wValue was consistently 0x0300 for Setup Data in the SET_REPORT requests. After changing the wValue, I can see all the currently supported inputs working in the verbose output and using evtest.
(Sidenote) I'm not sure how to utilize this service further; libinput seems to explicitly ignore gamepad devices so it's not visible in desktop environments such as swaywm. It appears another tool, sc-controller, has support for mapping gamepad devices (including the Steam Deck) to desktop commands but it would be nice to have a simple service for providing a desktop environment input. Does the intended use case for this service include general desktop environment input devices?