geerlingguy / sbc-reviews

Jeff Geerling's SBC review data - Raspberry Pi, Radxa, Orange Pi, etc.
MIT License
598 stars 13 forks source link

Qualcomm Snapdragon X Dev Kit for Windows #51

Open geerlingguy opened 2 months ago

geerlingguy commented 2 months ago

DSC01251

Basic information

Linux/system information

# output of `screenfetch`
PASTE_HERE

# output of `uname -a`
PASTE_HERE

Benchmark results

CPU

Power

Disk

MANUFACTURER_AND_MODEL_OF_DISK_HERE

Benchmark Result
iozone 4K random read TODO MB/s
iozone 4K random write TODO MB/s
iozone 1M random read TODO MB/s
iozone 1M random write TODO MB/s
iozone 1M sequential read TODO MB/s
iozone 1M sequential write TODO MB/s
wget https://raw.githubusercontent.com/geerlingguy/pi-cluster/master/benchmarks/disk-benchmark.sh
chmod +x disk-benchmark.sh
sudo MOUNT_PATH=/ TEST_SIZE=1g ./disk-benchmark.sh

Run benchmark on any attached storage device (e.g. eMMC, microSD, NVMe, SATA) and add results under an additional heading.

Also consider running PiBenchmarks.com script.

Network

iperf3 results:

(Be sure to test all interfaces, noting any that are non-functional.)

GPU

glmark2-es2 / glmark2-es2-wayland results:

1. Install glmark2-es2 with `sudo apt install -y glmark2-es2`
2. Run `glmark2-es2`
3. Replace this block of text with the results.

Note: This benchmark requires an active display on the device. Not all devices may be able to run glmark2-es2, so in that case, make a note and move on!

TODO: See this issue for discussion about a full suite of standardized GPU benchmarks.

Memory

tinymembench results:

Click to expand memory benchmark result ``` # Run the two commands below, then replace this code block with the full result. git clone https://github.com/rojaster/tinymembench.git && cd tinymembench && make ./tinymembench ```

sbc-bench results

Run sbc-bench and paste a link to the results here:

wget https://raw.githubusercontent.com/ThomasKaiser/sbc-bench/master/sbc-bench.sh
sudo /bin/bash ./sbc-bench.sh -r

Phoronix Test Suite

Results from pi-general-benchmark.sh:

Provisional Tests under Windows

SpieringsAE commented 1 month ago

@geerlingguy there does seem to be a preliminary dtb for the devkit in the works by qualcomm:
https://lore.kernel.org/all/20241005182250.788272-1-quic_sibis@quicinc.com/

jglathe commented 1 month ago

For that to be fun you'd need a devkit, tho

fobrs commented 1 month ago

It's shipping for me! Screenshot_20241015_081633_Microsoft 365 (Office)

jglathe commented 1 month ago

Also got an advance shipment notice.

fobrs commented 1 month ago

Got it, it's 2 times faster compiling my app than a dell core i9 (9th gen) precision 7540 laptop. But making more noise too, and the dell is noisy...

jglathe commented 1 month ago

I've seen that x1e is fast, builds ~3 times faster than the Windows Dev Kit 2023, and faster than the equivalent of a Ryzen 9-3900 when cross compiling. Tested on a HP Omnibook X14 with x1e-78-100. Which is not that noisy, but clearly audible when its on full (compile) load.

CampGareth commented 1 month ago

Um, Qualcomm and Arrow just killed this product. No further units, no future support, but also full refunds for all purchasers and you can keep the hardware.

SpieringsAE commented 1 month ago

Um, Qualcomm and Arrow just killed this product. No further units, no future support, but also full refunds for all purchasers and you can keep the hardware.

For real? :( You got a link or something?

fobrs commented 1 month ago

here I have a collectors item!

2company commented 1 month ago

One going spare. Unit arrived today. Now surplus, using a ARM64 laptop instead.

Mis012 commented 1 month ago

I'm sure there are people who would be willing to buy one, but could also gift it to someone to work on Linux support since it seems clear that qcom won't be doing that anymore

geerlingguy commented 1 month ago

Heh, also blogged about it today here: Qualcomm cancels Snapdragon Dev Kit, refunds all orders.

What an odd situation! Still want to get Linux on it.

jglathe commented 1 month ago

Mine just arrived, thankfully. There is a basic dt already, will try to bring it up with Linux in the next days. No dp or HDMI might complicate matters a bit, we'll see.

Mis012 commented 1 month ago

well, the (e)DP connector is there :P

jglathe commented 1 month ago

Hmm I pulled the patchset from Sibi, its now in my repo, too Sibi says it is basically feature complete, so lets see. I have put compiled kernel debs on LinuxKernels. It can be combined with the multiboot preinstalled desktop images , but I guess I need some time and messing around to come up with a ready image. The main issue that I currently see is dp altmode, although Sibi states it's working. Maybe it is with a type-c connected display, will try. Those type-c to HDMI adapters are a maybe.

jglathe commented 1 month ago

We have first light

jglathe@angrybox:~$ uname -a
Linux angrybox 6.12.0-061200rc3-x1e-devkit-generic #20241013143332 SMP PREEMPT Sat Oct 19 06:04:30 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
jglathe@angrybox:~$ sudo lshw -short
H/W path      Device           Class      Description
=====================================================
                               system     Qualcomm Technologies, Inc. X1E001DE Snapdragon Devkit for Windows
/0                             bus        Motherboard
/0/1                           memory     1MiB BIOS
/0/2                           memory     2304KiB L1 cache
/0/3                           memory     1152KiB L1 cache
/0/4                           memory     36MiB L2 cache
/0/6                           memory     32GiB System Memory
/0/6/0                         memory     32GiB TSOP 8448 MHz (0.1 ns)
/0/9                           processor  ARM (446)
/0/5                           processor  cpu-map
/0/7                           processor  cpu
/0/8                           processor  cpu
/0/a                           processor  cpu
/0/b                           processor  cpu
/0/c                           processor  cpu
/0/d                           processor  cpu
/0/e                           processor  cpu
/0/f                           processor  cpu
/0/10                          processor  cpu
/0/11                          processor  cpu
/0/12                          processor  cpu
/0/13                          processor  cpu
/0/14                          processor  domain-idle-states
/0/15                          processor  idle-states
/0/100                         bridge     Qualcomm Technologies, Inc
/0/100/0                       network    WCN785x Wi-Fi 7(802.11be) 320MHz 2x2 [FastConnect 7800]
/0/101                         bridge     Qualcomm Technologies, Inc
/0/101/0      enP5p1s0         network    RTL8125 2.5GbE Controller
/0/0                           bridge     Qualcomm Technologies, Inc
/0/0/0        /dev/nvme0       storage    FORESEE XP2200F512G
/0/0/0/0      hwmon54          disk       NVMe disk
/0/0/0/2      /dev/ng0n1       disk       NVMe disk
/0/0/0/1      /dev/nvme0n1     disk       512GB NVMe disk
/0/0/0/1/1    /dev/nvme0n1p1   volume     1023KiB EFI partition
/0/0/0/1/2    /dev/nvme0n1p2   volume     15EiB Windows FAT volume
/0/0/0/1/3    /dev/nvme0n1p3   volume     1023KiB EFI partition
/0/0/0/1/4    /dev/nvme0n1p4   volume     1023KiB EFI partition
/0/0/0/1/5    /dev/nvme0n1p5   volume     69MiB EFI partition
/0/0/0/1/6    /dev/nvme0n1p6   volume     119MiB EFI partition
/0/0/0/1/7    /dev/nvme0n1p7   volume     119MiB EFI partition
/0/0/0/1/8    /dev/nvme0n1p8   volume     1023KiB EFI partition
/0/0/0/1/9    /dev/nvme0n1p9   volume     1023KiB EFI partition
/0/0/0/1/a    /dev/nvme0n1p10  volume     1023KiB EFI partition
/0/0/0/1/b    /dev/nvme0n1p11  volume     511MiB EFI partition
/0/0/0/1/c    /dev/nvme0n1p12  volume     15MiB reserved partition
/0/0/0/1/d    /dev/nvme0n1p13  volume     259MiB Windows FAT volume
/0/0/0/1/e    /dev/nvme0n1p14  volume     999MiB Windows NTFS volume
/0/0/0/1/f    /dev/nvme0n1p15  volume     474GiB Windows NTFS volume
/1            usb1             bus        xHCI Host Controller
/2            usb2             bus        xHCI Host Controller
/2/1          scsi0            storage    Ugreen Storage Device
/2/1/0.0.0    /dev/sda         disk       256GB N520 SDAPTUW-256
/2/1/0.0.0/1  /dev/sda1        volume     259MiB Windows FAT volume
/2/1/0.0.0/2  /dev/sda2        volume     238GiB EXT4 volume
/3            usb3             bus        xHCI Host Controller
/4            usb4             bus        xHCI Host Controller
/5            usb5             bus        xHCI Host Controller
/6            usb6             bus        xHCI Host Controller
/7            /dev/fb0         display    EFI VGA
/8            input0           input      pmic_pwrkey

Running Ubuntu 24.04. The devicetree is early, no display connector yet.

jjlauer commented 1 month ago

@jglathe Got my dev kit last Friday, sounds like I was one of the last few to get hands on this hardware. Sounds like you aren't getting any display then and the output above is via a serial console?

jglathe commented 1 month ago

ssh. For display the dt needs to be beefed up seriously. One of the reasons there is no public bootable image yet.

jglathe commented 1 month ago

A few words on the bring up of the "angry box" Dev Kit. Because it has such odd display connectors (type-c in dp altmode) it is sort of a PITA to provide an image that just boots to GUI with some kind of setup or an installer. For dp altmode to work on the connectors, you likely need the adsp firmware for remoteproc0 loaded as it controls the role-switch. And some additional modifications on the device tree to get the dp alt mode switching right. Looks like it might take a few weeks to slug this out. What I could do is make an image that boots with a pre-configured ssh to log into and go from there. As of now the external drive should be type-c enclosure. Any takers?

Mis012 commented 1 month ago

pretty sure you can switch to DP mode manually, also the connector isn't any weirder than on the laptops it's just that the laptops also have an internal screen, as I see it one can be happy that they even soldered on the eDP connector, even if it's probably just because they originally intended to use it :P

jglathe commented 1 month ago

This should go without physical intervention. UEFI can do it, Windows can do it. Linux can't (yet). DP Altmode is sort of a PITA on the whole QCOM family as it seems. It should be an image that just boots into linux. I have this for the Windows Dev Kit 2023, very useful. And the SnapDragon Dev Kit is ~3 times faster than that.

nezlooy commented 1 month ago

@jglathe Hey! I would like to take this boot image with preconfigured ssh, as I am also a happy dev kit owner since yesterday

min918 commented 1 month ago

I have a strange problem, once I unplugged the power supply in a powered on scenario, when I plugged it back in again the box would not start anymore, does anyone know how to fix it?

jglathe commented 1 month ago

When pulling the psu barrel connector on mine I noticed that it has a lot of capacitors or something. Didn't want to die out for many seconds. Eventually I used the power button (on the plugged-out, still-running box), and it tried to reboot and died without power. Waited a few more seconds, plugged the power back in and on it went after a second or so.

Civil commented 1 month ago

I would also like to have a boot image with preconfigured ssh

Theoretically, if USB4 works, I have a dock station and I can plug in external GPU to try...

jglathe commented 1 month ago

USB4 doesn't work yet AFAIK.

Mis012 commented 1 month ago

The easiest way to connect a GPU would be m.2 to "classic" pcie slot adapter. There's no reason why the missing slot wouldn't work but one would need to solder that slot on.

Civil commented 1 month ago

There's no reason why the missing slot wouldn't work but one would need to solder that slot on.

I was thinking about that... There is a chance that passive components required for it to work are also missing and if so it would be extremely painful to solder (way beyond my skills)

Mis012 commented 1 month ago

right... there could even be redrivers in the design, that would be extra sad :/

but m.2 to standard slot adapters do exist, and that would be 4 lanes so not too bad.

jglathe commented 1 month ago

AFAIK the PCIE slot is not wired up.

Mis012 commented 1 month ago

I mean... there's no way they put a PCIE slot on the CDP and didn't connect it to the SoC...? The question is what other components are missing apart from the obvious slot (caps to filter out DC, maybe even redrivers)

jglathe commented 1 month ago

You don't have that many devices to try... :shrug:

Mis012 commented 1 month ago

You should be able to see visually if the necessary components are there, obviously without schematics + boardview might be a little painful. But fwiw I'm not sure that slot even has more than 4 lanes anyway, so the m.2 is probably fine as well, even if it's always nice to have more pcie slots.

Civil commented 1 month ago

Depends how it's wired. AFAIR chip have 12 lanes of gen4 and 4 lanes of gen3. So plenty to have x8 port available.

jglathe commented 1 month ago

Good news. Sibi Sankar has pushed a completed patchset for the Dev Kit, including display support. I will try this with the already-prepared v8 image, and if it works, publish it with a small how-to to get into the UEFI and boot from USB.

Civil commented 1 month ago

@jglathe correct link: https://lore.kernel.org/all/20241025123227.3527720-1-quic_sibis@quicinc.com/

But that is actually a great news! I probably will try to build my own kernel once I'm home!

jglathe commented 1 month ago

Nah that was the id for b4 shazam :grin: Anyway. Happy hacking. To get into the UEFI BIOS there are lots of decoys, what works is shutdown -r -t 0 /fw. It boots to UEFI, you can disable secure boot, enable boot from USB. I would recommend to decrypt the local disk before that, though.

Civil commented 1 month ago

For me, holding "home" button on a keyboard works consistently. Thought menu items are actually EFI apps on those partitions on the drive, so when swapping drives you need to preserve first 14 (0-14 I mean) partitions of original drive.

talynone commented 1 month ago

Interesting: https://www.phoronix.com/news/Ubuntu-24.10-Snapdragon-X1E

jglathe commented 1 month ago

Yes I have it running here on the HP Omnibook X14. Install went well without intervention. Prime candidate for adding more devices. They are doing great work, bringing it to the end user.

jglathe commented 1 month ago

... and I may understand but I am also in disbelief about the comments there. Unbelievable, sort of a disservice to the cause. The x1e "AI" laptops are fun even with Windows performance wise, and that's saying something. And Linux support is the usual "last mile" issue: All the required SoC drivers are there, peripheral drivers are there but specific model config is missing, and -ffs- the device trees come from people with NDAs or enthusiasts that do the guesswork / research / reverse engineering. Not to mention boot support on distros (experimental if it exists). What puzzles me is: It takes $billions to do the SoC, $millions to do the drivers, and maybe $million to do the distro support. Why it always falls short on the end-user facing end, after doing the heavy lifting already, is beyond me.

geerlingguy commented 1 month ago

@jglathe - 100% with you on that. My guess is politics—officially completing the last mile would sour their relationship with Microsoft, maybe? They've had that exclusivity deal for Windows on Arm, and maybe it has clauses about not 'supporting' Linux or something. Wouldn't be surprised.

It's in their best interest to adopt Linux though, it certainly would open up a LOT more uses for their hardware.

jjlauer commented 1 month ago

@jglathe I'm excited to give the linux build a try. Since you've had it up and running, have you tried any kvm/virtual machines on the DevKit w/ linux? I upgraded my DevKit to Window Pro and I can run Windows VMs w/ more than 1 virtual processor, but any linux VM in hyper-v won't boot unless I run them with exactly 1 virtual processor.

SpieringsAE commented 1 month ago

@jjlauer the snapdragon machines run in el1 by default, which doesnt work with kvm, fom what ive seen there is a janky way to kinda boot into el2, one of the kvm people is working on that I believe

Mis012 commented 1 month ago

this: https://github.com/TravMurav/slbounce

I've heard someone got it working on x elite

Mis012 commented 1 month ago

btw WoA's hyper-v is the only reason you can have EL2, if windows support was not a concern Qcom would probably just force you to use their hacky solution for VMs that lets them keep control over EL2 like they do on android devices (because keeping control over HW that you sold to someone is apparently fully legal?)

jglathe commented 1 month ago

Someone has it up and running on EL2 already. I will try this, too. But first things first. This should work, though. I have a Windows Dev Kit 2023 up on EL2, and work on slbounce is ongoing. Great work by @travmurav.

jglathe commented 1 month ago

Update on getting display to run: Not yet. A bit frustrating, but there are parts missing, need to drill into the i2c buses to get retimers and repeaters. I'm afraid some of these are required for the dp altmode switchery. What a mess. I will try to get the dedicated ssh-enabled image up before doing that, hopefully this afternoon.

Civil commented 1 month ago

There is one thing I don't understand with the qualcomm devices - all DeviceTree referencevarious firmwares (e.x. qcadsp8380.mbn), however I can't find them in linux-firmware.git for any of the devices...

jglathe commented 1 month ago

The reason is simple - they're not there. You usually need to extract (actually just copy) from the Windows partition. I have put my variants into my repos: fetch script initramfs-hook