https://bugs.kde.org/show_bug.cgi?id=521433

            Bug ID: 521433
           Summary: The steam deck never shows proper orientation when
                    gyroscope is on due to kernel panel quirk
    Classification: Plasma
           Product: plasma-mobile
      Version First unspecified
       Reported In:
          Platform: openSUSE
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: Shell
          Assignee: [email protected]
          Reporter: [email protected]
                CC: [email protected]
  Target Milestone: ---

Created attachment 193132
  --> https://bugs.kde.org/attachment.cgi?id=193132&action=edit
As long as automatic is enabled

***
If you're not sure this is actually a bug or valid feature request, instead
post about it at https://discuss.kde.org

If you're reporting a crash, attach a backtrace with debug symbols; see
https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports

Please remove this comment after reading and before submitting - thanks!
***

DESCRIPTION
The steam deck is a 800x1280 LCD screen source. In order to change to
orientation from portrait to landscape, Valve added a panel quirk to the Linux
kernel. However, this quirk interact with the gyro and cause the screen to
never rotate properly. 

In order to test the screen rotation in KDE, you will need a patched
iio-sensor-proxy due to an upstream bug. On default, steam deck will start in
lizard mode. You will have to disable it by sending 'N' to the
/sys/module/hid_steam/parameters/lizard_mode 


https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/work_items/416


STEPS TO REPRODUCE
1. Exit steam
2. Disable Lizard mode
   - echo N | sudo tee /sys/module/hid_steam/parameters/lizard_mode 
3. Set Automatic to enabled in display settings in systemsettings
4. Run patch iio-sensor-proxy
    1. Pull the repo 
      - git pull https://gitlab.freedesktop.org/hadess/iio-sensor-proxy
    2. Patch the input acceleration
      diff --git a/src/drv-input-accel.c b/src/drv-input-accel.c
index a6eab9f..113ca44 100644
--- a/src/drv-input-accel.c
+++ b/src/drv-input-accel.c
@@ -106,7 +106,8 @@ input_accel_discover (GUdevDevice *device)

        parent = g_udev_device_get_parent (device);
        if (parent && is_part_of_joypad (parent))
-               return FALSE;
+               if (!g_udev_device_get_property_as_boolean (device,
"ID_INPUT_ACCELEROMETER"))
+                       return FALSE;

        g_debug ("Found input accel at %s", g_udev_device_get_sysfs_path
(device));
        return TRUE;
lines 1-14/14 (END)
     3. Run Meson
         - meson setup build
     4. Run ninja
         -  ninja -C build/
     5. Run iio-sensor-proxy
        - ./build/src/iio-sensor-proxy -r -v


OBSERVED RESULT
The orientation is off by 90 degrees due to the kernel quirk

EXPECTED RESULT
I expect the screen to be in the same orientation as any other tablet.

SOFTWARE/OS VERSIONS
Operating System: openSUSE Tumbleweed 20260610
KDE Plasma Version: 6.6.5
KDE Frameworks Version: 6.26.0
Qt Version: 6.11.1
Kernel Version: 7.0.11-1-default (64-bit)
Graphics Platform: Wayland
Processors: 8 × AMD Custom APU 0405
Memory: 16 GiB of RAM (14.5 GiB usable)
Graphics Processor: AMD Custom GPU 0405
Manufacturer: Valve
Product Name: Jupiter
System Version: 1



ADDITIONAL INFORMATION
Gyro working
sudo evtest /dev/input/event17
vent: time 1781375327.657250, -------------- SYN_REPORT ------------
Event: time 1781375327.661250, type 4 (EV_MSC), code 5 (MSC_TIMESTAMP), value
-1453129888
Event: time 1781375327.661250, type 3 (EV_ABS), code 0 (ABS_X), value -215
Event: time 1781375327.661250, type 3 (EV_ABS), code 2 (ABS_Z), value -15514
Event: time 1781375327.661250, type 3 (EV_ABS), code 1 (ABS_Y), value 5412
Event: time 1781375327.661250, type 3 (EV_ABS), code 3 (ABS_RX), value 3

Not working
sudo evtest /dev/input/event17
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x28de product 0x1205 version 0x111
Input device name: "Steam Deck Motion Sensors"
Supported events:
  Event type 0 (EV_SYN)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value   -211
      Min   -32768
      Max    32768
      Fuzz      32
      Resolution   16384
    Event code 1 (ABS_Y)
      Value   5286
      Min   -32768
      Max    32768
      Fuzz      32
      Resolution   16384
    Event code 2 (ABS_Z)
      Value -15688
      Min   -32768
      Max    32768
      Fuzz      32
      Resolution   16384
    Event code 3 (ABS_RX)
      Value      3
      Min   -32768
      Max    32768
      Fuzz       1
      Resolution      16
    Event code 4 (ABS_RY)
      Value      0
      Min   -32768
      Max    32768
      Fuzz       1
      Resolution      16
    Event code 5 (ABS_RZ)
      Value      3
      Min   -32768
      Max    32768
      Fuzz       1
      Resolution      16
  Event type 4 (EV_MSC)
    Event code 5 (MSC_TIMESTAMP)

Links
https://github.com/torvalds/linux/blob/2b07ea76fd28989bde5993532d7a943a6f90e246/drivers/gpu/drm/drm_panel_orientation_quirks.c#L507

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to