I can’t say I’m too excited about running it as a python script so I’ve ended up writing my own in Vala to run as a daemon. Fan profiles now work fine, I will prob create some sort of GUI while also keeping Fn+F for cycling
[Microsoft Surface Pro 11 — X1E80100 OLED]
kyjus25’s changes brings X1P variant touchscreen support as well as takes care of the battery duplication bug. Both changes are now live in 7.2.0-jg-0sp11v11.
![]()
![]()
Oh nice, its good to see other laptops slowly getting most of things functional. I’m going to finish up writing zenbook a14 daemon for fan profiles and then move into power profiles. Hopefully I will have chance to throw it on github at some point to somewhat contribute…
Okay, power modes fully working on Zenbook A14 and also change on Fn+F fan modes. If you change it to performance/full it will change the power mode to performance. Same with whisper and balance
Any progress on the Galaxy Book4 Edge?
I’m afraid the people who have one need to push it. But afaik there is progress: GitHub - zensanp/linux-book4-edge: Linux kernel for Samsung Book4 Edge with Snapdragon CPU · GitHub No issue, hoping for an update to the project soons as I am so done with Windows 11 · Issue #7 · zensanp/linux-book4-edge · GitHub
I’ve been trying to daily my T14s 32GB (non-oled) in Linux and I’ve been having some issues. I have noticed twice that after I disconnected a display the whole system rebooted. I don’t have any logs for this.
Another issue that I have is when streaming from my Jellyfin server on Firefox all my Firefox windows freeze. In dmesg I noticed this oops. It looks like hardware decoding is borked. I’ve seen this both on 7.2.0-jg-0 and 7.2.0-13-qcom-x1e. Any clue how I could stop this issue apart from stopping hardware acceleration? I haven’t caught this issue earlier because streaming youtube hasn’t been an issue.
[17733.817021] ------------[ cut here ]------------
[17733.817029] WARNING: drivers/media/common/videobuf2/videobuf2-core.c:1821 at vb2_start_streaming+0x110/0x1c0 [videobuf2_common], CPU#2: MediaPD~oder #4/118717
[17733.817065] Modules linked in: wireguard libcurve25519 ovpn scmi_cpufreq r8153_ecm cdc_ether usbnet r8152 onboard_usb_dev snd_seq_dummy snd_hrtimer snd_seq_midi snd_seq_midi_event snd_rawmidi rfcomm snd_seq snd_seq_device xfrm_user xfrm_algo xt_set ip_set xt_addrtype xt_CHECKSUM xt_MASQUERADE xt_conntrack ipt_REJECT nf_reject_ipv4 xt_tcpudp nft_compat x_tables nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 ipmi_ssif bridge stp llc ipmi_devintf ipmi_msghandler vxlan ip6_udp_tunnel udp_tunnel aes_ce_ccm nf_tables overlay uhid algif_hash algif_skcipher af_alg bnep reset_gpio snd_soc_wsa884x gpio_shared_proxy q6prm_clocks q6apm_lpass_dais q6apm_dai snd_q6dsp_common q6prm binfmt_misc aes_ce_blk ghash_ce gf128mul sm4_ce_gcm sm4_ce_ccm sm4_ce sm4_ce_cipher sm4 qrtr_mhi snd_soc_x1e80100 snd_soc_qcom_sdw snd_soc_qcom_common pm8941_pwrkey hci_uart btqca qcom_spmi_adc5_gen3 qcom_spmi_temp_alarm qcom_vadc_common btrtl industrialio btbcm btintel nls_iso8859_1 snd_ctl_led bluetooth lenovo_thinkpad_t14s
[17733.817289] sparse_keymap qcom_iris v4l2_mem2mem qcom_camss videobuf2_dma_contig videobuf2_dma_sg ath12k_wifi7 ath12k ov02c10 videobuf2_memops v4l2_cci v4l2_fwnode videobuf2_v4l2 videobuf2_common v4l2_async mac80211 snd_q6apm snd_soc_hdmi_codec qcom_tsens cfg80211 videodev fastrpc qcom_edac mhi mc libarc4 qcrypto authenc libdes qcom_rng qcomtee leds_gpio tee mux_gpio joydev input_leds sch_fq_codel efi_pstore dmi_sysfs autofs4 hid_multitouch usbhid snd_soc_wcd938x nvme snd_soc_wcd_classh snd_soc_wcd938x_sdw nvme_core snd_soc_wcd_common hid_generic snd_soc_wcd_mbhc nvme_keyring nvme_auth apr rpmsg_ctrl xhci_plat_hcd qrtr_smd rpmsg_char panel_edp regmap_sdw qcom_pd_mapper i2c_hid_of ps883x phy_nxp_ptn3222 i2c_hid i2c_qcom_geni leds_qcom_lpg phy_qcom_eusb2_repeater qcom_pon led_class_multicolor rtc_pm8xxx qcom_pbs reboot_mode nvmem_qcom_spmi_sdam pinctrl_spmi_gpio pmic_glink_altmode qcom_spmi_pmic ucsi_glink regmap_spmi socinfo typec_ucsi qcom_battmgr aux_hpd_bridge soundwire_qcom msm slimbus soundwire_bus ubwc_config
[17733.817539] snd_soc_sdca ocmem qcom_q6v5_pas drm_gpuvm phy_qcom_qmp_combo qcom_pil_info snd_soc_lpass_rx_macro snd_soc_lpass_wsa_macro snd_soc_lpass_va_macro snd_soc_lpass_tx_macro hid drm_exec aux_bridge qcom_common snd_soc_lpass_macro_common gpu_sched typec qcom_glink_smem drm_dp_aux_bus qcom_glink thunderbolt snd_soc_core drm_display_helper qrtr qcom_q6v5 spmi_pmic_arb snd_compress qcom_sysmon spmi_devres cec ac97_bus mdt_loader dwc3_qcom pinctrl_sm8550_lpass_lpi snd_pcm_dmaengine pinctrl_x1e80100 spmi qcom_stats dwc3 phy_qcom_mipi_csi2 camcc_x1e80100 phy_qcom_edp ulpi i2c_qcom_cci dispcc_x1e80100 rc_core videocc_sm8550 snd_pcm udc_core phy_qcom_qmp_usb pinctrl_lpass_lpi lpasscc_sc8280xp gpucc_x1e80100 snd_timer qcom_smd qcom_aoss phy_snps_eusb2 qcom_rpmh_regulator bam_dma nvmem_qfprom llcc_qcom icc_bwmon qcom_hwspinlock phy_qcom_qmp_pcie qcom_cpucp_mbox tcsrcc_x1e80100 gcc_x1e80100 pmic_glink pdr_interface snd smp2p qcom_pdr_msg arm_smccc_trng qmi_helpers soundcore smem rpmsg_core display_connector fixed
[17733.817772] qnoc_x1e80100 pwm_bl gpio_keys pwrseq_pcie_m2 simple_bridge
[17733.817796] CPU: 2 UID: 1000 PID: 118717 Comm: MediaPD~oder #4 Kdump: loaded Tainted: G W 7.2.0-13-qcom-x1e #13-Ubuntu PREEMPT(lazy)
[17733.817808] Tainted: [W]=WARN
[17733.817813] Hardware name: LENOVO 21N10007GE/21N10007GE, BIOS N42ET98W (2.28 ) 04/27/2026
[17733.817819] pstate: 21400005 (nzCv daif +PAN -UAO -TCO +DIT -SSBS BTYPE=--)
[17733.817828] pc : vb2_start_streaming+0x110/0x1c0 [videobuf2_common]
[17733.817843] lr : vb2_start_streaming+0x74/0x1c0 [videobuf2_common]
[17733.817856] sp : ffff8000939fb980
[17733.817860] x29: ffff8000939fb980 x28: 0000000000000001 x27: ffff8000939fbb08
[17733.817874] x26: ffff000809e4a028 x25: 0000000000000000 x24: 0000000000000000
[17733.817887] x23: ffff0009eb1aa180 x22: ffffdcba315cf7b0 x21: ffff000a64baa508
[17733.817900] x20: ffff000a64baa520 x19: 00000000fffffff0 x18: ffff80008cee5078
[17733.817913] x17: 0000000000000000 x16: 0000000000000000 x15: 0000f2595c4edf34
[17733.817926] x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000
[17733.817937] x11: 0000000000000000 x10: 0000000000005600 x9 : ffffdcba31c0d7c0
[17733.817950] x8 : ffff8000939fbb88 x7 : 0000000000000000 x6 : 0000000000000000
[17733.817962] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000000
[17733.817973] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff000a9918b238
[17733.817985] Call trace:
[17733.817990] vb2_start_streaming+0x110/0x1c0 [videobuf2_common] (P)
[17733.818006] vb2_core_streamon+0xfc/0x1e8 [videobuf2_common]
[17733.818019] vb2_streamon+0x24/0x90 [videobuf2_v4l2]
[17733.818033] v4l2_m2m_ioctl_streamon+0x7c/0xd8 [v4l2_mem2mem]
[17733.818048] v4l_streamon+0x30/0x60 [videodev]
[17733.818097] __video_do_ioctl+0x38c/0x4e0 [videodev]
[17733.818135] video_usercopy+0x244/0x708 [videodev]
[17733.818170] video_ioctl2+0x24/0xb8 [videodev]
[17733.818204] v4l2_ioctl+0x68/0xd0 [videodev]
[17733.818238] __arm64_sys_ioctl+0xc8/0x150
[17733.818251] invoke_syscall.constprop.0+0xb0/0x130
[17733.818265] el0_svc_common.constprop.0+0x114/0x140
[17733.818277] do_el0_svc+0x28/0x58
[17733.818287] el0_svc+0x44/0x208
[17733.818301] el0t_64_sync_handler+0xc0/0x110
[17733.818312] el0t_64_sync+0x1b8/0x1c0
[17733.818320] ---[ end trace 0000000000000000 ]---
[17733.846124] qcom-iris aa00000.video-codec: video hw is power on
I have the Snapdragon X Plus version of the Galaxy Book4 Edge…
My sporadic reboots are gone since 10 days now. Great!
10 days ago, i exchanged my power supply:
OLD: [Power Supply 65W]---->[USB-C Hub needs 90 W]---->[HP Omnibook X14 needs 65 W]
NEW: [Power Supply 100W]---->[USB-C Hub needs 90 W]---->[HP Omnibook X14 needs 65 W]
The old system did run stable for 1.5 years with the old 6.x kernel and also with the parallel-installed Windows. Therefore i have no expected this to be a cause.
[Microsoft Surface Pro 11 — X1E80100 OLED]
The mic and sound work very well, thanks to geocausa’s changes. The release is ready and published; the mic sounds crisp: Release Surface Pro 11 qcom-x1e Kernel Packages 7.2.0-jg-0sp11v12 — FullIO v19c audio · ooaklee/linux-surface-pro-11-oe · GitHub. Please read carefully to get everything working properly.
You’ll also have to install the UCM audio release
cc @luminarx7
Well that’s no reason to despair. When the sku exists for both Hamoa and Purwa, the mainboard (and the peripherals wiring) are usually the same. Creating a Purwa-compatible dt is relatively easy then. Just did that for the IdeaCentre mini x.
[ Microsoft Surface Pro 11 x1e80100 OLED]
HUGE update: we’ve got the front camera working! It’s taken a while, and consolidating efforts from numerous people, including geocausa, karsies-wq, and turbineBMW, to get this PR ready.
I’ve just come off an hour-plus video call on my laptop, and it was flawless!
See below for the links to the published release and the small library needed:
As always, more context on decisions made (and why) can be found in the ADRs in this repo
[Microsoft Surface Pro 11 — X1E80100 OLED]
Another huge update for the bank holiday weekend: core pen support on the Surface Pro 11 now works and is available as a release!
On the X1E/OLED model, we have validated:
- hover, lift, and continuous pen input;
- pressure, with an observed range of
0..3309; - tilt on both axes;
- the barrel button; and
- normal one-, two-, and three-finger touch alongside pen input.
As with previous releases, pen support comes as a pair. The kernel exposes the necessary stylus stream, among other things. The companion sp11-iptsd userspace integration converts that stream into the virtual stylus. I’ve based it on the iptsd 3.1.0 upstream
Published releases:
Click here to see the video, the previous link broke
For non-Debian distributions, the release archive contains the complete pinned source. You can use the upstream build instructions together with the SP11 presets and lifecycle integration to build a native package.
There are still a few things to complete/introduce: separate X1P/LCD hardware testing, eraser-end behaviour, forced recovery, repeated suspend/resume, and boot confirmation of the newly rebuilt merged-source packages. These are tracked in the pen follow-up issue.
More detail on the architecture, decisions, and validation boundary is available in ADR0067, with the broader decision history in the ADR directory.
qcom-iris (Qualcomm VPU) video acceleration working on Dell Latitude 7455 (X1E80100)
Kernel: 7.2.2-jg-0sp11v20-qcom-x1e (jglathe linux_ms_dev_kit / ubuntu-concept PPA). Hardware H.264 decode verified end-to-end.
The one missing piece: firmware
The DT for the 7455 requests qcom/x1e80100/dell/latitude-7455/qcvss8380.mbn, which is not shipped in linux-firmware. Extract it from the Windows DriverStore (qcdx8380.inf driver package), or use an MBN from another vendor as fallback.
They are not interchangeable: Dell’s file is 2,327,144 bytes, Lenovo 21N1/83ED are 2,314,856 / 2,306,664 bytes — use the right one for your device.
Install
sudo mkdir -p /lib/firmware/updates/qcom/x1e80100/dell/latitude-7455
sudo cp qcvss8380.mbn /lib/firmware/updates/qcom/x1e80100/dell/latitude-7455/
sudo update-initramfs -u -k all
sudo reboot
Verify
lsmod | grep qcom_iris
ls -l /dev/video0 /dev/video1 # qcom-iris-decoder / qcom-iris-encoder
# firmware boots on first open of the device:
python3 -c "import os; os.close(os.open('/dev/video0', os.O_RDWR))"
journalctl -k -b | grep -i iris # expect silence, no errors
grep -i iris /proc/interrupts # IRQ 245 fires once the VPU is up
Decode smoke test
ffmpeg -f lavfi -i testsrc2=duration=2:size=640x360:rate=30 -c:v libx264 \
-preset ultrafast -pix_fmt yuv420p -an test.h264
gst-launch-1.0 filesrc location=test.h264 ! h264parse ! v4l2h264dec ! fakesink sync=false
Result: clean pipeline exit; iris IRQ count jumped 9 → 113 during the 2 s decode — the VPU really processed every frame.
Notes
- Playback via
mpv --hwdec=v4l2m2mexpected to work; not tested yet on my machine. - Encoder node exists (
/dev/video1) but the encode path is untested. - GStreamer quirk: this build’s
x264enconly emits AVC (length-prefixed) streams thath264parserejects; ffmpeg’s annex-b output works fine.
ThinkPad T14s Gen 6 / 21N1, 7.2.0-13-qcom-x1e: I’m seeing a persistent SoundWire bus-clash interrupt storm (wcd9380, ~900 IRQ/s, ~4% CPU). Unbinding 6d30000.soundwire stops it, but rebinding then fails with an IRQ type mismatch for hwirq 528.
Full details and logs in comment #112 of the T14s bug:
https://bugs.launchpad.net/ubuntu-concept/+bug/2084178/comments/112
There appears to be a related SoundWire bus-clash report on the Yoga Slim 7x bug #2084191.
Can you cross-test against my kernels to discriminate a bit? 7.2.2-jg-0 and 7.1.12-jg-0 are the newest. I haven’t seen bus clashes here, sound is working well. What I sometimes have is delayed sound notifications after closing the lid for sleep, sometimes the notification sounds (“down, up”) come many seconds after I resumed working on it after logging in. But I guess this is something different, power management related.
Hi glathe
I encountered an audio regression on my ASUS Vivobook S 15 (X1E80100). On kernel 7.2.0-jg, the internal speakers worked perfectly with great volume and clarity.
After updating to 7.2.2-jg-0, the speaker output became very quiet, with audible volume fluctuations / pumping and distortion.
Checking
dmesgrevealed the following warning forwsa_macro:
wsa_macro 6aa0000.codec: Driver needs fixing: Unsorted reg_defaults, sorting the copy
wsa_macro 6b00000.codec: Driver needs fixing: Unsorted reg_defaults, sorting the copy
wsa_macro 6b00000.codec: using zero-initialized flat cache, this may cause unexpected behavior
Downgrading back to 7.2.0-jg (even with a full reinstall of the 7.2.0 packages, purging 7.2.2, resetting UCM / PipeWire / ALSA state, and performing a complete cold power-off with charger disconnected) did not restore normal playback — the volume remains low and distorted. It seems the WSA884x / SoundWire codec registers or calibrations got into an inconsistent state during/after the 7.2.2 initialization.
Let me know if you need any additional logs, reg dumps, or testing from my side.
Best regards,
svized
So I tried to upgrade my T14s to 7.2.2-jg-1-qcom-x1e, and the good news is that the headphones now appear in pavucontrol—as a separate device (they used to be an unstable second output for an existing device in 6.x then disappeared in 7.0). The bad news is: the headphone device does not work—sending sound data to it hangs indefinitely. Also, the soundwire IRQ now eats about about 7% CPU instead of about 4% in 7.2.0-13 :-/ — with dmesg getting filled with bus clash messages every millisecond or so and MAX_RETRY on alert read every 13 millisecond.
After I echo 6d30000.soundwire > /sys/bus/platform/drivers/qcom-soundwire/unbind CPU usage from IRQ climbs to about 50% for a few seconds and drops to 0 when the unbind succeeds (with two backtraces from clk.c in dmesg; cannot be bound back).
Of course, after you unbind the device, then you can’t playback on the speaker anymore. I can try to modprobe -r snd_soc_wcd938x ; modprobe snd_soc_wcd938x but then it fails with irq: type mismatch, failed to map hwirq-528 for interrupt-controller@17000000
Looks like there is a conflict between the DTB and the driver as to which mode the IRQ is or should be configured in. I’m incompetent to say which is wrong and should be fixed.
Hi, requesting guidance for my laptop:
-
Model: Acer Swift Go 14 (SFG14-01)
-
Chip: Snapdragon X Plus, X1P42100
-
RAM: 16GB
Tried booting the generic Ubuntu 26.04 ARM64 desktop ISO via Rufus (GPT/UEFI mode, Secure Boot off) and it crashes right after “Try Ubuntu” with:
mount: mounting efivarfs on /sys/firmware/efi/efivars failed: Operation not supported
then reboots into Windows.
Is there a current X1E Concept image that supports the X1P42100 specifically? I saw a Google Drive link for an “Acer Swift Go 14” image from April 2025 in this thread — is that still the recommended one for this chip, or has it been superseded?
Hi, I have often posted the link here, there is an extended boot image I update sporadically. That has a boot entry for Acer Swift Go 14, yes. And yes there is a dedicated image from the older era, too. Try the extended resolute ISO, should boot.


