Firmware compatibility

Which guest firmware and cloudOS pairings are known to boot, on which hosts. Check it before you pick a release for a new machine, or when a creation fails and you want to know whether the pairing was ever tested.

To see what the current catalog offers on your Mac, run:

vphone-cli fw catalog
Info

Since v2.0.0, vphone starts only machines whose config.plist has schemaVersion=2. Recreate machines made by earlier releases with vm create; there is no in-place upgrade. The results below describe tested pairings, not compatibility with older machine bundles.

Tested Environments

These are the iPhone17,3 combinations run end to end with the native JB pipeline. The two PR #486 rows (PR #486) reached the lock screen and answered a vphoned ping; a fresh 26.6.2 vm create also completed every stage and exited successfully after its first-boot ping.

ValidationiPhone restore IPSWPCC/cloudOS IPSWObserved result
PR #48617,3_26.6.2_23G9026.4-23E5207qJB patches, restore, CFW, boot, vphoned ping
PR #48617,3_27.0_24A43526.4-23E5207qJB patches, restore, CFW, boot, vphoned ping
Research board17,3_26.6_23G7126.6-23G71standard and Minimal presets from the CLI, standard from Launchpad (2026-10-20): converted device tree and SEP, kernelcache mix, restore, CFW, boot, vphoned ping
Research board17,3_26.5_23F7726.5-23F75standard preset from the CLI (2026-10-20): GPU driver from a temporary cloudOS restore, kernelcache mix, restore, CFW, boot, vphoned ping
Research board17,3_26.4_23E24626.4-23E244standard preset from the CLI (2026-10-20): GPU driver from a temporary cloudOS restore, kernelcache mix, restore, CFW, boot, vphoned ping
Research boardWatch7,18_26.4_23T24026.4-23E244watchos preset from the CLI and from Launchpad (2026-10-20): watch kernelcache mix, restore, boot, vphoned ping
Research board11,6_18.7.2_22H12418.7.2-22H43Minimal preset from the CLI (2026-10-21): GPU driver from a temporary cloudOS restore, iOS 18 kernelcache mix linked over ssh by the kmutil of macOS 15.6.1, restore, boot, vphoned ping; screen, lock screen, unlock and home swipes checked
Research board11,6_18.1_22B8318.1-22B83Minimal preset from the CLI (2026-10-21): GPU driver from a temporary cloudOS restore, kernelcache mix linked over ssh by the kmutil of macOS 15.6.1, restore, boot, vphoned; Hello screen, lock screen, unlock and home swipes checked
Research board11,6_18.5_22F7618.5-22F76Minimal preset from the CLI (2026-10-21): GPU driver from a temporary cloudOS restore, kernelcache mix linked over ssh by the kmutil of macOS 15.6.1, restore, boot, vphoned; lock screen, unlock and home swipes checked
Research board11,6_18.6_22G8618.6-22G86standard preset from Launchpad's CLI (2026-10-24): kernelcache mix (cached), restore, CFW, boot, vphoned, Hello screen; Frida 17.24.3 attach, spawn, Interceptor and Stalker with the two Frida patches allowed

Which cloudOS to use

Use the cloudOS 26.4 beta (26.4-23E5207q) unless you have a reason not to. It is the newest cloudOS that contains vphone600ap, the identity the guest's kernel, SEP and device tree come from, and it needs nothing beyond vphone-cli.

Every later cloudOS (checked on 2026-10-03) lists only the PCC boards and vresearch101ap: iPhone99,11 is gone from SupportedProductTypes, and there is no kernelcache.*.vphone600, sep-firmware.vphone600 or DeviceTree.vphone600ap. On such a cloudOS the research board stands in (the Research Board patch set):

  • fw patch turns the research board's device tree and SEP into vphone600's and rebuilds its kernelcache with the vphone600 virtualization kexts, from a recipe for that kernelcache.
  • KDK extraction is native; only the link needs root (vphone-cli fw kernelcache). See the kernelcache recipes and Firmware preparation.
  • fw prepare refuses a cloudOS that no recipe covers.
  • fw catalog lists each iOS release's own cloudOS beside the recommended one, and Launchpad offers it under Firmware.
cloudOSvresearch101apvphone600apkernelcache recipe
26.4-23E5207q (beta)yesyesnot needed
26.4-23E244yesnoyes
26.4.1-23E254yesnono
26.5-23F75yesnoyes
26.5.2-23F83yesnono
26.6-23G71yesnoyes
26.6.1-23G82yesnono
26.7-23H20yesnoyes

Other iPhone and iPad versions may work with 26.4-23E5207q, but they have not passed the same end-to-end check.

iOS 18 guests

iOS 18.1 to 18.7.2 run on their own release's cloudOS, with the userland of the iPhone XS family's IPSWs:

  • Create them with vm create --device iPhone11,6. The Minimal preset is the default; --preset standard was checked on 18.6.
  • fw catalog --device iPhone11,6 lists the releases.
  • Their kernels are kernel-first. From macOS 26.4 on, another Mac or a macOS VM running macOS 15 or 26.0 to 26.3 links the mix over ssh (VPHONE_KMUTIL_SSH; see Firmware preparation).
  • Launchpad offers them as the iPhone XS Max, with that Mac as the macOS builder.

18.1, 18.5 and 18.7.2 are checked on VMs; the other four recipes have not been booted yet.

iPhone17,3 on iOS 27.0.1

iOS 27.0.1 (24A446) fails first boot on bundle 2.5.0 and earlier (reproduced 2026-10-04, also with the pristine Apple launchd): TXM's selector-24 pre-check rejects every binary at init, and the boot panics with unexpected SIGKILL of init. The former txm-boot-precheck_admission patch fixed it (see the research note). With the patch, iPhone17,3 27.0.1 on 26.4-23E5207q boots to the guest and answers a vphoned device.info (verified the same day). Bundle 2.6.0 is the first release that carries it.

This revision replaces that forced type-10 admission with txm-cfw-executable_remap, selected by standard without an OS-version gate. Host tests cover the original signature rejection paths. On iOS 27.1 (24A94425), the tester reports normal startup and App loading, and the runtime probe executes all 28 main/framework original-code remaps with actual RX mappings. The exact historical iOS 27.0.1 pairing has not been retested. See the replacement assessment.

macOS 26.6.2 hosts

Checked on 2026-10-23 with Core Bundle 2.12.1, and again on 2026-10-24 with Core Bundle 2.12.2, on Mac mini M4 hosts (Mac16,10, 16 GB, macOS 26.6.2 25G83). Every machine was created from nothing, from the CLI. The research-board pairings staged their kernelcache mix as the user and linked it with sudo, then ran sudo vphone-cli vm create. "Default" marks the newest pairing fw catalog gives that device on this Mac, which is what Launchpad's New Machine selects. Each machine then booted twice headless: vphoned answered, device.info reported the release, and the guest's serial log showed no panic.

GuestFirmwarecloudOSResult
iPhone17,3iOS 27.0.1 (default)26.4-23E5207qtemplate build, clone, two boots
iPhone18,2iOS 27.0.1 (default)26.4-23E5207qtemplate build, clone, two boots
iPad16,1iPadOS 27.0.1 (default)26.4-23E5207qtemplate build, clone, two boots
iPhone17,3iOS 26.6.226.4-23E5207qtemplate build, clone, two boots
iPhone17,3iOS 26.6.226.6-23G71research board: native KDK extraction, macOS 26 link with no auth stubs left, 28 kernelcache patches, two boots
iPhone17,3iOS 26.526.5-23F75research board, as above
iPhone17,3iOS 26.426.4-23E244research board, as above
iPhone17,3iOS 18.6.226.1-23B85template build, clone, two boots
iPhone11,6iOS 18.7.2 (default)18.7.2-22H43Minimal, mix linked over ssh by the kmutil of a macOS 15.7.7 VM, two boots
iPhone11,6iOS 18.618.6-22G86as above: the first boot of this recipe
iPhone11,6iOS 18.718.7-22H20as above: the first boot of this recipe
Watch7,18watchOS 26.4 (default)26.4-23E244watchos preset, watch kernelcache mix, two boots
AppleTV5,3tvOS 26.6 (default)26.4-23E5207qtvos preset, two boots
AppleTV14,1tvOS 26.6 (default on macOS 26)26.4-23E5207qtvos-4k preset, 26.6 OTA userland, two boots
AudioAccessory5,1HomePod Software 27.0 (default on macOS 26)26.4-23E5207qhomepod-mini preset, two boots
AppleTV14,1tvOS 27.0—refused before any download: needs macOS 27
AudioAccessory5,1HomePod Software 27.2—refused before any download: needs macOS 27

The tvOS 27.0 (24J361) and HomePod Software 27.2 (24K120) OTAs compress their payload with LZRAVEN, which only macOS 27 unpacks. On an older Mac, fw catalog leaves them out, so Launchpad's default for those devices is tvOS 26.6 and HomePod Software 27.0, and naming one of them is refused before anything is downloaded.

Apple TV 4K (4th generation), AppleTV18,1 / J265AP, is available for bring-up only, with tvOS 27.2 beta (24K120): its full OTA over the Apple TV HD 26.6 restore base and cloudOS 26.4 beta (23E5207q). It requires macOS 27 and the tvos-4k preset. On 2026-10-24 one machine was restored, had its custom firmware installed, and cold booted twice to vphoned and the 4K Language screen of the legacy TVSetup; setup itself was not completed. It is not in the tested table above. See the bring-up notes.

cloudOS 26.7 (23H20) has no iPhone release to pair with. Staged with iOS 26.6.2's userland, its mix links and its 28 kernelcache patches apply, but the CFW patch _vm_fault_enter_prepare finds no site in that kernel. It has not booted.

Tip

vphone-escalator keeps its allowlist in amfid's memory, so the allowlist is lost when amfid restarts, as happened once on these hosts mid-run. Launchpad allows the bundle again when AMFI refuses it. From the CLI, run the vphone-escalator allow command that host preflight prints again.

Other iPhone models

Models other than iPhone17,3 are described in Other iPhone models.

HostiPhone restore IPSWPCC/cloudOS IPSWObserved result
Mac17,9 (M5 Pro) 27.0.118,1_26.6.2_23G90 (iPhone 17 Pro)26.4-23E5207qLaunchpad vm create (2.5.1 local bundle): prepare, patch, restore, CFW, boot to the home screen at 402x874 pt @3x, model iPhone18,1, vphoned ping
Mac17,9 (M5 Pro) 27.0.118,2_27.0.1_24A446 (iPhone 17 Pro Max)26.4-23E5207qboots with the kernel-boot-shared_region_size patch (2026-10-06, bundle 2.6.0-local.0d5e6f90): dyld cache mapped system-wide, 0 panics, vphoned answers as 27.0.1, home screen at 440x956 pt @3x
Mac17,7 (M5 Max) 26.419,2_27.0.1_24A446 (iPhone 18 Pro)26.4-23E5207qboots with integrated ARM64E_X1 compatibility (2026-10-17): clean offline restore, validated root seal, vphoned ping, and Settings, Safari and Calculator launch

iPhone18,1 and iPhone18,2 on iOS 27

These need the kernel-boot-shared_region_size patch (issue #596, 27.0 and 27.0.1). It is on in the standard preset for an iOS 27 base since 2026-10-06.

Their dyld shared cache records a sharedRegionSize of 0x185804000 on 27.0.1, larger than the 0x180000000 shared region of the cloudOS 26.4 guest kernel, so the cache cannot map even with dyld-boot-maxslide taking its slide away. Without the patch, launchd panics on first boot with Library not loaded: /usr/lib/libSystem.B.dylib. iPhone17,3's 27.0.1 cache (0x17D508000) still fits.

The patch widens the arm64 region to 0x1C0000000, the largest size that stays under the 26.4 kernel's own task-map ceilings. When the machine's kernel carries the patch (its PatchReceipt.plist says so), cfw install measures the cache against the widened region, so these devices install and boot; this was validated on iPhone18,2 27.0.1 as above.

Without the patch (an older bundle, or the patch unticked), cfw install refuses such a cache with this explanation instead of leaving a guest that panics. Use iPhone17,3 for iOS 27, or iOS 26 on these devices.

iPadOS

iPad guests are described in iPadOS guests.

HostiPad restore IPSWPCC/cloudOS IPSWObserved result
Mac17,9 (M5 Pro) 27.0.1iPad16,1,iPad16,2_26.6.2_23G9026.4-23E5207qprepare, patch, restore, CFW (2.2.5 helper), boot to the iPadOS home screen at 744x1133 pt @2x, model iPad16,1, vphoned ping
Mac17,9 (M5 Pro) 27.0.1iPad16,1,iPad16,2_27.0.1_24A44626.4-23E5207qLaunchpad vm create --device iPad16,1 from the catalog (2.4.0 bundle): prepare, patch, restore, CFW, boot to the iPadOS home screen at 744x1133 pt @2x, model iPad16,1, ios_version 27.0.1, vphoned ping

Earlier reported combinations

An earlier README recorded these host and firmware pairings. They predate the current single-mode flow or lack the same vphoned acceptance evidence, so treat them as research history, not as the current support matrix.

HostiPhoneCloudOS
Mac16,11 27.0b217,3_18.6.2_22G10026.1-23B85
Mac16,8 26.5.117,3_26.0_23A34126.1-23B85
Mac16,8 26.5.117,3_26.0.1_23A35526.1-23B85
Mac16,12 26.317,3_26.1_23B8526.1-23B85
Mac16,12 26.317,3_26.3_23D12726.1-23B85
Mac16,12 26.317,3_26.3_23D12726.3-23D128
Mac16,12 26.317,3_26.3.1_23D813326.3-23D128
Mac16,11 26.217,3_26.4_23E24626.4-23E5207q
Mac16,11 26.217,3_26.5_23F7726.4-23E5207q
Mac16,11 27.0b217,3_26.5.2_23F8426.4-23E5207q
Mac16,6 26.4.117,3_26.6_23G7126.4-23E5207q
Mac16,11 27.0b217,3_26.6.1_23G8326.4-23E5207q
Mac16,6 26.6.117,3_26.6.2_23G9026.4-23E5207q
Mac16,11 27.0b217,3_27.0_24A5380h26.4-23E5207q
Mac16,6 26.4.117,3_27.0_24A5390f26.4-23E5207q
Mac16,6 26.6.117,3_27.0_24A5408d26.4-23E5207q
Mac16,11 27.0b217,3_27.0_24A5418b26.4-23E5207q
Mac16,11 27.0b217,3_27.0_24A5424a26.4-23E5207q
Mac16,11 27.0b217,3_27.0_24A5430a26.4-23E5207q
Mac16,6 26.6.117,3_27.0_24A43526.4-23E5207q

For the full list of patches and where each applies, see the patch inventory.

See also