Daily Driving an ARM Linux Laptop

By | 10th July 2025

I recently got a Snapdragon X Elite laptop for daily use and one of my main intention to getting it was to run Linux on it. I was jealous of the ARM hardware that Apple users had access to. After being really frustrated with running Windows for work, I decided to see what it was like to run Linux on such an esoteric platform and switch my work to it.

I did some research and it seemed like there was a lot of effort to get Linux running on this platform and lot of things were slowly getting fixed. I ended up buying the Lenovo Yoga Slim 7x laptop. Key highlights are 14.5″ 3K OLED display, 12 core ARM64 CPU, 32 GB RAM, 1.28kg weight, 16 hour battery life.

Installing Ubuntu 24.10 – Concept ISO

The best way to get everything running is Ubuntu’s concept ISO. I installed Ubuntu 24.10 via the concept ISO. I installed a full disk encryption with LUKS setup. I could not get ZFS with full disk encryption working and trying to install the generic 25.04 version didn’t work either.

After installation, I upgraded to Ubuntu 25.04 and re-enabled concept PPA. I also had an issue with extracting the firmware package from Windows installation. This is needed because they haven’t figured out a way to ship the firmware with Linux due to licensing issues.

varun@varun-yoga:~$ sudo qcom-firmware-extract
error: Failed to find windows partition

I ended up changing variables in the /usr/sbin/qcom-firmware-extract script to set part and nobitlocker variables and re-ran the script and it worked.

varun@varun-yoga:~$ sudo bash qcom2 
Mounting Windows partition nvme0n1p3...
Extracting firmware
	adsp_dtbs.elf
	adspr.jsn
	adsps.jsn
	adspua.jsn
	battmgr.jsn
	cdsp_dtbs.elf
	cdspr.jsn
	qcadsp8380.mbn
	qccdsp8380.mbn
	qcdxkmsuc8380.mbn
Building package qcom-x1e-firmware-extracted_20250601_arm64...
Installing qcom-x1e-firmware-extracted_20250601_arm64...
update-initramfs: Generating /boot/initrd.img-6.14.0-35-qcom-x1e
find: ‘/lib/firmware/updates/qcom/x1e80100’: No such file or directory
find: ‘/lib/firmware/qcom/x1p42100’: No such file or directory
find: ‘/lib/firmware/updates/qcom/x1p42100’: No such file or directory
Using DTB: qcom/x1e80100-lenovo-yoga-slim7x.dtb
Installing /lib/firmware/6.14.0-35-qcom-x1e/device-tree/qcom/x1e80100-lenovo-yoga-slim7x.dtb into /boot/dtbs/6.14.0-35-qcom-x1e/qcom/x1e80100-lenovo-yoga-slim7x.dtb
Taking backup of x1e80100-lenovo-yoga-slim7x.dtb.
Installing new x1e80100-lenovo-yoga-slim7x.dtb.
System running in EFI mode, skipping.
Done! Reboot to load the added firmware files. 
umount: /tmp/fwfetch.fvus4vH7/dislocker: not mounted

I also grabbed latest kernel from Jens Glathe’s Google Drive. The concept kernels have more out of tree patches, but mainline kernels will give you more features.

Hardware – What works and what doesn’t

Let’s start with the things that completely work with no issues.

  • Display – Works
  • Keyboard – Works
  • Touchpad – Works
  • Bluetooth – Works
  • WiFi – Works well with some gotchas covered below.
  • Audio – Onboard does not work. Can be enabled at risk to hardware. I’m using USB-C earphones with no issues.
  • Microphone – Does not work. I use the one from my USB-C earphones.
  • Camera – Does not work. I use USB camera for meetings.
  • GPU – 2D acceleration is smooth. 3D acceleration works. Video acceleration is being worked on.
  • USB-C – Works. Needs kernel 6.15 or above to enable 4 lanes of DP alt-mode. Otherwise only 2 lanes are enabled.

WiFi

WiFi is very stable, but make sure to disable WiFi adapter power management in Network Manager.

varun@varun-yoga:~$ sudo cat /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf
[connection]
wifi.powersave = 2
varun@varun-yoga:~$ iw dev wlP4p1s0 get power_save
Power save: off

Also I had to explicitly set BSSID for SSIDs with multiple BSSIDs. Otherwise I had packet loss and random blue screens.
I tested a Speedtest and got 744 Mbps down and 51 Mbps up on a cable internet connection.

Full disk Encryption Screen

When you try to login, the screen for entering your encryption password remains blank and you have to enter your password blind. This can be annoying. I managed to fix the issue by upgrading to 6.16 kernel.

Full graphical splash screen to enter full disk encryption just got fixed in initramfs-tools package and I updated my system to try it out, but it didn’t seem to work. Ubuntu 25.10 will switch to dracut so hopefully that gets fixed then.

Battery life

I am averaging about 6-7 hours on an average charge and average brightness, which is not bad considering how early things are. I get around 13-14W of battery drain with medium workload. I haven’t heard the fan spin up at all. CPU frequency scaling was merged recently so that should give a nice boost.

Suspend appeared to work, but I’m not completely sold. The power LED continues to blink, the resume was pretty fast and the battery drain overnight was suspiciously high, somewhere in the region of around 30%. Hopefully we see improvements on that front.

Software – Proprietary Software is the Issue

I’m happy to use Linux again. For all the complaints that people have about Gnome, I found it to be really nice for my workflow. Extensions make a huge difference and I really like how good it is for workflow management. Wayland for desktop works without a hitch and 2D acceleration is very smooth.

On the free software front, I did not find any issues with lack of software, because you pretty much get the same thing as x86_64 counterparts. However, major pain point was proprietary software not compiled for ARM64/Linux. These was what was missing for me:

  • Chrome – Not supported. Switched to Firefox. See below for more information.
  • Brave – Weird issue with saving, syncing passwords. Not yet opened ticket.
  • Mikrotik Winbox – Not supported. Opened support ticket. Had to enable WebUI on routers for now.
  • Slack – Not supported. Opened support ticket. Using browser version for now.
  • Discord – Not supported. Opened support ticket. Using browser version for now.
  • Ledger Live – Not supported. Did not try compiling. They said they have added to their TODO after opening support ticket.
  • Zoom – Not supported. Yet to open ticket. Using browser version for now.
  • Jumpcloud – Agent supported, but Jumpcloud Password Manager does not work. I had to do some manual work to get certificates working nicely with Firefox under Snap. Opened feature request for support for Jumpcloud Password Manager.

Browser

Chrome does not support ARM64 on Linux. Chromium works, but I wanted working sync with mobile so that was out of the question. I tried Brave next, but had issues with the Password Manager just randomly losing imported passwords. Importing certificates generated by the Jumpcloud Agent necessary for my work didn’t work either. Hence I decided to try Firefox. I got crashes with the default version, but the nightly version seems to be much more stable for me, so sticking to that.

Hardware Virtualization

KVM Hardware virtualization won’t be working anytime soon. This is because Linux boots up with Execution Level 1(EL1) privileges and not EL2 needed to get hardware virtualization working. When you boot Linux with EL2, you lose lot of things like ADSP/CDSP support (meaning no GPU acceleration, sound, no dp alt mode etc.). Windows does this with hardcoaded shim to get to EL2.

EL0/1/2 separation on Snapdragon X Elite CPUs

Box64

Box64 is a project to try to emulate x86_64 apps on ARM64. I compiled Box64 to try to run WinBox binary, because that was what was most important for me, but I still couldn’t get it to work. The process was running, but UI didn’t show up.

Conclusion

I’m really happy with my current setup. Not everything works 100% and lot of things are WIP, but the state of Linux on ARM is in pretty good shape if you can tolerate some minor gotchas. Yes, x86 will probably still give you a much better overall experience, but it’s much less fun 🙂

Leave a Reply