Ubuntu Concept ♥️ Snapdragon X Elite

I’m experiencing a backlight control issue on a Dell Inspiron 14 Plus 7441 (Snapdragon X Elite) running the latest Ubuntu Concept (resolute, kernel 7.0.0-32-qcom-x1e).

The laptop’s internal display works normally at its native 2560×1600@60 Hz, and the panel is correctly detected during boot (AUO B140QAX01.H). DisplayPort initialization also appears successful, with no obvious DRM or firmware errors.

However, brightness cannot be adjusted using GNOME, the keyboard brightness keys, or brightnessctl.

The kernel exposes only one backlight device:

/sys/class/backlight/dp_aux_backlight

but it reports:

max_brightness = 0
brightness = 0
actual_brightness = 0
scale = unknown

Since max_brightness is zero, the backlight interface is unusable, preventing any user-space brightness control.

This looks like a problem with the DisplayPort AUX backlight initialization rather than panel detection or display operation.

I’ve filed a Launchpad bug with full logs and diagnostics:
https://bugs.launchpad.net/ubuntu-concept/+bug/2159387

If anyone with a Snapdragon X Elite laptop can check whether they see the same dp_aux_backlight behavior (especially max_brightness = 0), that would help determine whether this is a platform-specific or more general issue.

1 Like

I found that kernel 7.1-rc4-jg-0-qcom-x1e booting in EL1 uses the lapstop speakers but 7.1.2-jg-0-qcom-x1e only has “dummy output” (i.e. no laptop speakers working). Comparing the dtb files, the latter introduces WooferRight and TweeterRight and changes SpkrLeft to WooferLeft and changes SpkrRight to TweeterLeft.and a clause for “spkr-23-sd-n-active-state”. Could this be what’s breaking the lapstop speakers in kernel 7.1.2-jg-0?

Also neither works when you boot in EL2 - any chance this will work some day?

FYI : a couple of open sour scripts to extract dtbs from kernel files and then do superficial comparison

#!/bin/bash
# extract_dtbs.sh
# script to extract dtb files for your laptop from kernel files
# Author: Phil Diacono
# License: MIT (https://opensource.org/licenses/MIT)
# Copyright (c) 2026 Phil Diacono

set -euo pipefail

# optional first argument name of kernel, should match directory in which you extracted the kernel files
KERNEL=${1:-7.1.2-jg-0-nostubble}
# optional second agument name of laptop, should match the basename of the .dtb file in linux-modules .deb
LAPTOP=${2:-x1p42100-asus-vivobook-s15}

if [[ ! -r ~/Downloads/"$KERNEL" ]] ; then
  echo "$0: Error: can't read directory holding kernel .deb files: ~/Downloads/$KERNEL"
  exit
fi

pushd ~/Downloads/"$KERNEL" || return

# check the linux-modules file is there
DEB="linux-modules-*" 
# shellcheck disable=SC2086 # want globbing
echo $DEB
# shellcheck disable=SC2086 # want globbing
ls -l $DEB

rm -rf /tmp/"$KERNEL"
mkdir -p /tmp/"$KERNEL" 

# extract files in the linux-modules .deb file into temp directory
# shellcheck disable=SC2086 # want globbing
time dpkg-deb -x $DEB /tmp/$KERNEL/ 

# find the EL1 and EL2 dtb files and copy to ~/Downloads
if [[ -z $(find /tmp/"$KERNEL" -name "$LAPTOP.dtb") ]]  ; then
  echo "$0: Error: can't find dtb file $LAPTOP.dtb in /tmp/$KERNEL" 
  exit
fi
  
# shellcheck disable=SC2038 # only alphanumeric chars in LAPTOP name
find /tmp/"$KERNEL" -name "$LAPTOP.dtb" | xargs -I FILE cp -vp FILE ~/Downloads/"${LAPTOP}_$KERNEL.dtb" 

if [[ -z $(find /tmp/"$KERNEL" -name "$LAPTOP"-el2.dtb ) ]]  ; then
  echo "$0: Error: can't find dtb file ${LAPTOP}-el2.dtb in /tmp/$KERNEL" 
  exit
fi
  
# shellcheck disable=SC2038 # only alphanumeric chars in LAPTOP name
find /tmp/"$KERNEL" -name "${LAPTOP}-el2.dtb" | xargs -I FILE cp -vp FILE ~/Downloads/"${LAPTOP}_${KERNEL}-el2.dtb"

popd || return



#!/bin/bash
# compare_dtbs.sh
# script to do superficial comparison of two dtb files
# ignores differences between <angle brackets>
# Author: Phil Diacono
# License: MIT (https://opensource.org/licenses/MIT)
# Copyright (c) 2026 Phil Diacono

set -euo pipefail

# optional first agument name of old kernel, should match second half of the basename of the .dtb file
OLD_KERNEL=${1:-7.1-rc4-jg-0-nostubble}
# optional second argument name of new kernel
NEW_KERNEL=${2:-7.1.2-jg-0-nostubble}
# optional third agument name of laptop, should match first half of the basename of the .dtb file
LAPTOP=${3:-x1p42100-asus-vivobook-s15}

pushd ~/Downloads || return

if [[   ! -r ${LAPTOP}_${OLD_KERNEL}.dtb  ]] ; then
  echo "$0: Error cannot read old file $PWD/${LAPTOP}_${OLD_KERNEL}.dtb"
  exit
elif [[ ! -r  ${LAPTOP}_${NEW_KERNEL}.dtb ]] ; then
  echo "$0: Error cannot read new file $PWD/${LAPTOP}_${NEW_KERNEL}.dtb"
  exit
fi

( echo -e "\n$0: doing superficial comparison of${LAPTOP}_${OLD_KERNEL}.dtb to ${LAPTOP}_${NEW_KERNEL}.dtb\n" 

  colordiff -u -w <(dtc -I dtb -O dts -f "${LAPTOP}_${OLD_KERNEL}.dtb" 2>/dev/null \
                    | grep -v 'phandle =' \
                    | sed 's/= <.*>;/= <>;/') \
                  <(dtc -I dtb -O dts -f "${LAPTOP}_${NEW_KERNEL}.dtb" 2>/dev/null \
                    | grep -v 'phandle =' \
                    | sed 's/= <.*>;/= <>;/') \
) | less -R

popd || return
1 Like

Hmm I looked into the DT, looks like standard dp aux backlight (you see almost nothing of it, except for the edp_bl_en pin). You could try a thing: You could install my 7.1.2-jg-0 kernel, it contains some debug code and will print out some flags regarding dp aux backlight. That may help trace the issue.
There was another odd thing with newer kernels. We were chasing backlight control issues on the Ideapad Slim5x OLED, and (important) part of the solution was to set the vreg_edp_3p3 to always on. I have added this for the Inspiron 7441 on my tree, will be in on 7.1.2-jg-1. Worth a try, if it doesn’t help let me know.

Oh definitely. I am still periodically asking, how many speakers does that model really have? Asus website is a bit elusive on this (if working at all). My assumption is that it is actually 4 speakers (woofer/tweeter, left and right) and should be configured that way. That is what I have in my latest version for the s15 dts.
For it to work with 4 speakers, we also need a topology file that expects 4 speakers and an alsa ucm config that selects the right macros. The topology file I should have (although I should review it), the ucm config is actually there but needs to be wired up for s15 in the detection.
The question is: Are you willing to test this or do you want the old 2 speakers setup back?

New device: ASUS Vivobook 16 (X1607QA / Snapdragon X1-26-100)

Hardware: ASUS Vivobook 16 (X1607QA)
SoC: Snapdragon X (X1-26-100) — base/entry-level chip, not X Elite or X Plus
OS: Ubuntu 26.04 (Resolute Raccoon), kernel 7.0.0-32-qcom-x1e
DTB source: provided by UEFI firmware directly (INSYDE), no EFI vars for DTB/FDT override found

Output of describe_hw.sh:

// SPDX-License-Identifier: BSD-3-Clause
#include <efi.h>
#include <device.h>
static EFI_GUID asustek_computer_inc__asus_vivobook_16_hwids = {
{ 0x2844b892, 0x3b0d, 0x5d8f, { 0x81, 0xb1, 0xe1, 0x03, 0xdb, 0xcc, 0xcf, 0x6a } },
{ 0xd820113f, 0xf403, 0x53a3, { 0x97, 0x22, 0x66, 0xd0, 0xa1, 0x17, 0x02, 0xe6 } },
{ 0x0eeb7183, 0x26b7, 0x5fe8, { 0xbc, 0x05, 0xff, 0x18, 0x12, 0xa5, 0x6c, 0x1b } },
{ 0xc8c355bc, 0x95b1, 0x5a31, { 0xa1, 0x0e, 0x2c, 0x68, 0x50, 0x8f, 0x2d, 0xe4 } },
{ 0x4cbf53e2, 0x5a06, 0x5479, { 0xba, 0xde, 0xef, 0xae, 0x36, 0x01, 0xa1, 0x90 } },
{ 0x1d22c8ff, 0xafb4, 0x5dbc, { 0x93, 0x2b, 0xea, 0xe4, 0xb9, 0xfe, 0x63, 0xeb } },
{ 0x21532707, 0xd3e4, 0x57d9, { 0xa2, 0x15, 0x4a, 0x02, 0xd9, 0x0a, 0xbe, 0x39 } },
{ 0x24652d54, 0x00f4, 0x59ae, { 0x96, 0xfb, 0xf7, 0xad, 0xbf, 0xa4, 0xa9, 0x39 } },
{ 0x39a89780, 0x4738, 0x53c6, { 0x95, 0x29, 0x89, 0xb7, 0xee, 0x2a, 0x5c, 0xc0 } },
{ 0x35c94f02, 0x9d04, 0x5a62, { 0xaf, 0x37, 0x5d, 0x66, 0xbd, 0x1b, 0x39, 0xd2 } },
{ 0xf8d95087, 0x670f, 0x5015, { 0x98, 0x7f, 0x7c, 0xad, 0x2e, 0xcd, 0xe9, 0x12 } },
{ 0x39d0e1b7, 0xec03, 0x5105, { 0xa2, 0xc4, 0xf6, 0x01, 0xc0, 0xb9, 0x1b, 0xb4 } },
{ 0x665276be, 0x80c5, 0x5e5d, { 0x92, 0x9f, 0xfa, 0x85, 0xd1, 0x8e, 0x2d, 0x50 } },
{ 0x53a54f34, 0x7a5a, 0x5001, { 0xa3, 0xdc, 0xf9, 0x26, 0x23, 0xb4, 0x75, 0xd2 } },
{ 0x65605ed1, 0x09e2, 0x57aa, { 0xbd, 0x0f, 0xa2, 0x6c, 0x1d, 0x35, 0x43, 0x3f } },
{ 0xa12b5a30, 0x0d33, 0x58da, { 0x95, 0xa1, 0x2b, 0x0a, 0x06, 0xff, 0x33, 0x9c } },
{ 0x922bffb3, 0xf967, 0x5b7a, { 0x9e, 0xc2, 0x77, 0x05, 0x6b, 0xe2, 0x75, 0x75 } },
{ 0x9d1b57fb, 0x8282, 0x5287, { 0xbd, 0x50, 0x3c, 0x93, 0xd4, 0x39, 0x21, 0xfa } },
{ }
};
static struct device asustek_computer_inc__asus_vivobook_16_dev = {
.name = L"ASUSTeK COMPUTER INC. ASUS Vivobook 16",
.dtb = L"FIXME!",
.hwids = asustek_computer_inc__asus_vivobook_16_hwids,
};
DEVICE_DESC(asustek_computer_inc__asus_vivobook_16_dev);

Question: is it safe to try booting temporarily with the x1p42100-asus-zenbook-a14.dtb
as a stand-in via dtbloader, just to get partial functionality / diagnostics, while
a proper devicetree for this model doesn’t exist yet? Main goal is internal speaker audio.
Happy to test and report back — I have the hardware in hand.

1 Like

No dedicated dtb for the Vivobook 16, but users boot successfully with the Vibobook S15 x1p4 dtb. My extended ISO has a boot entry for this one, and the link for it is a few times in this thread.

Thanks for the write-up! I’m running jglathe kernel 7.1.2-jg-1 which includes the EC device tree patch and it’s working great. Suspend battery drain has gone down to around 2-3% compared to before which was around around 5-6%.

Even though the kernel has the patched dtb, I still don’t get the blinking power led light and the keyboard backlight doesn’t go out right away. I’m wondering if your patch has anything additional the enabled those features?

Another odd thing is on my Slim 7x running 26.04 Ubuntu concept, the default sleep state is deep but I’m still seeing the improved battery drain and the laptop wakes up fine from sleep. Switching to s2idle also shows the improved battery drain, but the power led and keyboard backlight issue is still there.

Here’s the list of patches including the EC patch to the dts of the kernel I’m using:

Edit: this patch really makes Ubuntu usable on the Slim 7x/ snapdragon x1e because the sleep issue was a very big issue for daily use. The only other issue I hope that gets addressed is the missing tpm driver, so we can have tpm based encryption.

1 Like

On my Slim 7x battery loss was 4.5%/hr on 7.0 and now 1.6%/hr on 7.1

But Windows gets 0.8%/hr, so still room for improvement!

1 Like

I have been using ubuntu 25.10 on my HP OmniBook X Laptop 14-fe1xxx (see https://bugs.launchpad.net/ubuntu-concept/+bug/2092951) What is the recommended image to use now when 26.04 is out? I have tried https://people.canonical.com/~platform/images/ubuntu-concept/resolute-desktop-arm64+cix.iso but it does not boot (grub menu appears but screen goes black and the laptop reboots without displaying anything on screen).

1 Like

Update to add: Took a look at a hi-res picture of the S15 interior, 2 speakers. Will revert the change, should be back to “normal” wit 7.1.2-jg-2.

1 Like

The extended ISO has a separate boot entry for this model, should boot and install. Post-install may be some work if the boot loader (stubble) doesn’t detect and boot from it. Working on an update for the wiki (and the ISO, lots of details learned).

Awesome, that one booted, thanks! Will make some backups before making the switch. I will report back on how that went.

P.S. the keyboard did not work in grub so I could not navigate to the omnibook boot entry, but the default one worked.

1 Like

Nice, and interesting. For the keyboard issue you could add an external USB keyboard, this should help.

USB keyboard does not worth either. However, the problem only seems to occur on cold boot, if I reboot it sometimes magically works (and the timeout counter is set to 10 instead of the default 30). I suppose grub is not able to initialize some of the essential subsystems needed for the keyboard on this device?

Regarding hardware support on 26.04, several drivers fails to load that worked on 25.10 image I previously used, both in the live image and after install:

  • wifi does not show up
  • battery info is not correct (says 0 %)

I recall there was some script one could use to copy binary blobs of the windows partition?

Update: I made some minor changes to /usr/sbin/qcom-firmware-extract which fixed battery info and 3d accel mesa driver. Still no wifi though. I tried to include the diff here but I could not figure out how to get it included without messing up the formatting. But its just a new entry for “HP Omnibook X 14-fe1” with device_path=“x1p42100/hp/omnibook-x14”

1 Like

I guess you probably mean this one which is 24.10 and from a different time. This one is dedicated to the hp X14 x1p and very probably also contained the board-2.bin that you need for the ath11k WiFi card that many of these have. You can find the required file in my qca repo, too.

Ah could be.

board-2.bin.zst is installed, but I extracted it to board-2.bin and placed in in the same folder (/lib/firmware/ath11k/WCN6855/hw2.1/). Kernel log now says:

[ 6.605817] ath11k_pci 0004:01:00.0: failed to fetch board data for bus=pci,vendor=17cb,device=1103,subsystem-vendor=105b,subsystem-device=e108,qmi-chip-id=18,qmi-board-id=255 from ath11k/WCN6855/hw2.1/board-2.bin
[ 6.607744] ath11k_pci 0004:01:00.0: failed to fetch board data for bus=pci,qmi-chip-id=18 from ath11k/WCN6855/hw2.1/board-2.bin
[ 6.610222] ath11k_pci 0004:01:00.0: failed to fetch board.bin from WCN6855/hw2.1
[ 6.610228] ath11k_pci 0004:01:00.0: qmi failed to fetch board file: -2
[ 6.610230] ath11k_pci 0004:01:00.0: failed to load board data file: -2

That’s sorta odd. But you didn’t download the file from the repo, did you

Oh shit, you are right! The file https://github.com/jglathe/qca-swiss-army-knife/raw/4be38939a006c76e12436636843135713112de1c/tools/scripts/ath11k/board-2.bin.zst and the one I had in /lib/firmware/ath11k/WCN6855/hw2.1/board-2.bin.zst are different. Using the one from your repo fixes the issue, thank you! :slight_smile:

1 Like

The issue with the default board-2.bin is that it doesn’t contain caldata for your WLAN card. That is what the other file is for :slight_smile:

For anyone else with this laptop, I updated the bugtracker with my current status:
Comment #16 : Bug #2092951 : Bugs : ubuntu-concept