Skip to content

Bringing up the SnapDragon Dev Kit for Windows with Linux ‐ *with* working display

Jens Glathe edited this page Jan 26, 2025 · 4 revisions

It finally happened, we have good-enough DP Altmode support to bring up the Snapdragon Dev Kit with a working display. You can connect USB-C capable displays, use the shipped HDMI adapter, or any other one for that matter.

Things you need

  • An USB-A USB stick or SSD, or a micro-sdxc UHS-II (V60 or V90) card. We can boot from USB-A or the sd card slot behind that odd plastic lid. We need SDHC or USB-A to boot. USB-C won't work.
  • The bootable image. Write it to the stick/card with the Disks tool or with Rufus.

Precautions you should take

  • Back up your internal SSD. We need it for UEFI access, so removing it is not an option (yet).
  • Decrypt the local Windows drive. We will disable Secure Boot, and this would trigger BitLocker.

To get it to boot from the stick or card

  • Boot to the UEFI menu. I found that most documented ways don't work, but entering shutdown -s -t 0 /fw in an elevated CMD does.
  • Disable Secure Boot in the UEFI menu.
  • For USB-A, enable "Boot from USB first" in the UEFI menu. For sd-card, this is not required since the card slot is the first boot device.
  • Insert the stick / sd-card and reboot / power on.

The box will boot to grub, and boot up without display. After a while (2 minutes?) it should reboot by itself and boot again to grub and then to console (some messages will be shown, not all of them errors - sound drivers missing) and then switch to GUI with the Ubiquity installer. From there on it is normal RPi-like setup.

What happens on the first boot

This is unfortunately required to fetch the needed firmwares from the Windows installation. The script executed is /usr/local/bin/fetch_x1e001de-devkit_fw.sh. It is started via /usr/lib/systemd/system/copy_firmware.service and should only run once.

Why not USB-C as boot/root device

For DP Altmode to work, we need the ADSP firmware to be loaded and the ADSP remote processor booted up. Unfortunately, when this happens, there is an interruption in the VBUS line for the USB-C buses, (potentially) rendering the root device inoperable and the system stuck. All previously known measures to put the loading of ADSP before mounting rootfs are ineffective on the Dev Kit, the thing is just too fast. 😁 To avoid this issue it is boot from USB-A or sdxc card. Fortunately, the current device tree supports both now to do this.

Post-installation tasks

The actual image of Ubuntu 24.10 was from the preinstalled desktop image for Raspberry Pi, modified to bootstrap with the Dev Kit. It is missing a bit of snap packages that we need for x1e-operation. Unfortunately I can't install them in a chrooted environment, so this needs to wait until after installation. Please do the following in bash:

sudo snap install mesa-2404 --channel beta/kisak
sudo snap refresh

Afterwards, the App Center in the Unity desktop should work, too. If it doesn't please do additionally:

sudo apt-get update
sudo apt-get install --reinstall ubuntu-x1e-settings

This should set the desired state.