From cd6f0199fac01b15589db9313ac681f839896ef9 Mon Sep 17 00:00:00 2001 From: Aleksei Nosachev <11856987+nos1609@users.noreply.github.com> Date: Wed, 9 Sep 2026 21:32:13 +0300 Subject: [PATCH] Fix Windows ARM64 platform signature for Spotify Access Point librespot reports Windows ARM/ARM64 as Windows CE ARM in the Access Point handshake. Report these clients as the Win32 x86_64 desktop platform and CPU family instead, while preserving the existing mappings for other operating systems. Add the corresponding entry to the Unreleased changelog. References librespot-org/librespot#1737 and crmne/fastpotify#123. --- CHANGELOG.md | 1 + core/src/connection/handshake.rs | 3 +-- core/src/connection/mod.rs | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f39ea3cd..59c29a03a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [audio] Fixed integer overflow in throughput calculation - [main] Fixed `--volume-ctrl fixed` not disabling volume control - [core] Fix default permissions on credentials file and warn user if file is world readable +- [core] Report Windows ARM/ARM64 as Win32 x86_64 to avoid Access Point authentication rejection - [core] Try all resolved addresses for the dealer connection instead of failing after the first one. - [audio] Try the next CDN URL when a fetch returns a non-206 status instead of only retrying on transport errors, fixing playback failures when the first CDN URL is reachable but does not stream audio. diff --git a/core/src/connection/handshake.rs b/core/src/connection/handshake.rs index 1dea18acb..16ffcf0d0 100644 --- a/core/src/connection/handshake.rs +++ b/core/src/connection/handshake.rs @@ -138,8 +138,7 @@ where _ => Platform::PLATFORM_OSX_X86, }, "windows" => match ARCH { - "arm" | "aarch64" => Platform::PLATFORM_WINDOWS_CE_ARM, - "x86_64" => Platform::PLATFORM_WIN32_X86_64, + "arm" | "aarch64" | "x86_64" => Platform::PLATFORM_WIN32_X86_64, _ => Platform::PLATFORM_WIN32_X86, }, _ => Platform::PLATFORM_LINUX_X86, diff --git a/core/src/connection/mod.rs b/core/src/connection/mod.rs index 83017189c..b01a0314b 100644 --- a/core/src/connection/mod.rs +++ b/core/src/connection/mod.rs @@ -104,7 +104,6 @@ pub async fn authenticate( let cpu_family = match std::env::consts::ARCH { "blackfin" => CpuFamily::CPU_BLACKFIN, - "arm" | "aarch64" => CpuFamily::CPU_ARM, "ia64" => CpuFamily::CPU_IA64, "mips" => CpuFamily::CPU_MIPS, "ppc" => CpuFamily::CPU_PPC, @@ -112,6 +111,8 @@ pub async fn authenticate( "sh" => CpuFamily::CPU_SH, "x86" => CpuFamily::CPU_X86, "x86_64" => CpuFamily::CPU_X86_64, + "arm" | "aarch64" if crate::config::OS == "windows" => CpuFamily::CPU_X86_64, + "arm" | "aarch64" => CpuFamily::CPU_ARM, _ => CpuFamily::CPU_UNKNOWN, };