Ubuntu Concept ♥️ Snapdragon X Elite

Not working: Camera, speakers, microphone (Bluetooth audio is fine)

fwiw the camera should work with the 7.0.0-31.31 kernel. Last I checked gnome-snapshot and more recent versions of the firefox and chromium snaps worked without issue.

1 Like

im looking the mailing list but there are so many commits its hard to tell, but im wondering getting suspend working is a specific goal of 7.0.0 for qcom xe1?

The problem is that suspend isn’t just one well defined feature. We aren’t just telling the machine to go to sleep and rely on the firmware to turn off all the power consumers. Instead the kernel manages sleep itself and every driver and subsystem needs to implement the logic to handle it accordingly.

How well this works differs from machine to machine but the idle power consumption doesn’t work too well anywhere. On machines where we have an EC driver we can at least turn off all the keyboard backlights, LEDs and fans which should make quite a difference.

On some machines we are getting reports that suspend doesn’t work at all and it is hard to figure out if those are actual machine specific bugs or just the expected higher than normal idle power consumption.

There are constant small improvements happening with improved driver support in Linux but it is hard to predict when that will be “good enough” or close to Windows.

On my Slim 7x suspend still loses 4.4% battery / hour, compared to 0.5% on windows.

On a different topic I made a simple script to disable 4 of the 12 cores while awake. For my usage I don’t think I really need 12 cores. Should hopefully extend battery life 1-2 hours. Resets at next boot, or you could make a systemd script to load it if you want it more permanant. Probably works on all X Elite devices. Use Resources app to check it worked.

Windows is actually more clever about this, it will disable cores on the fly when the laptop is idle, and then re-enable when more active. Not sure how to do that on Linux.

#!/bin/bash
# Script to disable 4 CPU cores to keep 8 active

# Define the range of cores to disable (8 through 11)
CORES_TO_DISABLE=(8 9 10 11)

for i in "${CORES_TO_DISABLE[@]}"; do
   if [ -e "/sys/devices/system/cpu/cpu$i/online" ]; then
      echo 0 > "/sys/devices/system/cpu/cpu$i/online"
   fi
done

echo "$(date) - Disabled 4 cores (8-11). 8 cores remaining active." >> /var/log/cpu-tuning.log

Hi @tobhe is there any update about Samsung book4 edge ? Thanks

On my Asus Vivobook with 7.0.0-31 kernel camera doesn’t work.

7.0.0-31-qcom-x1e #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr  4 19:03:14 UTC 2026 aarch64 GNU/Linux

Updated to 7.0.0-31 kernel, mush more reliable on on a Thinkpad T14s G6 LCD doing the following:
(Previously it would crash or just fail silently

  • Suspend and re-suspend (in USB-C monitor or not (/w PD)
  • Mirror Screen, and extend, toggle between both (sometimes it hangs for a few seconds changing displays 1 and 2 locations
  • Camera works again on FF, Chrome etc.. but still green tint and grainy
  • Sound is working, volume is relatively smooth, but unsure if override has something to do with this
    Generally it feels more reliable, lets see how it does while traveling and jumping between various meetings and calls

Kernel:
Linux eulach-move 7.0.0-31-qcom-x1e #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 4

Logs:

3375.601658] qcom-iris aa00000.video-codec: session error received 0x4000008: unsupported stream
[ 3375.601659] qcom-iris aa00000.video-codec: session error received 0x4000008: unsupported stream
[ 3375.601661] qcom-iris aa00000.video-codec: session error received 0x4000008: unsupported stream
[ 3375.601662] qcom-iris aa00000.video-codec: session error received 0x4000008: unsupported stream
[ 3375.601664] qcom-iris aa00000.video-codec: session error received 0x4000008: unsupported stream
[ 3375.602012] qcom-iris aa00000.video-codec: session error received 0x4000008: unsupported stream

07 01:28:46 org.gnome.Nautilus[20490]: Vulkan: ../src/freedreno/vulkan/tu_descriptor_set.cc:651: VK_ERROR_OUT_OF_POOL_MEMORY
Apr 07 01:28:46 org.gnome.Nautilus[20490]: Vulkan: ../src/freedreno/vulkan/tu_descriptor_set.cc:651: VK_ERROR_OUT_OF_POOL_MEMORY
Apr 07 01:28:46 org.gnome.Nautilus[20490]: Vulkan: ../src/freedreno/vulkan/tu_descriptor_set.cc:651: VK_ERROR_OUT_OF_POOL_MEMORY
Apr 07 01:28:46 org.gnome.Nautilus[20490]: Vulkan: ../src/freedreno/vulkan/tu_descriptor_set.cc:651: VK_ERROR_OUT_OF_POOL_MEMORY
Apr 07 01:28:46 org.gnome.Nautilus[20490]: Vulkan: ../src/freedreno/vulkan/tu_descriptor_set.cc:651: VK_ERROR_OUT_OF_POOL_MEMOR
7 01:09:24 gnome-shell[18814]: Overwriting existing binding of keysym 35 with keysym 35 (keycode e).

07 01:09:02 gnome-shell[18814]: Invalid window geometry for xdg_surface@53. Ignoring for now, but this will result in client termination in the future.

Apr 07 01:09:24 gnome-control-center[48998]: Vulkan: ../src/freedreno/vulkan/tu_descriptor_set.cc:651: VK_ERROR_OUT_OF_POOL_MEMORY
Apr 07 01:09:26 gnome-control-center[48998]: Vulkan: ../src/freedreno/vulkan/tu_descriptor_set.cc:651: VK_ERROR_OUT_OF_POOL_MEMORY

btw: fastfetch reports the CPU incorrectly:

CPU: thinkpad-t14s (12) @ 3.42 GHz
1 Like

Sorry, no update on the Galaxy book yet since we are mostly focused on fixing up bugs for the coming 26.04 release.

I should have been clearer in my previous reply. I meant on the Dell XPS specifically which the previous poster seemed to use.
Devices that should have working camera support with the patch set we included are:

  • Lenovo Thinkpad T14s
  • Lenovo Yoga Slim 7x
  • Dell Inspirion 14
  • Dell XPS 3945

It shouldn’t be too hard to adopt the changes for more devices though and we will probably see patches for that on the mailing list soon.

1 Like

In resolute there is now a linux-generic 7.0.0-12.12 kernel in the official archive. Please give that one a try too since that is what is going to end up in the actual 26.04 release!

I found regression in latest qcom kernel (7.0.0-31-qcom-x1e)

[ 15.625648] UBSAN: array-index-out-of-bounds in /build/linux-qcom-x1e-LnUv2s/linux-qcom-x1e-7.0.0/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c:156:21
[ 15.625654] CPU: 7 UID: 0 PID: 2139 Comm: alsactl Not tainted 7.0.0-31-qcom-x1e #31-Ubuntu PREEMPT(full)
[ 15.625669] q6apm_lpass_dai_shutdown+0x108/0x1e0 [q6apm_lpass_dais]
[ 15.625764] audioreach_put_audio_mixer+0xb8/0x160 [snd_q6apm]

thus headphone jack is broken again

Hi all, I’ve been investigating why my external monitor doesn’t work on my ThinkPad T14s and wanted to share my findings in case it helps others or the developers.

Hardware: Lenovo ThinkPad T14s (Snapdragon X Elite, X1E80100, arm64) OS: Ubuntu 26.04 LTS “Resolute Raccoon” (pre-release, Beta) Kernel: 7.0.0-12-generic Monitor: Lenovo 49" connected via USB-C

Symptom: External monitor not detected at all. card1-DP-1 and card1-DP-2 remain disconnected. USB PD revision shows 0.0 and number_of_alternate_modes is 0.

Root cause found in dmesg:

[1.507] qcom_pmic_glink: Failed to create device link (0x180) with supplier 4-0008 for /pmic-glink/connector@0
[1.509] qcom_pmic_glink: Failed to create device link (0x180) with supplier 7-0008 for /pmic-glink/connector@1
[2.700] qcom_pmic_glink: Failed to create device link with supplier a600000.usb for /pmic-glink/connector@0
[2.728] qcom_pmic_glink: Failed to create device link with supplier a800000.usb for /pmic-glink/connector@1

pmic_glink cannot establish device links with the ps883x USB-C redriver chips (I2C addresses 4-0008 and 7-0008) nor with the USB controllers. This prevents USB PD negotiation and therefore DP Alt Mode is never activated.

There are also many Fixed dependency cycle warnings between typec-mux@8 and phy@fd5000/phy@fda000 at early boot, which may be related.

Partial workaround: Adding qrtr_smd to /etc/modules-load.d/qrtr-smd.conf fixes an earlier ENOMEM error during qcom_smd_qrtr probe, but the pmic_glink device link failures persist.

Happy to provide full dmesg if helpful.

1 Like

Battery charge_* properties return ENODATA in 7.0.0-31-qcom-x1e (regression from 6.17.0-8)

Device: Lenovo ThinkPad T14s Gen 6 (X1E80100)
Kernel: 7.0.0-31-qcom-x1e
Regression from: 6.17.0-8-qcom-x1e (battery percentage worked there)

Symptom: Battery percentage indicator is broken. The qcom-battmgr-bat power supply exposes charge_{empty,full,full_design,now} as sysfs files, but reading any of them returns ENODATA (os error 61). Also, capacity is not exposed at all (no file).

Root cause (after investigation): This is not a firmware or QRTR issue. The firmware is communicating fine — many battery properties work correctly. The split is along unit lines:

  • Works: energy_now (49080000 µWh), energy_full (54810000 µWh), energy_full_design (58000000 µWh), status, temp, cycle_count, voltage_now, power_now, manufacturer, etc.
  • Fails with ENODATA: charge_now, charge_full, charge_full_design, charge_empty.
  • Not present: capacity

The firmware on this device reports battery data exclusively in energy units (µWh), not charge units (µAh). The new x1e80100_bat_psy_desc introduced by the Fenglin Wu patch series (“power: supply: Add several features support in qcom-battmgr driver”) registers POWER_SUPPLY_PROP_CHARGE_* properties that the firmware doesn’t support, returning -ENODATA for every query. The old sc8280xp path used by 6.17 did not register these properties and derived capacity from energy values instead.

The fix should be in qcom_battmgr.c: either don’t register POWER_SUPPLY_PROP_CHARGE_* for devices that only report energy, or derive capacity from energy_now / energy_full as a fallback when charge properties are unavailable.

As a workaround, capacity can be calculated manually: energy_now / energy_full = 49080000 / 54810000 ≈ 89.5% — so the battery data is there, just exposed under the wrong property names for this firmware variant.

Note: I do not have a Windows partition, so qcom-firmware-extract is not an option, but this is irrelevant to the bug — the issue is in the kernel driver, not missing firmware.

battmgr.jsn correctly routes to adsp/charger_pd, and the adsp comes up fine (sound works in 7.0 where it didn’t in 6.17, confirming the adsp glink path is healthy).

PS: Message generated by Claude Code. I proofread it as far as I could, and the symptoms I could verify. But the “root cause” analysis is by Claude, and its explanations are beyond my expertise.

1 Like

I am trying to run Little Snitch (which does work on normal Ubuntu) and get the following

42753.974 ERROR Little Snitch requires a kernel which is built with BTF support,
42753.974 ERROR the directory /sys/kernel/btf must exist.
42753.974 ERROR Most Linux distributions enable BTF. If you must compile your own
42753.974 ERROR kernel, set configuration "CONFIG_DBEUG_INFO_BTF=y"

I’m guessing there must be a reason the x1e kernel doesn’t have btf support?

I know I’m late to the party.

finally got the latest concept of resolute running. So far things run good except a few quirks:

  • Lid Close / suspend will cause the colors to be screwed when it wakes up. Need to switch consoles once to fix
  • Cam is not working. Cheese won’t show a picture, FF doesn’t recognize it.

Kernel 7.0.0-31-qcom-x1e on a Thinkpad T14s gen6 OLED / 64GB

I found all the other stuff in this Thread, but it’s really hard to collect everything you need.

Can someone help?

Can you also check the linux-generic-7.0.0-12.12 kernel from resolute and see if that works better. I don’t think we intentionally changed anything in those parts, it might just be a 7.0 regression.

Hi,

I’m experiencing a Bluetooth A2DP issue with my Marshall Emberton II speaker on a ThinkPad T14s Gen 6 with Snapdragon X Elite, running Ubuntu Concept (kernel 7.0.0-22-qcom-x1e) with KDE P>

**Problem:**

  • Speaker shows “connection failed” in Bluetooth manager, but eventually shows as connected
  • No audio output (A2DP profile fails to establish)
  • Connection drops after a few minutes
  • Error in logs: `avdtp_connect_cb() connect to 50:5E:5C:14:6F:F9: Connection reset by peer (104)`

**What works:**

  • Bluetooth controller is detected and firmware loads correctly (`hmtbtfw20.tlv`, `hmtnv20.b112`)
  • Other Bluetooth devices (mouse, keyboard) work fine
  • The same speaker worked on earlier Ubuntu Concept builds with kernel 6.x and GNOME 45

**What I’ve tried:**

  1. Paired/re-paired multiple times
  2. Tested with Blueman and KDE Bluetooth manager (same result)
  3. Forced SBC codec only in PipeWire config
  4. Disabled hardware volume control
  5. Disabled headset profiles in `/etc/bluetooth/main.conf`
  6. Tested with PulseAudio (same issue, no audio at all)
  7. Firmware is up-to-date on the speaker

**System info:**

  • Kernel: 7.0.0-22-qcom-x1e
  • Desktop: KDE Plasma 6.6.3
  • PipeWire: 1.6.2
  • BlueZ: 5.85
  • Speaker: Marshall Emberton II (MAC: 50:5E:5C:14:6F:F9)

**Hypothesis:**
This appears to be a kernel 7.0 regression or A2DP protocol compatibility issue specific to the Qualcomm X1E-78-100 (X1E78100) Bluetooth controller. The speaker worked on kernel 6.x with >

Any suggestions or known workarounds? Happy to provide more logs if needed.

Looks the same for me: Still Color issues on resume - which is a minor quirk.

Camera isn’t working, when starting cheese i get:

qcom-camss acb7000.isp: Failed to start media pipeline: -32

Ah - and I forget:

tlp is not working as intended. i managed to get data out of it, but i cannot set battery thresolds because the bms is not available as BAT0 or BAT1.. Any Idea?

A new official daily arm64 ISO for 26.04 is available at Ubuntu 26.04 LTS (Resolute Raccoon) Daily Build, this should include all our fixes of the last weeks and be pretty close to what will actually be released in a few weeks.

I also had problems with cheese. What does gnome-snapshot report?

Both cheese and camera work fine with my system.

I’ve got Linux 7.0.0-31-qcom-x1e and Resolute Raccoon (development branch), 26.04.

My computer is a Lenovo IdeaPad Slim 5x 83HL, dual boot with Windows11.

Sound only works via Bluetooth and USB-C, Headphone jack doesn’t work, and HDMI only works though USB-C. Other than these three things, everything seems to work.

Thanks all!!!

1 Like