After upgrading to Xcode 16 from the latest Xcode 15 I am having trouble building to my Apple TV on tvOS 17.7 (I have an older model that connects via USB-C which eliminates network connectivity issues.) But I get stuck with the following when I go to the “Devices and Simulators” window:
Previous preparation error: Failed to find a DDI that can be used to
enable DDI services on the device. Usually this means the best DDI we
could find for a platform did not have compatible CoreDevice content.
Run ‘devicectl list preferredDDI’ from the command line to get more
details on why no valid DDI can be found.
When I run xcrun devicectl list preferredDDI
I get:
WARNING: No usable DDI found for the tvOS platform (The DDI's CoreDevice content is too old.). Best (unusable) DDI found is:
• hostDDI: file:///Library/Developer/DeveloperDiskImages/tvOS_DDI.dmg
▿ ddiMetadata:
• buildUpdate: 15F31d
• contentIsCompatible: false
• coreDeviceVersionChecksIncludeDevelopmentRevision: true
• developmentRevision: 0
• enforcingCoreDeviceVersionChecks: true
• platform: tvOS
▿ projectMetadata:
• Citrine-25.1.1
• CoreDevice-355.28
• DTDeveloperDiskImageSupport-14.0.0
• DTOCMock-22600
• GPUToolsDevice_DDI-270.8
• JetsamProperties-1925.120.11
• LiveExecutionResultsLogger-19506
• Mercury-49
• XCTest-22720
• incompatibleContentReason: The DDI's CoreDevice content is too old.
• isUsable: false
• variant: external
I’ve tried:
- Ensuring I am the latest macOS (but sticking to 14.x Sonoma for now)
xcode-select --switch /path/to/new/Xcode
- Installing the latest platform and simulator components via Xcode > Settings > Components
- Upgrading tvOS from 17.7 to 18
- Disabling
defaults write com.apple.dt.Xcode DVTEnableCoreDevice disable
that I recall enabling for Xcode 15 - Deleting
/Library/Developer/DeveloperDiskImages/
in attempt to re-trigger it - Ensuring the latest Xcode Command Line Tools were installed
- Restarting Xcode and also my computer
None of these steps worked! Note that when I upgraded to macOS 14.7 I did get this prompt: “A software update is required to connect” but I received an “Installation failed” with “Can’t install the software because it is not currently available from the Software Update server”. Perhaps because I am using a work-owned laptop with managed software updates.
The Short
What worked for me is running xcrun devicectl manage ddis update
I was able to verify this worked by running xcrun devicectl list preferredDDI
which gave me the following:
The DDI used for the tvOS platform:
• hostDDI: file:///Library/Developer/DeveloperDiskImages/tvOS_DDI.dmg
▿ ddiMetadata:
• buildUpdate: 16A242d
• contentIsCompatible: true
• coreDeviceVersionChecksIncludeDevelopmentRevision: true
• developmentRevision: 0
• enforcingCoreDeviceVersionChecks: true
• platform: tvOS
▿ projectMetadata:
• Citrine-94
• CoreDevice-397.21
• DTDeveloperDiskImageSupport-14.0.0
• DTOCMock-23002
• GPUToolsDevice_DDI-300.21
• JetsamProperties-2205
• LiveExecutionResultsLogger-20002
• Mercury-54
• XCTest-23196
• isUsable: true
• variant: external
(Notice the buildUpdate
references Xcode 16 instead of 15.)
I restarted Xcode to be sure, and it worked after downloading device data
The Long
Xcode 16 expanded upon DDI — I assume “Developer Disk Image” — that would have been first introduced in Xcode 15:
With iOS 17+, we are using a new device stack (CoreDevice) to
communicate with devices. With this new device stack, there is one DDI
per platform (as opposed to per OS release). This same device stack
will be shared across all versions of Xcode on your system, and
installing a newer version of Xcode will update CoreDevice and its
DDIs.Source: https://forums.developer.apple.com/forums/thread/730947
Xcode 16 release notes mention that:
devicectl now provides commands to manage the developer disk images present on your Mac.
So I assume this is a bug with Xcode.
1