geerlingguy / sbc-reviews

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

Qualcomm Snapdragon X Dev Kit for Windows #51

Open geerlingguy opened 1 month ago

geerlingguy commented 1 month 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

geerlingguy commented 1 month ago

A few notes as I'm unboxing:

MagicAndre1981 commented 1 month ago

there is no official way to download a recovery image or download other editions of Windows 11 built for Arm that work on it.

upgrading to a higher Windows SKU should work via entering a product key in settings app.

geerlingguy commented 1 month ago

Some hardware details:

geerlingguy commented 1 month ago

DSC01269

Blog post with many photos and more detailed notes after zooming way way in: Qualcomm Snapdragon Dev Kit for Windows Teardown (2024).

utp216 commented 1 month ago
  • Box includes a power adapter and USB-C to HDMI adapter (I'm guessing the latter was added when they decided to drop the internal HDMI port).

I wonder if you solder the appropriate HDMI port to the PCB if it would function. Maybe they didn't want to pay for HDMI licensing?

apache405 commented 1 month ago

The ECB is an embedded controller board. ITE is one of the more popular EC chips out there.

jglathe commented 1 month ago

Arrow has just canceled my order for this one - I ordered on the same day :raised_eyebrow:. Thought they would ship none, then, but... whatever. The hardware seems nice enough, though. Do you want to run Linux on the thing? That was my intent. You also can run the Windows Dev Kit 2023 with Linux.

SpieringsAE commented 1 month ago
  • Box includes a power adapter and USB-C to HDMI adapter (I'm guessing the latter was added when they decided to drop the internal HDMI port).

I wonder if you solder the appropriate HDMI port to the PCB if it would function. Maybe they didn't want to pay for HDMI licensing?

doesn't the DP to HDMI converter get around that? as in the licensing cost is already part of the converter chip?

But yeah I wondered the same thing, maybe even make a different daughterboard that just exposes DP directly.

Same with the unpopulated PCIE slot, wonder how far populating that gets, on windows it might be locked out of the ACPI tables, but on Linux you might be able to just add it to the devicetree blob

talynone commented 1 month ago

Richard Campbell with hardware design experience speculated HDMI FCC approval was the issue, more info:

https://www.youtube.com/watch?v=NlEV38cO8Gs

talynone commented 1 month ago

Getting the Windows ARM ISO is doable but requires a bit more effort right now:

https://www.makeuseof.com/download-install-windows-11-arm-iso/

Of course make sure you have a backup or source for all the system specific drivers before wiping the existing installation.

anonymix007 commented 1 month ago

T99H432.10

I believe the actual model is NCM865A. NCM865 is used in some WiFi 7 products and AFAIK the only difference between them is the Bluetooth connection interface (USB vs UART).

SpieringsAE commented 1 month ago

Richard Campbell with hardware design experience speculated HDMI FCC approval was the issue, more info:

https://www.youtube.com/watch?v=NlEV38cO8Gs

tbh, why even hdmi at all, DP is right there, on the board, why put extra chips on a board to make the display interface worse (arguably).

theholypumpkin commented 1 month ago

I'm very excited about the Linux benchmarks!!!

I'm waiting for Tuxedo Computers with their Snapdragon X Model to be released maybe at the end of 2024 and Wondering what performance I can expect in comparison to my Late 2013 MacBook Pro.

Now with kernel 6.11 out, the Snapdragon X chips should at work, but looking at the release notes looks like it's still not fully baked. Probably by 6.12.

lukasMega commented 1 month ago

what is the power consumption in common use cases (idle in headless mode, idle with desktop, load, ...) Thank you!

talynone commented 1 month ago

There's not many disk imaging/cloning apps that work on Windows ARM right now, this procedure seemed to have worked for others (read the comments for gotchyas):

https://old.reddit.com/r/Surface/comments/1dniufo/ssd_clonemigrate_on_arm/

talynone commented 1 month ago

Can't seem to find an Windows ARM native build of iperf3, but x86/x64 version should work fully without issue in emulation.

In general the following is a great resource for finding native Windows ARM apps (well maintained/updated):

https://armrepo.ver.lt/

driver1998 commented 1 month ago

There's not many disk imaging/cloning apps that work on Windows ARM right now

WinPE on ARM64 supports x64 emulation, and some disk partitioning/imaging software works fine under emulation. I tried DiskGenius and it works fine. dd for Windows might work as well.

jglathe commented 1 month ago

MiniTool ShadowMaker works on arm for an image. restore... better an x86 box, but works reliably.

geerlingguy commented 1 month ago

Regarding the HDMI port, Richard Campbell speculates that port could be at least a significant reason for the shipping delay, if they weren't able to get it cleared for compliance (maybe also the reason the FCC clearance didn't happen).

geerlingguy commented 1 month ago

Regarding Windows 11 image creation—I have created aarch64 images using UUPdump.net in the past, and that works fine, it's just... not official in any way, shape, or form.

What I would really like to see is Microsoft providing an arm64 ISO like they do for x86 on their Windows 11 Download page.

talynone commented 1 month ago

Little off topic, but a bigger reason some smaller open source projects don't have WIndows ARM64 builds even more than the availability of the Dev Kit is because GitHub (which is owned by Microsoft) Windows ARM64 runners are currently only available for enterprise customers. GitHub has said it should open it up to everyone soon but if Microsoft wants faster adoption they really should light a fire on that.

geerlingguy commented 1 month ago

Notes from my first boot:

geerlingguy commented 1 month ago

Single core gets up to around 30W, multi-core Cinebench 2024 gets up to 100+ W, and the fans ramp up to about 58 dBa measured 1' away. Definitely a loud little machine.

Screenshot 2024-09-27 at 11 10 31 AM

Want to get Linux going so I can do some real testing ;)

SpieringsAE commented 1 month ago

Do you have a link to the geekbench test results? Would love to see results of the independent tests

geerlingguy commented 1 month ago

I'm updating all the final results in the OP at the top of the issue, and just added a link to the Geekbench result there.

talynone commented 1 month ago

Heaven has no native ARM64 tests, so that may not give the best results.

Solar Bay, Wild Life: and Wild Life: Extreme in 3DMark have Windows ARM64 native versions.

geerlingguy commented 1 month ago

@talynone - I understand that — just wanting to get a picture of how well x86 stuff is emulated and runs on this platform ;)

talynone commented 1 month ago

Recommend making sure you have the OpenCL compatibility pack from the Microsoft Store installed .

https://apps.microsoft.com/detail/9nqpsl29bfff?hl=en-US&gl=US

You can also now download/install latest ARM64 Vulkan runtimes and SDKs from:

https://vulkan.lunarg.com/sdk/home#windows

geerlingguy commented 1 month ago

Was able to install the Windows Subsystem for Linux with Ubuntu 24.04.

  1. Run PowerShell as Administrator
  2. Run wsl --install
  3. After it completes, reboot
  4. Run wsl --list --online to show available Distros, select one to install
  5. (I ran wsl.exe --install -d Ubuntu-24.04)
  6. WSL dumps you into the Ubuntu environment once it's done

To quit, type exit. To get back in, type wsl.

jglathe commented 1 month ago

Could you dump the acpi tables of this thing and pr them to https://github.com/aarch64-laptops/build ? That would help building a device tree for it - to boot Linux directly.

jglathe commented 1 month ago

fun find: open terminal, type ubuntu, and it comes up in the same window :raised_eyebrow:

geerlingguy commented 1 month ago

@jglathe yeah; seems like if you only have one distro installed, running wsl is an alias to just launching that distro in the same terminal window.

talynone commented 1 month ago

Yep WSL works great, so does Windows Sandbox (needs to be added on PRO edition via add Windows components), even graphics partitioning with Hyper-V works (I did so just an experiment, not much practical use),

Windows Subsystem for Android doesn't work on Elite computers, because Elite processors only support ARM64 binaries, and Windows Subsystem for Android has 32bit ARM binaries.

Someone did create a hack for it with ARM64 binaries injected into a custom image:

https://www.xda-developers.com/windows-subsystem-for-android-snapdragon-how-to/

Latest version can be found here: https://github.com/snickler/WSA-Patched/releases

geerlingguy commented 1 month ago

Could you dump the acpi tables of this thing

Haven't done that before, what's the best way; is there a tool that runs under Windows and would work on aarch64?

SpieringsAE commented 1 month ago

Could you dump the acpi tables of this thing and pr them to https://github.com/aarch64-laptops/build ? That would help building a device tree for it - to boot Linux directly.

I wonder how close it is to the CRD

jglathe commented 1 month ago

I just used these for the WDK2023 and the HP Omnibook X14. and a little phind

jglathe commented 1 month ago

CRD/QCP could be quite close, as it is for many of these

Mis012 commented 1 month ago

to my understanding it's literally CRD with some components not soldered on (and with secureboot on because F U), I assume upstream Linux has a devicetree for the CRD but idk how complete it is (and of course dtbloader will quite possibly not realize that this is literally just CRD)

it does seem that while it's locked down in the sense that I care about, it might allow overclocking (unlike any other variant), which could be quite fun

geerlingguy commented 1 month ago

Was told by someone from Linaro on Mastodon to use this guide, so will try that now. (Seems to match up to some of the above suggestions, thanks ;)

Using SSDTTime, I dumped the following acpi table data:

acpi.zip

I posted it in a PR to the aarch64-laptops/build repo here: https://github.com/aarch64-laptops/build/pull/110

sanderhollaar commented 1 month ago

I tried to boot kernel 6.12-rc1 on a Thinkpad T14s Gen 6.

The kernel loads and seems to start initrd but almost immediately the screen turns blank and the laptop freezes hard.

The output captured with high-speed video and earlyprintk=vga and ignore_loglevel does not give a hint. It does not seem to detect USB.

jglathe commented 1 month ago

Hmm a little off topic, but: Try using the USB type-c connectors for booting. Upstream dtb for T14s doesn't have working USB type-a yet.

Mis012 commented 1 month ago

earlyprintk=vga is really not going to work here... you want earlycon=efifb

sanderhollaar commented 1 month ago

I thought my experience booting Linux on a Snapdragon X Elite could be of use to Jeff but please do tell me if this is considered too off topic.

I've duplicated the usb-a drive to usb-c but this did not affect the boot. I don't think it boots far enough.

I've exchanged earlyprintk=vga with earlycon=efifb which gives better readable output until it says:

printk: legacy console [tty0] enabled
printk: legacy bootconsole [efifb0] disabled

I'll try keep_bootcon later.

Last lines before the display turns black:

vreg_bob1: Setting 3008000-3960000uV
vreg_l1d_0pr Setting 880000-880000uV
vreg_l1i_1p0 Setting 1800000-1800000uV
vreg_l2i_1p2 Setting 1200000-1200000uV
vreg_l3i_0o8 Setting 880000-880000uV
vreg_l2d_0p9 Setting 912000-912000uV
input: gpio-keys as /devices/platform/gpio-keys/input/input0
vreg_bob2: Setting 2504000-3000000uV

Could contain typo's, output is hard to read.

jglathe commented 1 month ago

Hmm wrong discussion. You could try the multiboot Ubuntu image (with type-c stick) to see if you get further.

talynone commented 1 month ago

@geerlingguy Looks like someone was listening to your wishes

https://x.com/_sumitdh/status/1841124915392430098

geerlingguy commented 1 month ago

WOW! After a few years of everyone wondering, it sounds like it might finally happen. Hope that line doesn't become a meme in a few months though. They need to get that done quick.

fobrs commented 1 month ago

Can't seem to find an Windows ARM native build of iperf3, but x86/x64 version should work fully without issue in emulation.

In general the following is a great resource for finding native Windows ARM apps (well maintained/updated):

https://armrepo.ver.lt/

I've just successfully build iperf 2.2.n for ARM64 with msys2 clangarm64.

If anyone wants to test/use it, get it here:

I tried to build iperf3, but that fails. And considering this discussion, maybe iperf 2 is better for windows.

fobrs commented 1 month ago

Est. Ship: 9 Jan 2025Est. Delivery: 13 Jan 2025 C8380-12C-MP-32G Thundercomm Technology 😭

jglathe commented 1 month ago

Yeah same here. @geerlingguy got the only one they had, I'd wager

geerlingguy commented 1 month ago

@jglathe 😱

Maybe my first tweet about this back in June was true... https://twitter.com/geerlingguy/status/1812980507308601549