Skip to content

fix: iOS 26 UDID fallback — use cached pairing file UDID when C library fails#12

Open
chenbusi123 wants to merge 1 commit into
SideStore:masterfrom
chenbusi123:ios26-fix
Open

fix: iOS 26 UDID fallback — use cached pairing file UDID when C library fails#12
chenbusi123 wants to merge 1 commit into
SideStore:masterfrom
chenbusi123:ios26-fix

Conversation

@chenbusi123

Copy link
Copy Markdown

Problem

On iOS 26 (26.3+), fetch_first_device() consistently fails because the bundled C library (rusty_libimobiledevice, last updated Sept 2023) cannot communicate with iOS 26 lockdownd over the VPN tunnel. This causes SideStore to report:

"could not determine this device UDID. Please replace your pairing using iloader."

This blocks Apple ID sign-in, app refresh, and all sideloading operations.

Related SideStore issues: #1305, #1312, #1316, #1320, #1322, #1324

Root Cause

The rusty_libimobiledevice C bindings (from 2023) implement an outdated lockdown protocol. Upstream libimobiledevice has since added critical changes:

  • SHA256 instead of SHA1 for pairing certificate signatures
  • ProductVersion/DeviceClass queries moved into lockdownd_client_new
  • Only query ProductVersion if talking to actual lockdownd

Fix

This PR adds a pairing-file-based UDID cache as fallback:

  1. muxer.rs: Cache UDID from pairing file after parsing
  2. device.rs: fetch_first_device() tries C library first, falls back to cached UDID

Minimal safe change: only activates when C library fails. Uses existing once_cell dependency.

Related

Companion branch for tracking upstream libimobiledevice changes: https://github.com/chenbusi123/rusty_libimobiledevice/tree/ios26-fix

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.

1 participant