Skip to content

Bootable Image for multiple Snapdragon (SC8280XP) and Snapdragon X Elite (X1E80100) laptops

Jens Glathe edited this page Oct 1, 2024 · 6 revisions

This is an experimental platform, or maybe not.

This boot image downloadable here, V7, folder is to boot and work on Snapdragon SC8280XP and X1E80100 based hardware. It boots quite reliably from USB-A (if the device has it) and USB-C connected drives. Its aim is to get booted to userspace with GUI and a basic setup for the user. From there, further modifications are usually necessary to enable more features. But first you need to get up to userspace.

Specifications

  • Raw Disk image, can be written to a 16GB or larger USB stick, or SSD.
  • Boots when "Boot from USB" is selected as first item in the UEFI BIOS of the device.
  • Based on the Ubuntu 24.04 preinstalled desktop image for the Raspberry Pi 4/5
  • Brings up the Ubiquity installer.
  • Brings up Bluetooth and WLAN with a "fixed" MAC address via bootmac
  • Has GPU basic firmware for A690 (a660) and Adreno X1 (gen70500) in the initramfs
  • Should boot up without additional firmware
  • Uses flash-kernel to maintain kernel updates. Add your own entry to it in /etc/flash-kernel/db for a new device.
  • Contains firmware for ath11k and ath12k, with extended board file for the Windows Dev Kit 2023
  • Kernel from this very repository, currently branch jg/ubuntu-x1e80100 with config devkit_defconfig, also imported into debian.master/annotations to get the same config when using Ubuntu build system
  • Intentionally does not contain firmware files that need to be fetched from Windows. But there are tools for this already installed, and can be used as template.

Supported Hardware

  • Windows Dev Kit 2023 (SC8280XP, SQ3)
  • Lenovo Thinkpad X13s (SC8280XP)
  • Lenovo Yoga Slim 7X (X1E80100)
  • ASUS Vivobook S15 (X1E80100)
  • HP OmniBook X Laptop 14 (X1E80100)
  • Lenovo T14s G6 (X1E80100)

All variants are either tested by me or confirmed to boot by @tsinworks (Vivobook S15), and Jos Dehaes and pundir (Lenovo Yoga 7X).

Inner workings

The image is intended to be modified. It boots with grub-efi-aarch64, and loads an initramfs which contains a modules list (required to boot properly) and firmwares that should be available before rootfs is mounted. In my experience, this is the tricky part that makes it boot with USB(-C), and reliably. The fun part is that the properties of the adsp and cdsp coprocessors can make it even more difficult to boot when the firmware is available. For adsp, it needs to be loaded before rootfs is mounted, especially when booted from USB-C. Booting of the firmware appear to interrupt VBUS of USB-C shortly, which can render the boot device inaccessible.

InitramFS Modules

InitramFS Firmware

Adding more dtbs

... under construction