Repository navigation
Fix Windows ARM64 platform signature for Spotify Access Point - #5
Conversation
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#1737 and crmne/spotifast#123.
e9a2bcd to
5160267
Compare
|
Upstream librespot has now accepted and merged this fix in librespot-org#1761. This PR is cleanly rebased on |
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
The change is small, targeted, and internally consistent (platform and CPU mappings updated together for Windows ARM/ARM64) with no detected correctness issues in the modified logic.
Review effort: Lite
Findings: None
What changed in this PR
This PR adjusts librespot’s Access Point handshake identity on Windows ARM/ARM64 so it no longer identifies as Windows CE, aligning the reported platform/CPU identifiers with a Win32 desktop client profile to avoid authentication rejection on Spotify’s Access Point.
Changes:
- Map Windows
arm/aarch64toPLATFORM_WIN32_X86_64inClientHelloplatform selection. - Map Windows
arm/aarch64toCPU_X86_64in Access Point authenticationSystemInfo. - Document the fix in the Unreleased changelog.
| File | Description |
|---|---|
| core/src/connection/mod.rs | Adjusts CPU family selection so Windows ARM/ARM64 reports CPU_X86_64 during authentication. |
| core/src/connection/handshake.rs | Adjusts Windows platform selection so ARM/ARM64 reports PLATFORM_WIN32_X86_64 in ClientHello. |
| CHANGELOG.md | Adds an Unreleased “Fixed” entry describing the Windows ARM/ARM64 Access Point auth fix. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Summary
On Windows ARM/ARM64, librespot currently reports
PLATFORM_WINDOWS_CE_ARMinClientHelloandCPU_ARMduring Access Point authentication. The protocol schema defines Windows CE ARM (0x7) and Win32 x86_64 (0x27) as distinct platform identifiers, so a modern Windows on ARM client is effectively identified as Windows CE.This change reports Windows ARM/ARM64 as
PLATFORM_WIN32_X86_64andCPU_X86_64, while preserving the existing mappings for non-Windows ARM and unknown Windows architectures.Protocol context
BuildInfo.platformis a required field inClientHello. The Windows platform is selected inclient_hello()and sent in the handshake viaset_platform(platform).Spotify's public developer documentation does not document these low-level Access Point platform identifiers. Therefore this PR does not rely on an official Spotify deprecation claim for
PLATFORM_WINDOWS_CE_ARM; it fixes the mismatch in librespot's current Windows ARM mapping.Rationale
Windows on ARM should not identify itself as Windows CE. Reporting the desktop Win32 x86_64 platform and CPU identifiers avoids the Access Point authentication rejection observed on Windows ARM/ARM64 while leaving other platform mappings unchanged.
References crmne/spotifast#123 and librespot-org#1737.