Lenovo Yoga 7 2-in-1 Autorotation Does not Work - Issue Persists

Greetings,

I opened a topic on the problem I had with my new tablet/PC device around two weeks ago (check here). I thought I had a solution prematurely.

When iio-sensor-proxy is compiled locally on the machine, the accelerometer can be detected only at the first reboot. The machine is unable to detect the device after the second boot and so on. When the compiled iio-sensor-proxy could detect the accelerometer, the accelerometer appears as a separate device, iio:device1, apart from the light sensor, iio:device0.

After the official Fedora package is upgraded to version 3.8, I removed the compiled version and installed the package instead. As of now, iio-sensor-proxy is still unable to detect my computer’s accelerometer, and thus autorotation cannot work properly.

Here is the first lines of the output of monitor-sensor;

    Waiting for iio-sensor-proxy to appear
+++ iio-sensor-proxy appeared
=== No accelerometer
=== Has ambient light sensor (value: 312.000000, unit: lux)
=== No proximity sensor
=== No compass
    Light changed: 309.100000 (lux)
    Light changed: 314.000000 (lux)
    Light changed: 312.500000 (lux)
    Light changed: 321.700000 (lux)

And here is the output for the command systemctl status iio-sensor-proxy.service.

● iio-sensor-proxy.service - IIO Sensor Proxy service
     Loaded: loaded (/usr/lib/systemd/system/iio-sensor-proxy.service; static)
    Drop-In: /usr/lib/systemd/system/service.d
             └─10-timeout-abort.conf
     Active: active (running) since Tue 2025-08-19 11:32:07 EDT; 10min ago
 Invocation: 80ec99b352df4d0b8a9daab7cc6ade01
   Main PID: 1388 (iio-sensor-prox)
      Tasks: 4 (limit: 17456)
     Memory: 1.6M (peak: 3.2M)
        CPU: 445ms
     CGroup: /system.slice/iio-sensor-proxy.service
             └─1388 /usr/libexec/iio-sensor-proxy

Aug 19 11:32:07 yogifedora systemd[1]: Starting iio-sensor-proxy.service - IIO Sensor Proxy service...
Aug 19 11:32:07 yogifedora systemd[1]: Started iio-sensor-proxy.service - IIO Sensor Proxy service.
Aug 19 11:32:08 yogifedora iio-sensor-prox[1388]: Buffer '/dev/iio:device0' did not have data within 0.5s
Aug 19 11:32:08 yogifedora iio-sensor-prox[1388]: Not a switch [/sys/devices/pci0000:00/0000:00:08.1/0000:04:00.4/usb1/1-1/1-1:1.4/0003:04F2:B83C.0002/HID-SENSOR-200041.5.auto/iio:device0/../capabilities/sw]
Aug 19 11:32:08 yogifedora iio-sensor-prox[1388]: Invalid bitmask entry for /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:16/LNXVIDEO:00/input/input9/event4

Finally, this is the output of gdbus introspect --system --dest net.hadess.SensorProxy --object-path /net/hadess/SensorProxy

node /net/hadess/SensorProxy {
  interface org.freedesktop.DBus.Properties {
    methods:
      Get(in  s interface_name,
          in  s property_name,
          out v value);
      GetAll(in  s interface_name,
             out a{sv} properties);
      Set(in  s interface_name,
          in  s property_name,
          in  v value);
    signals:
      PropertiesChanged(s interface_name,
                        a{sv} changed_properties,
                        as invalidated_properties);
    properties:
  };
  interface org.freedesktop.DBus.Introspectable {
    methods:
      Introspect(out s xml_data);
    signals:
    properties:
  };
  interface org.freedesktop.DBus.Peer {
    methods:
      Ping();
      GetMachineId(out s machine_uuid);
    signals:
    properties:
  };
  interface net.hadess.SensorProxy {
    methods:
      ClaimAccelerometer();
      ReleaseAccelerometer();
      ClaimLight();
      ReleaseLight();
      ClaimProximity();
      ReleaseProximity();
    signals:
    properties:
      readonly b HasAccelerometer = false;
      readonly s AccelerometerOrientation = 'undefined';
      readonly s AccelerometerTilt = 'undefined';
      readonly b HasAmbientLight = true;
      readonly s LightLevelUnit = 'lux';
      readonly d LightLevel = 325.30000000000001;
      readonly b HasProximity = false;
      readonly b ProximityNear = false;
  };
  node Compass {
  };
};

I would appreciate if somebody with a better knowledge on the driver or debugging helps me with this issue.

I can confirm a similar issue with a Lenovo Yoga 2-in-1. Based on your previous thread, we have the same CPU but slightly different models.

When I do monitor-sensor I get:

Waiting for iio-sensor-proxy to appear
+++ iio-sensor-proxy appeared
=== No accelerometer
=== Has ambient light sensor (value: 2.700000, unit: lux)
=== No proximity sensor
=== No compass

This is with 3.8:

Name            : iio-sensor-proxy
Epoch           : 0
Version         : 3.8
Release         : 1.fc42
Architecture    : x86_64
Installed size  : 156.8 KiB
Source          : iio-sensor-proxy-3.8-1.fc42.src.rpm
From repository : updates
Summary         : IIO accelerometer sensor to input device proxy
URL             : https://gitlab.freedesktop.org/hadess/iio-sensor-proxy
License         : GPL-3.0-or-later
Description     : IIO accelerometer sensor to input device proxy.
Vendor          : Fedora Project

I have tried to play around with some of the troubleshooting steps from the upstream project’s site, but haven’t managed to get any further than the accelerometer not being detected.

I checked a different laptop and it shows references to “accel_3d” in the sensor output from udevadm info --export-db.

Similarly, lsmod on the other laptop shows hid_sensor_gyro_3d and hid_sensor_accel_3d whereas this Yoga only shows hid_sensor_als, which appears to be lighting sensor. I don’t see any reference to an accelerometer or rotation.

I am a newbie, so I’m not super up on how to further debug this. It seems to me like perhaps the accelerometer is not supported in the Kernel?

I swore I tested rotation when running off the Fedora 42 Workstation LiveUSB before installing. However, I tried booting into that this evening and it did not detect the accelerometer. So, either I misremember or something extra weird has happened since that first test.

I also found this on the project page’s issue tracker. This post was pointing at a kernel issue. I don’t know enough about this to say for certain, but does feel like our issue is in the kernel.

I’d look around dmesg; not sure for what specifically, but I have lines like:

dell_lis3lv02d: accelerometer is present on SMBus but its address is unknown, skipping registration
dell_lis3lv02d: Pass dell_lis3lv02d.probe_i2c_addr=1 on the kernel command line to probe, this may be dangerous!

Doing that gets my free-fall sensor detected.

Thanks for the suggestion. I tried dmesg | grep -i xxxx where xxxx was “hid”, “accel”, and “sensor”. None of them popped up anything that seemed relevant to the missing accelerometer.

[    0.047893] AMD-Vi: ivrs, add hid:AMDI0020, uid:ID00, rdevid:0xa0
[    0.047894] AMD-Vi: ivrs, add hid:AMDI0020, uid:ID01, rdevid:0xa0
[    0.047895] AMD-Vi: ivrs, add hid:AMDI0020, uid:ID02, rdevid:0xa0
[    0.047895] AMD-Vi: ivrs, add hid:AMDI0020, uid:ID03, rdevid:0x98
[    0.047896] AMD-Vi: ivrs, add hid:MSFT0201, uid:1, rdevid:0x60
[    0.047896] AMD-Vi: ivrs, add hid:AMDI0020, uid:ID04, rdevid:0x98
[    2.136780] hid: raw HID events driver (C) Jiri Kosina
[    2.136805] usbcore: registered new interface driver usbhid
[    2.136807] usbhid: USB HID core driver
[    3.360133] hid-generic 0018:056A:53FE.0001: input,hidraw0: I2C HID v1.00 Mouse [WACF2200:00 056A:53FE] on i2c-WACF2200:00
[    3.366124] hid-generic 0018:0488:1054.0002: input,hidraw1: I2C HID v1.00 Mouse [CIRQ1080:00 0488:1054] on i2c-CIRQ1080:00
[    3.549623] hid-multitouch 0018:0488:1054.0002: input,hidraw1: I2C HID v1.00 Mouse [CIRQ1080:00 0488:1054] on i2c-CIRQ1080:00
[    3.576139] wacom 0018:056A:53FE.0001: hidraw0: I2C HID v1.00 Mouse [WACF2200:00 056A:53FE] on i2c-WACF2200:00
[    3.576180] input: Wacom HID 53FE Pen as /devices/platform/AMDI0010:02/i2c-0/i2c-WACF2200:00/0018:056A:53FE.0001/input/input15
[    3.576257] input: Wacom HID 53FE Finger as /devices/platform/AMDI0010:02/i2c-0/i2c-WACF2200:00/0018:056A:53FE.0001/input/input16
[   18.215059] hid-generic 0020:1022:0001.0003: hidraw2: SENSOR HUB HID v0.00 Device [hid-amdsfh 1022:0001] on pcie_mp2_amd
[   18.227262] hid-sensor-hub 0020:1022:0001.0003: hidraw2: SENSOR HUB HID v0.00 Device [hid-amdsfh 1022:0001] on pcie_mp2_amd
[    0.186145] PCI: Using configuration type 1 for base access
[    3.345944] [drm] Initialized amdxdna_accel_driver 0.0.0 for 0000:05:00.1 on minor 0
[   18.215059] hid-generic 0020:1022:0001.0003: hidraw2: SENSOR HUB HID v0.00 Device [hid-amdsfh 1022:0001] on pcie_mp2_amd
[   18.227262] hid-sensor-hub 0020:1022:0001.0003: hidraw2: SENSOR HUB HID v0.00 Device [hid-amdsfh 1022:0001] on pcie_mp2_amd

Respectively.

Again, pretty new to this, so maybe I’m missing something obvious.

Greetings,

Thank you for your effort for looking into the problem. I wanted to add here that after frustration with a couple of problems all together (none of which being directly related to Fedora Workstation, to be clear), I decided to switch to Arch on my Lenovo Yoga.

I need to state that I am having the exact same problem with autorotation. I am still running GNOME 48, with iio-sensor-proxy version 3.8.

Knowing well that I am currently sharing a different system, here are my outputs;

monitor-sensor:

    Waiting for iio-sensor-proxy to appear
+++ iio-sensor-proxy appeared
=== No accelerometer
=== Has ambient light sensor (value: 688.500000, unit: lux)
=== No proximity sensor
=== No compass
    Light changed: 689.800000 (lux)
    Light changed: 691.500000 (lux)
    Light changed: 695.900000 (lux)
    Light changed: 702.800000 (lux)
    Light changed: 703.900000 (lux)
    Light changed: 703.500000 (lux)
    Light changed: 703.400000 (lux)
    Light changed: 700.800000 (lux)

systemctl status iio-sensor-proxy.service:

● iio-sensor-proxy.service - IIO Sensor Proxy service
     Loaded: loaded (/usr/lib/systemd/system/iio-sensor-proxy.service; static)
     Active: active (running) since Sat 2025-09-20 12:27:12 EDT; 33min ago
 Invocation: 723a0ab0c0e2420893926ba7b164edf1
   Main PID: 742 (iio-sensor-prox)
      Tasks: 4 (limit: 17747)
     Memory: 2.9M (peak: 4.7M)
        CPU: 1.034s
     CGroup: /system.slice/iio-sensor-proxy.service
             └─742 /usr/lib/iio-sensor-proxy

Sep 20 12:27:12 yogiarch systemd[1]: Starting IIO Sensor Proxy service...
Sep 20 12:27:12 yogiarch systemd[1]: Started IIO Sensor Proxy service.
Sep 20 12:27:13 yogiarch iio-sensor-prox[742]: Buffer '/dev/iio:device0' did not have data within 0.5s
Sep 20 12:27:13 yogiarch iio-sensor-prox[742]: Found proximity sensor but no PROXIMITY_NEAR_LEVEL udev property
Sep 20 12:27:13 yogiarch iio-sensor-prox[742]: See https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/blob/master/README.md
Sep 20 12:28:39 yogiarch iio-sensor-prox[742]: Not a switch [/sys/devices/pci0000:00/0000:00:08.3/0000:06:00.4/usb7/7-1/7-1:1.3/0003:046D:0A8F.0008/input/input37/../capabilities/sw]
Sep 20 12:28:39 yogiarch iio-sensor-prox[742]: Invalid bitmask entry for /sys/devices/pci0000:00/0000:00:08.3/0000:06:00.4/usb7/7-1/7-1:1.3/0003:046D:0A8F.0008/input/input37/event17

gdbus introspect --system --dest net.hadess.SensorProxy --object-path /net/hadess/SensorProxy:

node /net/hadess/SensorProxy {
  interface org.freedesktop.DBus.Properties {
    methods:
      Get(in  s interface_name,
          in  s property_name,
          out v value);
      GetAll(in  s interface_name,
             out a{sv} properties);
      Set(in  s interface_name,
          in  s property_name,
          in  v value);
    signals:
      PropertiesChanged(s interface_name,
                        a{sv} changed_properties,
                        as invalidated_properties);
    properties:
  };
  interface org.freedesktop.DBus.Introspectable {
    methods:
      Introspect(out s xml_data);
    signals:
    properties:
  };
  interface org.freedesktop.DBus.Peer {
    methods:
      Ping();
      GetMachineId(out s machine_uuid);
    signals:
    properties:
  };
  interface net.hadess.SensorProxy {
    methods:
      ClaimAccelerometer();
      ReleaseAccelerometer();
      ClaimLight();
      ReleaseLight();
      ClaimProximity();
      ReleaseProximity();
    signals:
    properties:
      readonly b HasAccelerometer = false;
      readonly s AccelerometerOrientation = 'undefined';
      readonly s AccelerometerTilt = 'undefined';
      readonly b HasAmbientLight = true;
      readonly s LightLevelUnit = 'lux';
      readonly d LightLevel = 697.5;
      readonly b HasProximity = false;
      readonly b ProximityNear = false;
  };
  node Compass {
  };
};

In my case dmesg | grep -i accelerometer doesn’t return any output.

I will go further in this issue, but by diving into the link shared by @spectre630, this is a kernel issue and there is not much anybody can do until they figure this out on the kernel side.

Thank you for the follow-up. I was wondering whether it would work on an Arch-based system with the newest kernel. I guess that gives me the answer.

And now we wait. :hourglass_not_done: