| Age | Commit message (Collapse) | Author | Files | Lines |
|
During Port DFU-to-DFU re-enumeration, macOS deviceinterfaced daemon can
acquire the USB interface first, making idevicerestore time out waiting
for DFU reconnection.
Add experimental flag: --exclusive-usb that keeps deviceinterfaced from
claiming the USB device for the duration of the restore, by booting it
out or repeatedly terminating it when bootout is denied (SIP on), then
reloading and starting it again on exit.
idevicerestore itself does not need to run as root for this. Only the
launchctl subcommands that manage the system-domain deviceinterfaced
daemon (bootout, bootstrap, kickstart, kill) are elevated individually
via sudo, which may prompt for a password on the controlling terminal.
Read-only queries (print) are run unprivileged. Document how to allow
these specific commands via a scoped sudoers(5) NOPASSWD rule for
unattended use.
Co-authored-by: Nikias Bassen <nikias@gmx.li>
|
|
SourceBootObjectV4 ignored GlobalManifestPrefix and
GlobalManifestSuffix and always selected apticket.<DeviceClass>.im4m,
supplying the AP manifest when another manifest family was requested.
Use the requested path components and send FileDataDone when an
optional manifest is absent. Requests without these fields retain the
existing AP-ticket path.
|
|
|
|
|
|
Add support for new data types and message types required by the macOS 27
(build 26A5353q) restore protocol when restoring via DFU mode:
- BootabilityBundleV2 (required): Updated bootability bundle handler
to recognize both V1 and V2 IPSW directory prefixes. The V2 handler
reuses the existing V1 cpio-over-connection wire protocol.
- SourceBootObjectV5 (optional): Routes to the existing V4 handler
which uses the same ImageName-based extract/personalize/stream flow.
- DeviceRestoreInfoPreflight (optional): Handled as an empty-dict
preflight acknowledgement, same as FirmwareUpdaterPreflight.
- RestoreProtocol (optional, message type): Logged and acknowledged
in the main message loop.
Without BootabilityBundleV2 in SupportedDataTypes, the device's restored
daemon fails the is_host_compatible check during DFU restore with:
host/device compatibility check found that a message is missing
or is not supported (required): BootabilityBundleV2
CHECKPOINT FAILURE: This host version is unsupported.
Tested: Erase restore of macOS 27.0 (26A5353q) via DFU on Macmini9,1
(j274ap, M1) completes successfully.
|
|
e.g. emulated ones via ChefKiss Inferno
|
|
buffers
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Co-authored-by: Nikias Bassen <nikias@gmx.li>
|
|
|
|
Also Vinyl shows up with some devices, so we handle this too.
|
|
|
|
Newer iOS version would cause an Error message despite being able to
continue, so we just ignore it.
|
|
|
|
The logging refactoring introduced a spelling error in the boot-args string.
This commit fixes that, and also changes the boot-args handling code to priotize
Apple Silicon/MacOS recovery path before the generic iOS path.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Depending on the model, a specific USB Port has to be used for a restore.
When using a different one, Port DFU fails to switch to DFU mode. We use
this fact to print a message with an official link that shows the correct
USB port to use for the restore.
|
|
Instead of maintaining another component -> tag mapping, we use the already
existing function _img4_get_component_tag() to retrieve the corresponding tag name.
|
|
The component is called `Ap,RestoreDCP2` and not `RestoreDCP2`
|
|
|
|
We do not want to write these to terminal by default.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Replaced loglevel arguments and globals using the `int` type with the `loglevel` enum.
- Moved logging print func handler function declaration to typedef.
- Fixed misuse of `print_func` where a char* was passed in place of `va_list` via a wrapper function `print_funcf`.
- Fixed reuse of varargs in `logger` causing a segfault when `stderr_enabled` is true.
- Fixed length in `snprintf` call inside `logger_hex_dump` truncating the printed text.
|
|
idevicerestore will now also create a logfile automatically, unless
disabled with --logfile=NONE.
|
|
Because of the new Apple baseband the initial TSS request won't succeed
when restoring from normal mode due to missing data for a @BBTicket.
So now if the baseband information is missing, we don't try to add BBTicket
data at all, which will make it work for iPhone 16e devices.
|
|
Use --without-limera1n at configure time to disable this feature.
|
|
|
|
|
|
|
|
|