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:
xcode-select --switch /path/to/new/Xcode
defaults write com.apple.dt.Xcode DVTEnableCoreDevice disable
that I recall enabling for Xcode 15/Library/Developer/DeveloperDiskImages/
in attempt to re-trigger itNone 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.