FAQ: Ubuntu 25.04 on Snapdragon X Elite

Hi, Sorry for the delay in replying, was otherwise committed.

Thanks a lot for the update, an d I really hope we get some movement on this, as I only purchased the Pro 11, with a specific setup in mind.

Just a question, do you know of any other Linux VM products, compatible with Virtual Box and Surface Pro 11 (ARM)?

Thanks a lot.

How did you boot up? I’m also from mainland China, using an SFA14-11, X elite X1E78100, and 32GB of RAM. I passed the Thinkpad T14s device tree to the grub cmd in Ubuntu 25.10, but it won’t boot. During boot, I get the error:

ā€œmount: mounting efivarfs on /sys/firmware/efi/efivars failed: operation not supported.ā€

Here’s my grub.cfg code:

set timeout=3

loadfont unicode

set menu_color_normal=white/black
set menu_color_highlight=black/light-gray

set cmdline=
smbios --type 4 --get-string 5 --set proc_version
regexp "Snapdragon.*" "$proc_version"
if [ $? = 0 ]; then
# Work around a Snapdragon X firmware bug. cutmem is not allowed in lockdown mode.
if [ $lockdown != "y" ]; then 
cutmem 0x8800000000 0x8ffffffffff 
fi 
# arm64.nopauth works around 8cx Gen 3 firmware bug 
cmdline="clk_ignore_unused pd_ignore_unused"
fi


menuentry "Try or Install Ubuntu" { 
set gfxpayload=keep 
linux /casper/vmlinuz $cmdline --- quiet splash console=tty0 noefi acpi=off 
devicetree /boot/x1e78100-lenovo-thinkpad-t14s.dtb 
initrd/casper/initrd
}
# menuentry 'Boot from next volume' {
# exit 1
# }
# menuentry 'UEFI Firmware Settings' {
# fwsetup
# }

Can you help me solve my problem?

Same laptop but my fans spin up only when the CPU temps hit 95 degrees. Your best bet for now is write scripts that limit the maximum frequency when running heavy workloads and the temperature gets too hot. The various temperature sensors are in /sys/class/hwmon and you can set the maximum and minimum frequencies per core cluster by writing to /sys/devices/system/cpu/cpufreq/policy"$i"/scaling_max_freq and /sys/devices/system/cpu/cpufreq/policy"$i"/scaling_min_freq where ā€œ$iā€ is 0,4 or 8.

Here’s a script I wrote to do it:

#!/bin/sh

min=ā€œ$1ā€; max=ā€œ$2ā€;
awk -v min=ā€œ$minā€ -v max=ā€œ$maxā€ ’
function set_freq(mini,maxi){
for(i=0;i<12;i+=4){
print ā€œecho " mini " > /sys/devices/system/cpu/cpufreq/policyā€ i ā€œ/scaling_min_freqā€ | ā€œ/bin/shā€; close(ā€œ/bin/shā€)
print ā€œecho " maxi " > /sys/devices/system/cpu/cpufreq/policyā€ i ā€œ/scaling_max_freqā€ | ā€œ/bin/shā€; close(ā€œ/bin/shā€)
}
}
function error_msg(msg){
print msg; exit 0;
}
BEGIN{
min_gt_max=ā€œMinimum frequency greater than maximum frequency!ā€
if(min ~ /^[0-9]* $/ && max ~ /^[0-9] $/){
min < max ? set_freq(min,max) : error_msg(min_gt_max)
}else if(min ~ /^[0-9]
*MHz $/ && max ~ /^[0-9] *MHz *$/){
min=gensub(" *MHz *ā€œ,ā€ā€œ,ā€œgā€,min)*10^3
max=gensub(ā€ *MHz *ā€œ,ā€",ā€œgā€,max)*10^3;
min < max ? set_freq(min,max) : error_msg(min_gt_max)
}else{
error_msg(ā€œInvalid combination of arg formats or minimum and/or maximum frequency args!ā€)
}
}
’

I don’t know if anyone else had the same issue, but for me the scmi-cpufreq module wasn’t loading, leading to a high CPU frequency (even in sleep) and high battery usage. Doing a modprobe scmi-cpufreq did it for me.

1 Like

@alexvinarskis @tobhe i know work has been completed to upstream driver support for Snapdragon and specifically UX3407QA hardware into the main Linux kernal and via your boot image, but it’s a little hard to ascertain the current status. Especially with regard to firmware availability without needing to dual boot, audio support, etc.

I wondered if you could give a quick summary of the experience on this device as of now?

It looks like HDMI support as well as some other bits and pieces are still WIP according to Alex’s GitHub. I’m personally about to pull the trigger on this laptop so long as there is some level of support and stability in the Ubuntu kernal.

1 Like

I’m in the same boat. I purchased my SP11 last year with the goal of moving to Linux within a year. That was unfortunately overly optimistic. And sorry, I haven’t looked into any Linux VM options.

I just came here to say this, I made it force load on boot and the system has been surprisingly happier with temps staying more in check. @rstallmanstoefluff thank you for the script, I’ll implement it in the future if needed but for now it was the tip it seemed I at least needed to find a root cause of a seemingly bigger issue(the driver not loading).

1 Like

I’ve successfully installed Ubuntu 25.10 on my Asus Vivobook S15 and doing fine so far. I had to install the x1e-settings package, so that things like the battery indicator worked as intended. But internal audio still isnt woking and I cant even find the speaker in the device-tree.

Is there any reason why the patch from binarycraft wasn’t fully merged into the kernel?
https://launchpadlibrarian.net/799787965/PATCH-1-1-arm64-dts-qcom-support-sound-on-Asus-Vivobook-S15.txt

Or is there another way to enable the speaker in 25.10?

These are known issues with sound and camera!
Yeah, besides, internal sound, you also, unfortunately, cannot use camera.

And this is very big problem. As I understood, these issues because of licenses for linux firmware. And I don’t understand who must approve to include sound and camera in linux firmware. May be it’s ASUS - as the laptop manufacturer, or maybe it’s a Qualcomm - as the snapdragon manufacturer.

Okey, without internal sound, you can use bluetooth or wired pods, but, without camera… How can I use it, for example, for everyday calls?

So, I’m tired of waiting, and tired of that my S15 is lying idle, so, now I use it with Windows.

Hi all, I’m somewhat green to all this but I have:

HP Omnibook x 14 (fe0000) [X1P-78-100]

Ubuntu 25.10 seemed to install very smoothly, so Kudos to the teams.

However, I’m still missing wifi, backlight and a few other little bits. I removed the windows partition and can’t seem to figure out the qcom-firmware-extract to work from a local folder. I’ve got wifi access via android usb tether - whoop!

My guess is this model isn’t fully covered yet and I might be able to submit the device tree? I have this machine and a Surface Pro 12" 2025 [X1P-42-100] but I’m struggling to work this stuff out - even though i’d like to contribute if I can.

My next step is to reinstall windows, dual boot, and retry the firmware extract.

If anyone can help, I’d appreciate it… I’m not even 100% sure 25.10 is the latest iso for arm64 testing.

UPDTE: 25.10-arm64 (kernel 7.17.0-6-generic) is now dual-booting with windows 11. The extract tool got me the battery icon but I’m still missing:

wifi
function keys
kb backlight
mic
camera
audio

  • And the battery is draining much more quickly than under Windows.
1 Like

I’m also very curious why this patch hasn’t been included yet. The wcd9385 chip looks like a component that might be used for audio across a variety of Snapdragon laptops. If this patch adds support for it, it would essentially be the holy grail (of audio drivers).

@glathe Any chance you can include this patch in your custom kernel?

1 Like

Hi, the Omnibook X 14 needs an extra board file for Wifi, its ath11k. Audio should be doable with the wiki I wrote, worked nicely here. Function keys, kb backlight are EC controlled, never solved that. Camera should be doable (ov2c10), but I never came around to it, now I don’t have the device anymore.

1 Like

Oh interesting. I planned on upstreaming the x1p42100 support for the S15, will check on the newest upstream when doing so. Just checked my dts: Yes it has the codec.

thanks for this, glathe. My board is x1e-78-100 but I now have audio and wifi, thanks! The Audio is overdriven at a pre-pipewire stage but I managed that in alsamixer. Thanks a lot for the help!

Next… Surface 12" (2025) x1p-42-100 :slight_smile:

Is 25.10 from the main site the most upto date for snapdragon or is there a newer build?
Thanks again

1 Like

Not that I know of. The image here https://drive.google.com/drive/folders/1sc_CpqOMTJNljfvRyLG-xdwB0yduje_O plucky-desktop-arm64+x1e-20250827_extended_jg6_4.iso does support boot and install on SP12", too. Post-install its useful to directly install at least 6.17.0-jg-1 https://drive.google.com/drive/folders/1Lps5o3FXroAJFDiKj18vutJbC1uld49s, this should give you bootability on sp12" without further tweaks of grub.cfg. Afterwards, do-release-upgrade should be no issue.

1 Like

thank you so much!

Biggest problem rn is odd battery performance on the omnibook under no load. cpu 1-2%, ram 1.9GB but the case is warm and battery is drainin a little quickly. …and ofc lots of programs still aren’t supported.

Looking forward to some progress on this project. Thanks everyone for the efforts

1 Like

A bit of feedback on 6.17.0-jg-1 - I tried it on my Vivobook S15 X1P42100 but

-1- it still needs me to add a ā€œdevicetree /x1p42100-asus-vivobook-s15.dtbā€ line to grub.cfg after each initrd line

-2- it no longer boots into EL2 (/dev/kvm) after slbounce.efi even with adding the line ā€œdevicetree /x1p42100-asus-vivobook-s15-el2.dtbā€

In case -1- without the devicetree line and in case -2- I’m getting this error appear in red (and staying on the screen!)

efi-log.c:340efi_assert: systemd-boot: Assertion ā€˜p’ failed at stub.c:270parse_cmdline, halting

If I instead go back and boot with slbounce.efi and 6.17.0-jg-0 specifying ā€œdevicetree /x1p42100-asus-vivobook-s15-el2.dtbā€, I can boot into EL2 /dev/kvm OK.

1 Like

I should also add that I needed to make changes to grub.cfg for the grub to boot into recovery. After installing 6.17.0-6-generic earlier and 6.17.0-jg-1 later, both had linux lines that looked like:

linux /vmlinuz-6.17.0-6-generic root=/dev/mapper/ubuntu–vg-ubuntu–lv ro recovery nomodeset clk_ignore_unused pd_ignore_unused cma=128M efi=noruntime

but that didn’t work, I had to change it, as @glathe advised elsewhere, to

linux /vmlinuz-6.17.0-6-generic root=/dev/mapper/ubuntu–vg-ubuntu–lv ro recovery clk_ignore_unused pd_ignore_unused cma=128M efi=noruntime quiet splash console=tty0 crashkernel=2G-4G:320M,4G-32G:512M,32G-64G:1024M,64G-128G:2048M,128G-:4096M $vt_handoff

Note removal of ā€œnomodesetā€ as well as addition of the quiet splash console and crashkernel parts.

1 Like

Oh yeah, actually found out about that a few days ago, too. There is an array of issues.

First: Stubble is used to find the compatible match and select from the dtbs linked to the kernel. The default option stubble.dtb_override=true actually means to give preference to the one found in the binary to an external one, when there is a match at all. This leads to selecting the linked EL1 dtb being loaded even when slbounce already got loaded (I do this on the T14s). The way out is to add stubble.dtb_override=false to the command line, giving preference to the externally given devicetree statement. But secure boot is not possible then.

Also, on the Windows Dev Kit 2023 with slbounce.efi preloaded before grub, a stubble-enabled kernel will fail somewhere in the EFI loader, with the same message you posted. Regardless if its EL1 or EL2. The way out for now is to use a non-stubble kernel. Or, to first load an efi shell from grub, then load slbounce by hand, and exit back to grub, then select the Linux boot entry. This works.

nup, EL2 not working for 6.17.0-jg-1 on Vivobook S15 X1P42100, I’m afraid

I note that on the stubble github at

there’s an entry in hwids/txt/x1p42100-asus-vivobook-s15.txt
but no corresponding .json file in hwids/json

So am I right in thinking that this (and x1p42100-lenovo-ideapad-5-2in1.txt and x1p42100-microsoft-surface-pro-12in.txt) models missing .json file haven’t made it into stubble world yet?