#679

[Bug] Set up and slim system" always fails on iOS < 26 because --accounts-off is passed unconditionally

OpenUnownPkmnopened 13d ago

Summary

Creating an iOS 18.6.2 machine from Launchpad with the default slimming options fails at the Set up and slim system step:

Error: service group(s) accounts need the trimmed service list, which vphoned has for iOS 26, iOS 27, not iOS 18.6.2

When "Turn off unneeded services" is on (the default), Launchpad always adds --accounts-off, whatever the guest's iOS version. The CLI quietly drops the trimmed service profile on iOS < 26, but it refuses the accounts service group. So any iOS < 26 machine created with the default options fails.

Environment

  • Launchpad / vphone-cli version: 2.9.5
  • Host: MacBook Pro, macOS 15.8.1 (24H32)
  • Guest: iPhone 16 (iPhone17,3), iOS 18.6.2 (22G100), cloudOS 26.1 (23B85)
  • New Machine options: defaults; Use Template off, Slim System on, Trim standard, "Turn off unneeded services" on, "Remove system apps" off

Steps to reproduce

  1. Launchpad → New Machine → iPhone 16, iOS 18.6.2, default options.
  2. Create.

Expected

The machine is set up and slimmed. The service profile falls back to none, as the CLI already does for iOS < 26, and the Apple Account group is skipped.

Actual

Create machine, firmware, boot chain, restore, CFW install and trim all succeed (about 4 minutes). Then vm template setup exits right away:

$ vphone-cli vm template setup iOS_18.6.2_16 --strict --accounts-off --remove-apps off --library-root /Users/user/.vphone/machines
Error: service group(s) accounts need the trimmed service list, which vphoned has for iOS 26, iOS 27, not iOS 18.6.2
Usage: vphone-cli <subcommand>
  See 'vphone-cli --help' for more information.
✕  Set up and slim system failed.

"Retry from Set up and slim system" replays the same arguments and fails the same way every time (5 identical attempts in my log). The only way to recover is to delete the machine and start over.

Cause (as far as I can tell, at 23095c8)

  • VPhoneLaunchpad/VPhoneLaunchpad/Machines/VPhoneLaunchpadTemplates.swift: profileArguments returns ["--accounts-off"] whenever trimsServices is true (accountsOff defaults to true and isn't shown in New Machine). The guest's iOS version isn't checked.
  • VPhoneKit/VPhoneCoreKit/Bundle/VPhoneMachineTemplateKey.swift: VPhoneMachineTemplateSlimming.fitted(toIOSVersion:) downgrades serviceProfile to none for majors outside trimmedServiceProfileMajors ([26, 27]). If serviceGroups isn't empty, it throws instead.

So the GUI's default for iOS 26+ is always rejected on older guests.

Workaround

Turn off Advanced Options → Services and Apps → "Turn off unneeded services". Launchpad then passes --service-profile none instead of --accounts-off. On iOS < 26 this loses nothing, because the trimmed list doesn't exist there anyway.

Possible fixes

  • In Launchpad, pass --accounts-off only when the guest's iOS major is in VPhoneTemplateSlimmingRequest.trimmedServiceProfileMajors. Alternatively, grey out or auto-disable "Turn off unneeded services" for those versions.
  • And/or check this in Launchpad before the restore starts, so it fails in seconds instead of after the whole restore + CFW install.
  • And/or let "Retry from…" run with changed slimming options, so a failed creation can be recovered without starting over.

Full creation log: Creation log.rtf

Activity

0

No activity yet.