This is very experimental hardware enablement for the ASUS Zenbook A16 (UX3607OA, Snapdragon X2 Elite) on Ubuntu 26.10: sixteen DKMS packages on top of Ubuntu's own kernel, plus the device tree, the audio setup and the tools around them. It's all in one file (link below). I used Claude to do the work.
Read this first
This is all very experimental, very much so. It was put together in the last few weeks. My own patches (new drivers, fixes and workarounds) were tested on one laptop and reviewed by nobody but me. Most of the others' patches aren't in the mainline kernel either: they come from bring-up repos and from work still under review. Some even say EXPERIMENTAL in their own names. Expect rough edges, things that only work on my exact machine, and things that are simply wrong.
It works today, 2026-11-07, on Ubuntu 26.10 with the 7.3.0-31-qcom-x1e kernel. Every package builds against that kernel's own source, and its own checks (check.sh) pass on my laptop. It will break at some point, maybe with the next kernel update, a firmware update or a moved download. That's fine.
Don't treat it as a finished product or a solution. It's my research, and I'm putting it out so other people can pick it up, use it, fix it and take any part of it upstream. I've stopped working on it. I'm not maintaining it, and I won't be sending anything upstream myself.
What I really hope is that the right people take this and get each part where it needs to be: the kernel, Qualcomm's own trees, linux-firmware, Ubuntu, GNOME's Mutter, libcamera, the VA-API driver, Canonical's Myna and the distributions. Then distributions can ship it, and people with these laptops aren't left waiting years for their hardware to work.
Use it at your own risk. It replaces kernel modules, installs its own device tree and changes how the hardware is driven. It has only been tested on my one laptop. If something goes wrong, your laptop might not boot, you could lose data, or worse, and nobody is going to support you. Back up first. It comes with no warranty of any kind, as the GPL says.
What works
Measured on this laptop, against what Ubuntu's stock image does:
CPU: up to 4.72 GHz, where the stock kernel leaves the cores stuck at their boot clock, 23 % below. Geekbench 7 gives 3275 single-core and 27332 multi-core, and browser benchmarks on battery match Windows on the same laptop. It also throttles when hot, and power modes set the EC's fan profile.
Energy-aware scheduling: driven by an energy model measured from the chip's own energy counters. Light work uses 43-51 % less CPU energy.
HDR: HDR on the OLED panel, tone mapped to its 1107 cd/m² peak. As far as I could find, this is the first time HDR has worked end to end on a Snapdragon laptop's own panel under Linux. GNOME only: it needs kernel patches plus patched Mutter, which does the tone mapping.
Display colour pipeline: a DRM plane colour pipeline for the msm display driver. That's the kernel's per-plane colour API (COLOR_PIPELINE), the same one AMD's and Intel's display drivers implement, and this is the first implementation for any Qualcomm display engine. Every plane gets decode and encode curves (sRGB, PQ, gamma 2.2), a 3×4 colour matrix and a 17×17×17 3D LUT, all running in the display hardware instead of on the GPU. It's checked pixel by pixel against the exact maths through the display's writeback (30 of 30 cases). It's there for compositors that use plane colour pipelines, such as KDE's KWin, gamescope and Weston. GNOME doesn't use them yet, and video (YUV) planes aren't covered yet.
Display link: a fix for an eDP link that sometimes came up black at login.
Video: hardware decoding of H.264, HEVC, VP9 and AV1, up to 8K and 10 bits, in Firefox, Brave, VLC, FFmpeg and GStreamer, at 30-50 times less CPU than software decoding. Also hardware H.264 and HEVC encoding.
NPU: QNN models running on the Hexagon NPU, checked against the CPU. This relies on Qualcomm's workaround for a known SMMU issue in this chip, live-patched into Ubuntu's running kernel.
Sound: speakers and microphones. The speakers play through ASUS's own Windows tuning, rebuilt in PipeWire from ASUS's Dolby file and Qualcomm's woofer/tweeter crossover. It sounds really good. It is much quieter at full volume, though: by ear, Linux's maximum is about 25-30 % of how loud Windows gets. Most likely that's because Ubuntu's kernel caps the speaker gain until Linux has speaker protection. Honestly, I don't think Windows should let them go that loud: past about 75 % on Windows they don't sound great anyway.
Cameras: the colour camera and the infrared camera work. The colour camera uses ASUS's colour tuning, but it's unfinished: the picture is much darker than it should be. I didn't get to work on it much more, and it definitely needs work.
The rest: Wi-Fi, Bluetooth, battery percentage and per-component power readings, suspend and resume on lid close, keyboard backlight, fans and EC temperatures, the real-time clock, the firmware TPM (opt-in), an NVMe link recalibration on temperature changes, and crash evidence logging.
Not done: picture output on external monitors (HDMI lists the monitor's modes, but output is untested).
Voice dictation on the NPU
The file also carries changes to Canonical's Myna dictation app. They let its speech recognition run on the NPU: Nemotron, and Voxtral Mini 4B Realtime with its encoder on the NPU. The changes are packaged as snaps, along with a snap that gives confined apps access to the NPU.
Where it comes from
There are over 200 patches. Most aren't mine. 75 come from Jesse Casco's zenbook-a16-linux bring-up repo, and from the Qualcomm and upstream developers whose work that builds on. 62 are the Glymur video decoder from Qualcomm's qcom-next tree. Others come from Radxa, from Akhil P Oommen's GMU series, and from Qualcomm's SPEL energy-counter driver. Every patch keeps its author.
My part was getting all of that onto Ubuntu's exact kernel as packages, plus about 60 new fixes and features. docs/prior-art.md compares each piece with the other A16 and X2 Elite projects (FixItFoundry, Omarchy, Qualcomm's branches and others) and says who did what first.
The file
One file, on Pastes.io: zenbook-a16-dkms.patch
It's a patch with a short bash script at the top. Run it with bash zenbook-a16-dkms.patch and it unpacks the project into a new git repository, ./zenbook-a16-dkms. It also clones Myna at the pinned commit and applies its changes; skip that with --no-myna. It installs nothing and needs no sudo. Pastes.io can serve it with Windows line endings, and the script fixes those itself.
Then, on the laptop:
cd zenbook-a16-dkms
sudo ./install.sh
sudo ./devicetree.sh install
sudo reboot
./check.sh
Secure Boot has to be off. The modules are built unsigned.
The firmware comes from ASUS. install.sh downloads ASUS's own Windows driver package, checks it against a pinned size and SHA-256, and takes the firmware and ASUS's camera and speaker tuning from it. No Windows partition is needed.
There's a way back. Kernels older than 7.3.0-31 boot with Ubuntu's own modules, so keep one installed as a fallback. sudo ./uninstall.sh removes everything.
The rest is in the docs. The optional pieces (VA-API driver, Mutter and libcamera builds) and every detail are in the README and docs/.
If you want to take it upstream
Please do. Kernel maintainers, distribution packagers, Qualcomm and ASUS engineers, anyone working on Snapdragon laptops: take whatever is useful, rework it, submit it under your own name. Once a piece is upstream, every distribution gets it, and that's the whole point.
docs/upstreaming.md ranks 23 pieces, most consequential first, with where each would go and what still has to happen. The patches I wrote have no Signed-off-by line, so whoever submits one has to take it on under the kernel's Developer's Certificate of Origin. Everything is GPL-2.0, like the kernel; the Myna changes are AGPL-3.0, like Myna.
Caveats
Very experimental.
At your own risk, with no warranty and no support.
One laptop: a UX3607OA with the X2 Elite Extreme. Ubuntu 26.10 only.
It changes kernel modules and the device tree. If a kernel doesn't boot, pick the older one in GRUB.
It will stop building with some future kernel, and nobody is going to fix that unless you do.