Environment
- Device: Microsoft Surface Pro 8
- OS: RakuOS GNOME 44, Fedora-based bootc
- Kernel: 7.3.0-rakuos.2.v4.fc44.x86_64
- Secure Boot: Enabled
- Hardware: Intel Touch Host ControllerPCI ID: 8086:a0d0HID device ID: 045E:0C37
Problem
The touchscreen on the Surface Pro 8 does not work out of the box on RakuOS because the ithc kernel module is not available for the installed kernel.
The driver is available as an external community project: https://github.com/quo/ithc-linux
Workaround
I was able to restore touchscreen functionality by manually building the ithc module for the running kernel, signing it with a custom Machine Owner Key (MOK), and loading it with Secure Boot enabled.
The following configuration is required on my device:
- Build the ithc module for the current kernel.
- Sign the module with an enrolled custom MOK.
- Load the module at boot using /etc/modules-load.d/ithc.conf.
- Enable polling mode with options ithc poll=1 in /etc/modprobe.d/ithc.conf.
- Install and run iptsd to handle touchscreen input.
Polling mode is necessary on my system because the default interrupt handling causes an interrupt-remapping source-ID verification error, preventing the device from initializing correctly.
After applying this workaround:
- The ithc module loads successfully.
- The Intel Touch Host Controller is detected by HID.
- iptsd recognizes the device as an IPTS touchscreen.
- Touchscreen functionality is restored.
Expected behavior
The Surface Pro 8 touchscreen should work out of the box on supported RakuOS kernels, without requiring users to manually compile and sign an external kernel module.
Request
Could RakuOS consider packaging or integrating the ithc driver through the appropriate akmods or kernel-module mechanism?
Ideally, the solution would:
- Build or provide the driver for supported kernels.
- Handle kernel updates without requiring manual recompilation.
- Support Secure Boot through an appropriate module-signing workflow.
- Document any required polling-mode configuration and iptsd dependency.
I understand that the driver is maintained externally, so coordination with the upstream project may be necessary.
Thank you!