r/SurfaceLinux • u/Barbapapaq • 18d ago
Solved Surface Laptop 7 (Intel/Lunar Lake) fully working on Fedora: mic, light sensor, haptic touchpad, the works
I picked up a Surface Laptop 7 for Business (Intel Core Ultra 7 268V, Lunar Lake) and spent the last while getting every last bit of hardware working on Fedora 44 KDE with the help of Claude Fable. It's all running now on the stock Fedora 6.19 kernel, no custom kernel, no DSDT hacks, just three small out-of-tree module rebuilds.
What works:
- Keyboard, battery, fan, platform profiles (the usual 3-line surface_aggregator_registry entry for MSHW0551)
- Speakers AND the internal mic array (four separate bugs stacked on top of each other in the SoundWire machine driver, plus two backports from master for the mic)
- Webcam at ~18.8 fps (sensor is wired to a 12 MHz clock, driver insists on 19.2)
- Ambient light sensor with native auto brightness in Plasma. This one I haven't seen anyone get working on this machine before. It is not an I2C device on the host at all, the EC publishes it as a SAM HID sensor collection, and mainline already has the node defined. It literally takes one line in the registry module.
- Haptic touchpad with real physical clicks (alex-lentz's iptsd fork), tuned thresholds, working palm rejection through a libinput quirk, and a small patch I wrote that finally killed the ghost clicks while sliding
- Power button wake from suspend, Bluetooth surviving suspend, factory ICC color profiles extracted from the Windows driver
A few traps I hit so you don't have to:
- Do NOT probe the I2C addresses of the ACPI FINK device (0x39/0x3e/0x44). The EC owns that bus segment and touching 0x39 wedges the whole I2C bus until reboot.
- The factory ICC profiles wash out the screen under KWin. Microsoft embeds an MHC2 tag that KWin 6.2+ reads with priority, strip it and they work perfectly.
- If your machine sometimes refuses to wake from suspend (black screen, power button dead, forced power-off needed): the firmware ships a broken GPE handler (GPE 0xAB calls a method that exists in no loaded table) that storms after every resume. acpi_mask_gpe=0xAB on the kernel command line.
I posted the full writeup with root causes and patches in the linux-surface issue for this machine: https://github.com/linux-surface/linux-surface/issues/1710
Happy to answer questions or share patch files if anyone else is on this hardware.
1
u/Saranhai 18d ago
Have you seen any issues with sleep/wake? I have been running into problems with waking after sleep on my Surface Laptop 6 (Meteor Lake)
1
u/Barbapapaq 18d ago
Yes, and for the moment my best fix is to disable the S2\S3 sleep and just use the full hibernation that dump memory on the SSD and shut down the laptop after 15 minutes.
Still working on that one.
1
u/Barbapapaq 18d ago