idevice
Backup & Restore

Restore Service

Call restore service actions over RSD.

Restore Service exposes com.apple.RestoreRemoteServices.restoreserviced through RestoreServiceClient. It handles recovery entry, reboot, preflight info, nonces, app parameters, and restore language calls.

Use It For

  • Enter recovery through restore services.
  • Reboot through restore services.
  • Read restore preflight information.
  • Read restore nonces and app parameters.

Feature Flag

Cargo.toml
[dependencies]
idevice = { version = "0.1.64", features = ["usbmuxd", "rsd", "restore_service"] }

Service Names

PathValue
RSDcom.apple.RestoreRemoteServices.restoreserviced

Rust Example

src/main.rs
use idevice::{
    RsdService,
    restore_service::RestoreServiceClient,
};

let mut client = rsd_handshake
    .connect::<RestoreServiceClient<_>>(&mut rsd_provider)
    .await?;
let nonces = client.get_nonces().await?;
println!("{nonces:#?}");

CLI Equivalent

Terminal
idevice-tools restore_service recovery
idevice-tools restore_service reboot
idevice-tools restore_service nonces
idevice-tools restore_service preflight

Common Errors

ErrorWhat to check
Service not foundThe device/iOS version does not advertise this service on the selected transport.
Connection failedCheck pairing, trust state, and whether the selected provider can reach the device.
Permission errorThe service requires a device state, entitlement, or developer setting that is not active.

Source

On this page