Repository navigation
11.3a: Apple TV and Vision Pro paired by the code they show - #104
Merged
Merged
Conversation
An Apple TV or Apple Vision Pro has no cable, so it's paired over the network with the code it shows on its pairing screen. - Devices showing their pairing screen are found on the network (`_remotepairing-manual-pairing._tcp`, name and model from the advert). - Pair-setup takes the code typed in IPAForge as the SRP PIN. A wrong code, too many tries and a closed pairing screen are their own errors. - The pairing is saved like an iPhone's remote pairing, and the device is remembered as paired by code. It's found again by its remote pairing advert (SipHash-2-4 authTag keyed by the device's identity resolving key) and opened through its tunnel, without a classic pairing. tvOS needs no Developer Mode. - The Pair Apple TV or Vision Pro dialog (find, then the code), and their cards on the Devices page with Forget and Pair again. - Install and Preload stay off for an Apple TV or Vision Pro and say that installing to them comes in a later version (11.3b). - Engine: watchPairableDevices, pairByCode, codePairedDevices and forgetCodePaired, over RPC too; device-probe tv-browse and tv-pair. - Text in all six languages; docs and both roadmaps. Not tested with a real Apple TV or Vision Pro.
…s pairing - Pairing by code never falls back to the fixed PIN: a device that asks to be allowed instead of showing a code is refused, since only the code proves it's the device whose screen the user sees. - The device names its own UDID, so a UDID this computer is already paired with another way (by cable, or an iPhone's remote pairing) is refused instead of overwritten. Pairing the same device again still works. - Forget only deletes devices paired by code.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
An Apple TV or Apple Vision Pro has no cable, so it's paired over the network with the code it shows on its pairing screen. Installing to them comes with 11.3b.
Not tested with a real Apple TV or Vision Pro. Everything below runs against fakes. iPhones were checked to still work over USB and Wi-Fi.
Device
_remotepairing-manual-pairing._tcp, with its name and model in the TXT record. The mDNS browser also reads AAAA records and TXT name and model.device.pairing_code_wrong; TLV error 3 or 5 isdevice.pairing_backoff(with the device's retry delay); a connection that goes away isdevice.pairing_screen_closed. Pair-verify's refusals are unchanged._remotepairing._tcpadvert:authTagis 6 bytes of SipHash-2-4 keyed by the device's identity resolving key over its identifier. The byte order is unconfirmed on hardware.open()reaches a device paired by code through its Wi-Fi tunnel, with no classic pair record. tvOS has no Developer Mode; visionOS has it.device-probe tv-browseandtv-pair [--name].Engine and RPC
watchPairableDevices(a live feed, topicpairable),pairByCode(a run with thedevice.pairing_codequestion, asked again after a wrong code),codePairedDevicesandforgetCodePaired.UI
Checks
pnpm verify: lint, typecheck, boundaries, locales, 1398 tests. Also passed twice under full CPU load.docs/device.md,docs/rpc.md,docs/ui.md, the failure catalogue,AGENTS.md, both roadmaps.