The problem:
Some FW12s running a variety of Linux distros suffer the following
When converted to tablet mode, the laptop disabled keyboard and touchpad, this is desirable behaviour (-event11 SWITCH_TOGGLE switch tablet-mode state 1)
When converting back to laptop mode, the laptop does not re-enable the keyboard and touchpad (no event fires)
The easiest way to get the keyboard and touchpad back is to suspend and resume. Alternatively a full shutdown works, but a reboot does not.
Additional Symptoms
– Screen angle sensor reports as “Unreliable” in framework_tool
– Automatic Screen rotation does not function
– Tilt on pen does not function due to “unreliable” screen angle sensor (GIMP/Surface pen)
Affected laptops
Plenty of people with FW12s report that things work correctly for them under the same distro
For those who have the problem, the problem occurs for numerous distros, it it is specific to the laptop, not any particular distro
Reports limited to batch 1
Status
I’ve raised a support ticket with Framework, which has been sent to the escalation support team after basic troubleshooting (Box undamaged, reseat input cover)
Workarounds
Suspend and resume works well, as does manual screen rotation
framework_tool can be used to override the sensor and force a specific configuration
I’ll update this thread as/when I hear back from support. If anybody has any contrary data (Eg they had the problem under distro1, but not under distro2, or you have a batch 0/2 device with the same problem), I’ll do my best to incorporate the info and form a more comprehensive problem statement
Thanks for breaking the issue out in it’s own thread. I still can confirm, that the issue definitely happened as described at some point. At a different time later I also had it working. So it might not be consistent. Not sure why it sometimes works, sometimes not.
Will re-test from time to time and chime in if I find anything noteworthy.
Yep, mine too. Always get the laptop->tablet to work, never get the tablet->laptop to work. sudo framework_tool --tablet-mode laptop works around it, though.
This will lock the system in tablet mode until the EC restarts. Which happens only when you fully power off the system and unplug AC. So I don’t suggest this as a solution.
The keyboard and touchpad are disabled by the firmware (EC) which works independently of the OS.
But additionally libinput also disables them if it receives SWITCH_TOGGLE tablet mode.
This is handled by the soc_button_array kernel driver.
Some rostros, e.g. Arch load pinctrl_tigerlake as a module instead of building it into the kernel.
soc_button_array must load after that module. You can manually unload and reload it:
sudo rmmod soc_button_array && sudo modprobe soc_button_array
With the --tablet-mode laptop it disables the hall effect sensor based switch to the tablet mode you can’t get out of. So it’s pretty decent workaround (at the cost of the keyboard being left enabled and potential accidental keypresses)
The screen rotation doesn’t work for me when using Fedora, which the framework documentation says should work out of the box. In addition, the documented steps to bring screen rotation back to life don’t work for me. I just get Waiting for iio-sensor-proxy to appear, it never appears.
PS, can’t seem to edit the first post. Affected distributions: Fedora, Ubuntu, Mint, Arch
It will lock the system in laptop mode, as opposed to locking me out of the physical keyboard (by locking itself in tablet mode). I’d rather the former than the latter.
I don’t particularly care about the screen rotation, but I’ll give the module order a try and get back to you.
$ head -10 /etc/mkinitcpio.conf
# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run. Advanced users may wish to specify all system modules
# in this array. For instance:
# MODULES=(usbhid xhci_hcd)
MODULES=(pinctrl_tigerlake)
# BINARIES
# This setting includes any additional binaries a given user may
$ sudo mkinitcpio -P
$ sudo reboot
To describe the behavior I’m observing, here is a recap of the other thread:
That remains 500 regardless of lid angle. (the other device, with the accelerometer, reports changing values. I’ve tried this with watch -n 1 cat /sys/bus/iio/devices/iio:device1/in_accel_x_raw (and the same for the other axes) and it shows values changing in real time.
As to the udev workaround, I get the following in iio-sensor-proxy.service:
I think it’s caused by what Daniel_Schaefer wrote above :
I did add MODULES=(pinctrl_tigerlake) in my mkinitcpio.conf and never had a problem since, but I’m not 100% sure it was what solved it because I did a bunch of change at the same time, please try it and tell us if it did solve it for you.
Potentially we’re looking at a couple of different root causes. Eg the Arch users could have a specific Arch problem, such as the one Daniel points out.
I could have a board with a faulty accelerator. Certainly the Arch specific steps don’t explain why it doesn’t work for me under Fedora
I tried Fedora 42 live media (Fedora-KDE-Desktop-Live-42-1.1.x86_64.iso obtained earlier today), and I still get a constant value of 500 in the /sys/bus/…/in_angl_raw.
The behavior I observe in Fedora 42 is identical to that of Arch: opening the lid 360 degrees disables keyboard and trackpad, restoring to laptop mode has no effect. In tablet mode, there is no screen rotation.
As I mentioned, in Arch I added MODULES=(pinctrl_tigerlake) to my mkinitcpio and regenerated my initramfs and it had no effect.
As @TheWishy mentions at the top of the thread, it seems very likely that: