fix(ROG Ally): invert gyro yaw for deck-uhid target - #607
Conversation
ROG Ally devices report gyro yaw with the opposite sign from what hid-steam expects when using the deck-uhid target. Enable yaw inversion only on known Ally DMI board names (RC71L, RC72LA, RC73XA, RC73YA).
|
This makes no sense to me. There are three distinct possibilities for this:
Given that SteamOS officially released on the Go S and was validated by Valve, and that it has been tested as 1:1 compatible with the deck as a source device, I think it's much more likely that 1 and 3 are more likely. |
|
I didn't update Ally's matrix because I checked ds5 emulation and it worked correctly. But I definitely didn't think that maybe there are two problems exist simultaneously (1 and 3 from your message). |
|
@pastaq Hello! Tested on the same Ally X with external controllers routed through InputPlumber, judged in-game (Talos Principle 2, gyro on, default settings, unchanged between runs):
So options 1 and 2 are out - neither target flips yaw for every device. Option 3 doesn't fit either: an inverted Ally source would show through both targets, but through ds5 it's fine. Only the IIO source + deck-uhid combination inverts, and no hidraw source reproduces it. That combination is exactly what this PR patches, so it does fix the reported symptom. What I don't know is how wide the problem is: does it hit only the Ally, or every handheld whose gyro comes from a built-in sensor (the iio source type)? If it's the latter, the sign belongs in one place on that source path and would fix all of them at once, instead of a board-name list that has to grow with every new model. UPD |
Summary
Fix inverted gyro yaw (left/right rotation) on ASUS ROG Ally devices when using the
deck-uhidtarget.Problem
On ROG Ally / Ally X / Xbox Ally, gyro yaw is reversed with
deck-uhidcompared tods5-edge. The IMU source is fine; the mismatch is in how yaw is written to the Deck UHID report versus how hid-steam exposes it as ABS_RZ.Changes
invert_gyro_yawtoSteamDeckConfigsteam_deck_uhidRC71L,RC72LA,RC73XA,RC73YA(from the existing50-rog_*.yamlprofiles). This avoids affecting other handhelds that also use a BMI323 IIO source (e.g. Ayaneo). Detection uses runtime DMIboard_name, so it still applies when the composite profile name is changed for controller spoofing.Test plan
deck-uhidtargetinputplumber device 0 testds5-edgetarget (yaw direction matches)