Skip to content

Fix Windows ARM64 platform signature for Spotify Access Point - #5

Merged
crmne merged 1 commit into
crmne:fastpotify-0.8from
nos1609:crmne/windows-arm64-auth
Sep 21, 2026
Merged

crmne merged 1 commit into
crmne:fastpotify-0.8from
nos1609:crmne/windows-arm64-auth

Conversation

@nos1609

@nos1609 nos1609 commented Sep 9, 2026

Copy link
Copy Markdown

Summary

On Windows ARM/ARM64, librespot currently reports PLATFORM_WINDOWS_CE_ARM in ClientHello and CPU_ARM during 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_64 and CPU_X86_64, while preserving the existing mappings for non-Windows ARM and unknown Windows architectures.

Protocol context

BuildInfo.platform is a required field in ClientHello. The Windows platform is selected in client_hello() and sent in the handshake via set_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.

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.
@nos1609
nos1609 force-pushed the crmne/windows-arm64-auth branch from e9a2bcd to 5160267 Compare September 14, 2026 11:42
@nos1609

nos1609 commented Sep 15, 2026

Copy link
Copy Markdown
Author

Upstream librespot has now accepted and merged this fix in librespot-org#1761.

This PR is cleanly rebased on fastpotify-0.8 (commit 34ed484) and ready for merge downstream.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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/aarch64 to PLATFORM_WIN32_X86_64 in ClientHello platform selection.
  • Map Windows arm/aarch64 to CPU_X86_64 in Access Point authentication SystemInfo.
  • 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.

@crmne
crmne merged commit 0662eae into crmne:fastpotify-0.8 Sep 21, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants