I did some investigation using chatGPT to look into this, and I think I can see how you get your list of devices. The odd thing is, somehow Xcode is still letting me deploy an app to the device as it sees it as a destination but it doesn’t show up in any of the ways below, so I wouldn’t spend any time on it, this is just for info. We are going to tell our users that iOS 12.5 is getting the last update of our software and we won’t support it from next year. I think 9 years is pretty good to be fair.
I think that:
- Xcode has an internal compatibility path for legacy devices.
- That compatibility path is not exposed through
devicectl,xcdevice, orxctrace. - Fire therefore cannot currently discover those devices unless they use the same internal APIs (if Apple exposes them at all).
Below is a summary report I asked chatGPT to create to summarise what we found.
Fire cannot debug iOS 12.5 device with Xcode 26.5
Environment
- macOS Tahoe
- Xcode 26.5
- Latest Fire IDE (please substitute exact build number)
- Physical device: iPad mini 2 running iOS 12.5.x
Summary
Fire does not list the iOS 12 device as an available deployment/debug target.
However:
- Xcode recognises the device.
- Xcode reports it as ready for development.
- Xcode can successfully build, install and debug applications on the device.
This appears to indicate that the device is correctly paired and provisioned.
Investigation performed
1. Xcode
The device appears in Xcode’s Devices window.
Xcode can:
- recognise the device
- install applications
- launch applications
- debug applications
Therefore:
- pairing is working
- trust is working
- developer support files are installed
- provisioning is working
2. Fire
Fire does not list the device as a deployment target.
Only newer devices are listed.
3. CoreDevice (devicectl)
Command executed:
xcrun devicectl list devices
Output:
Name Hostname Identifier State Model
---------------- ----------------------------------------------------- ------------------------------------ ------------------ -------------------------------------
8EB39A72-9044-5641-8FA2-48F26441436A.coredevice.local 8EB39A72-9044-5641-8FA2-48F26441436A unavailable iPad4,4
Jeremy phone Jeremy-phone.coredevice.local B95B7FA6-F3B4-57CD-B7A8-C454456AD0B4 available (paired) iPhone 16 Pro
Stocktake’s iPad Stocktakes-iPad.coredevice.local 84BD2090-EFB7-5B65-9BB7-20BDEA569CE2 connected iPad mini (5th generation)
iPad (2) iPad-2.coredevice.local 92B79B51-B782-5EB7-8262-CB4985555E72 unavailable iPad mini (5th generation)
The iOS 12 iPad mini 2 is not listed.
4. xctrace
Command executed:
xcrun xctrace list devices
The iOS 12 device does not appear.
5. xcdevice
Command executed:
xcrun xcdevice list
The iOS 12 device does not appear.
6. system_profiler
Commands executed:
system_profiler SPUSBDataType
and
system_profiler SPUSBDataType | grep -A20 -B5 iPad
No information relating to the connected iOS 12 device was returned.
Assessment
This appears not to be a provisioning or pairing issue because Xcode is fully able to deploy and debug on the device.
It also appears not to be a Fire configuration issue because Apple’s public command-line tools also fail to enumerate the device.
Current behaviour is:
| Tool | iOS 12 device visible |
|---|---|
| Xcode IDE | Yes |
| Fire | No |
| devicectl | No |
| xctrace | No |
| xcdevice | No |
This strongly suggests that Xcode itself is using a device discovery mechanism that is different from the public CoreDevice command-line tooling.
Question
Is Fire relying solely on CoreDevice (devicectl) or the public device enumeration APIs?
If so, is there any possibility of adding a legacy enumeration path similar to the one Xcode itself is using so that pre-CoreDevice devices (such as iOS 12.x) remain available as deployment/debug targets?


