Skip to content

Update Steam Controller 2026 Report ID (#103) and increase overall stability - #104

Merged
o0Zz merged 2 commits into
o0Zz:masterfrom
gingerphoenix10:master
Jul 28, 2026
Merged

Update Steam Controller 2026 Report ID (#103) and increase overall stability#104
o0Zz merged 2 commits into
o0Zz:masterfrom
gingerphoenix10:master

Conversation

@gingerphoenix10

Copy link
Copy Markdown

No description provided.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had to increase this number since the puck exposes the 4 controller slots, as well as the puck itself for some messages. It never gets read as an actual controller, but still causes a crash trying to read it if the max inputs is 4

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CONTROLLER_MAX_INPUTS should not be increased and there is no chance you got a crash because of that. The reason is mainly because input_idx is everytime 0 in your case - try to add a log you will see. (Your driver report only 1 controller because you didn't overrided the method controller count) so if you get a crash it's not because you exceed the disconnected buffer.

@o0Zz

o0Zz commented Jul 22, 2026

Copy link
Copy Markdown
Owner

I'm not sure to understand exactly what does this PR, i have the feeling it fix the puck, Correct ?
Did you try to connect multiple controller to the puck ? Currently with the code I read I thinik it will just not work and you will receive random input. but at the same time I see no where you return the actual controller count to syscon so input_idx will be everytime 0.

Syscon invoke ParseData for every input_idx and you use input_idx for a disconnect flag but I don't really understand the purpose.

@gingerphoenix10

gingerphoenix10 commented Jul 23, 2026

Copy link
Copy Markdown
Author

There's a good chance that multiple controllers over puck doesn't work, but Valve didn't even let you join the queue to buy a second controller until recently so I was unable to check
This makes it work a little better with one controller on the puck at least, reduces log spam and also makes the lizard check no longer reliant on reports from the controller for both puck and USB.
I'll probably remove some of the more experimental stuff with reading multiple controllers over puck later today, and I'll reimplement it once I can actually get a second controller

Also adds support for the new report ID the controller uses since newer firmwares don't use the same one

@o0Zz

o0Zz commented Jul 28, 2026

Copy link
Copy Markdown
Owner

I will take the ownership of that PR if you don't mind

@o0Zz
o0Zz merged commit 226f8a3 into o0Zz:master Jul 28, 2026
2 checks passed
@gingerphoenix10

gingerphoenix10 commented Jul 29, 2026

Copy link
Copy Markdown
Author

Yep, that's fine. Sorry I couldn't get time to work on it earlier

@o0Zz Your changes still seem mostly fine, and taking a look at my changes again, it seems that a lot of them were probably made during my testing and I forgot to remove them

Only thing to mention about your changes is that Lizard mode is now only disabled once on connection, causing input issues after a few seconds. It should still be re-sent every 3 seconds, as can be seen here https://github.com/libsdl-org/SDL/blob/63bf4c1c79ce656d429c548ea5530c83f508bde7/src/joystick/hidapi/SDL_hidapi_steam_triton.c#L496

@o0Zz

o0Zz commented Jul 29, 2026

Copy link
Copy Markdown
Owner

It look like linux driver has a different approach: https://github.com/torvalds/linux/blob/fc02acf6ac0ccde0c805c2daa9148683cdd01ba8/drivers/hid/hid-steam.c#L557

They disable the watchdog to avoid polling every 3s. I think I will implement that as it is more aligned with what all other controllers is doing in sys-con. I will let you know once I will have a new build for test

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants