Ubuntu 24.10 Concept ♥️ Snapdragon X Elite

Thanks Jens! I was able to get it to boot and install. Now I am just working to get the drivers to work. No WiFi, no BT, no touchscreen… but at least it is loaded now.

No, I never use it with an external display. And at least once it crashed without anything external connected (not even a pd charger).

Regarding BT it looks like the device tree is missing BT completely, I’m guessing @tobhe still needs to merge it, so hopefully it will work soon.

2 Likes

Naming things… seems hard.
There are currently 2 SoCs in the X1 family. One is codenamed “Hamoa”, and has 12 CPU cores. You get binnings for this one as x1e-78-100, x1e-80-100, x1e-84-100. These are all 12 cores. Lower binnings are x1p-6* and have 10 cores active. All these are compatible with qcom,x1e80100 for the device tree.
The other one is codenamed “Purwa” and has 8 CPU cores and a smaller GPU. The designations are x1p-42-100 for the most common, also x1p-46-100 (higher boost). And, apparently the lower binnings are x1-27-100 (8 cores no boost). For Purwa there is a separate x1p42100.dtsi which disables the nodes not there from x1e80100.dtsi, and defines a different pcie3 node.
Since both SoCs are pinout compatible, you can find them in the same designs.

Yeah I’ve seen that the peripherals are not defined and appear to be quite different from the other designs. Looks like one needs to have some EC driver to get these.

1 Like

I’m looking into the bluetooth issues, will hopefully be fixed with the new kernel. I can reproduce it locally.

2 Likes

Thank you so much for your explanation. Having said this, do you know why certain devices (e.g. my Surface Pro 11 X Plus) have no dtb? I’m looking forward to use it in dual boot. Thanks again :slight_smile:

I could downgrade my linux kernel with the following commands:

  cd /var/cache/apt/archives/
  sudo apt-get install ./linux-image-qcom-x1e_6.12.0-30.30_arm64.deb
  cd /boot/grub/
  sudo grub-mkconfig -o grub.cfg
  sudo reboot
  uname -r

This linux is possibly not a clean installation - but at least it seems to work as before the upgrade.

1 Like

I tried booting the Surface Pro 11 imposing the Surface Laptop 7 dtb. What changes should I make in grub file in order to see what’s blocking boot process? I want to help the development.

I have installed the latest ISO on the Surface Laptop 7 X Plus. The keyboard, USB, and GPU are working fine. However, the touchpad, speakers, camera, Wi-Fi, and Bluetooth are not working. I read somewhere that there is a way to make Wi-Fi and Bluetooth work on the Surface Pro 11 (which I think is similar to the Surface Laptop 7), but I tried it, and it didn’t work.

3 Likes

Image for Vivobook S15 x1p42 is available now.

6.14 does not seem to be any better wrt crashing.

Already a second time that I come back to the laptop stuck at the dmcrypt promt after leaving it on for a few hours.

Is there any way to see what was the problem that lead to a crash?

Also seeing some weird behaviour now in 6.14. WiFi was difficult to switch between SSID networks (crashing to full dark blue screen) - it got stuck on an SSID network that didn’t have internet access (until I unplugged the AP). The same thing happened when I turned off WiFi. Subsequent reboot (to force it to connect to another SSID which had internet access), it started asking for the SSID password, which was stored correctly when I checked manually (and after trying to enter it again). After a final reboot it started working fine…

Is that a 64GB RAM machine by any chance?

As for others, Bluetooth is not detected on 6.14 on t14s.

How about speakers? I browsed the kernel repo to find out the parameter is i_accept_the_danger. I tried loading the module with that parameter as well as putting it on the kernel command line with snd_soc_x1e80100.i_accept_the_danger but no dice, still only dummy output available in sound settings.

I DO want to accept the danger :slight_smile:

1 Like

As for others, Bluetooth is not detected on 6.14 on t14s.

Issue is identified and fixed in my tree but launchpad is having some issues right now with arm64 builders so it might take a bit until the new package is available.

How about speakers? I browsed the kernel repo to find out the parameter is i_accept_the_danger. I tried loading the module with that parameter as well as putting it on the kernel command line with snd_soc_x1e80100.i_accept_the_danger but no dice, still only dummy output available in sound settings.

The flag is correct, but we don’t ship an alsa-ucm-conf and audioreach topology firmware at the moment which are also required to make it work.

I’m also seeing crashes related to WiFi (a kernel NULL pointer dereference), in my case when an access point I’m connected to is turned off.

ath12k_mac_handle_beacon_miss_iter+0x3c/0xe8 [ath12k]
__iterate_interfaces+0xd4/0x180 [mac80211]
ieee80211_iterate_active_interfaces_atomic+0x48/0x88 [mac80211]
ath12k_mac_handle_beacon_miss+0x38/0x70 [ath12k]
ath12k_wmi_op_rx+0xcc4/0x1150 [ath12k]
ath12k_htc_rx_completion_handler+0x370/0x588 [ath12k]
ath12k_ce_recv_process_cb+0x1f0/0x2d8 [ath12k]
ath12k_pci_ce_workqueue+0x30/0xa0 [ath12k]

So this is where it crashes:

static void ath12k_mac_handle_beacon_miss_iter(void *data, u8 *mac,
					       struct ieee80211_vif *vif)
{
	u32 *vdev_id = data;
	struct ath12k_vif *ahvif = ath12k_vif_to_ahvif(vif);
	struct ath12k_link_vif *arvif = &ahvif->deflink;
	struct ath12k *ar = arvif->ar; // ar is NULL
	struct ieee80211_hw *hw = ath12k_ar_to_hw(ar);
	/* ... */
}

static inline struct ieee80211_hw *ath12k_ar_to_hw(struct ath12k *ar)
{
        return ar->ah->hw; // crashes on dereferencing ar
}

The last commit to change the function was this one, so I suspect the bug is from an MLO-related commit.

commit 3dd2c68f206ef7020d12b9f85cbfe05ca8662cf4
Date:   Tue Oct 15 20:14:06 2024 +0300

    wifi: ath12k: prepare vif data structure for MLO handling

I wonder if it could be worked around like this:

	struct ath12k *ar = arvif->ar;
	if (!ar)
		return;
	struct ieee80211_hw *hw = ath12k_ar_to_hw(ar);

Perhaps the real bug is that !arvif->is_up is checked for too late.

1 Like

no, it is a 32GB yoga7x.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: LENOVO
Version: NHCN55WW
Release Date: 09/20/2024
ROM Size: 16 MB
BIOS Revision: 1.55
Firmware Revision: 1.62

Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: LENOVO
Product Name: 83ED
Version: Yoga Slim 7 14Q8X9
SKU Number: LENOVO_MT_83ED_BU_idea_FM_Yoga Slim 7 14Q8X9

I have the same problem on Lenovo Yoga 7x, when you turn wifi off the screen goes black.

Bluetooth works on Yoga 7x, but the latest update for my Lenovo x13s, running Ubuntu 24.04 broke bluetooth.

Edit: But a new update fixed bluetooth for x13s, hopefully it works for t14s too :slight_smile:

Is there any progress on adopting the changes from that linux-surface-pro-11 repo?

Hopefully it’s not forgotten, and hopefully it’ll be announced when it’s ready.

Separately, will the mobile broadband (5G) work? I mostly got it just to play around with, rather than out of true need, but it would be nice for it to work. Also, would eSIM profiles from Windows work in Linux?

2 Likes

Repo owner here. Probably not from me, I gave up trying to find any information on how to build the ARM Ubuntu ISO, so I’ll just focus on distros I’m more familiar with until the kernel is working well enough.

There are a few SP11 owners interested in Linux but as far as I can tell I am the only one actively trying to get everything working. I need help from experienced kernel developers to get audio, touchscreen and other stuff supported properly.

I don’t own the 5G model, so I’m afraid I can’t help with that.

1 Like