iosxcodetvosxcode16

After upgrading to Xcode 16 I am stuck at "Waiting to reconnect to..." when trying to build to a device


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:

  1. Ensuring I am the latest macOS (but sticking to 14.x Sonoma for now)
  2. xcode-select --switch /path/to/new/Xcode
  3. Installing the latest platform and simulator components via Xcode > Settings > Components
  4. Upgrading tvOS from 17.7 to 18
  5. Disabling defaults write com.apple.dt.Xcode DVTEnableCoreDevice disable that I recall enabling for Xcode 15
  6. Deleting /Library/Developer/DeveloperDiskImages/ in attempt to re-trigger it
  7. Ensuring the latest Xcode Command Line Tools were installed
  8. 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.


Solution

  • 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.