idevice
Connection

Lockdown

Start sessions, read device values, and launch device services.

Lockdown is the device management service on port 62078. idevice uses it to read device values, start secure sessions, and request service ports with StartService.

Use It For

  • Reading device information with GetValue.
  • Setting lockdown values with SetValue.
  • Starting a TLS session from a pairing file.
  • Starting lockdown-backed services.
  • Entering recovery mode.

Feature Flag

LockdownClient is part of the base service tree. Add the transport feature you use to reach the device, such as usbmuxd or tcp.

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

Service Name

PathValue
Lockdown servicecom.apple.mobile.lockdown
Default port62078
RSD service namecom.apple.mobile.lockdown.remote.trusted

Rust Example

src/main.rs
use idevice::{IdeviceService, lockdown::LockdownClient};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let provider = first_provider().await?;
    let mut lockdown = LockdownClient::connect(&provider).await?;

    let product_version = lockdown.get_value(Some("ProductVersion"), None).await?;
    println!("{product_version:?}");

    Ok(())
}

Start a secure session when you need access to paired services:

src/main.rs
let pairing_file = provider.get_pairing_file().await?;
let legacy = lockdown.start_session(&pairing_file).await?;

CLI Equivalent

Terminal
idevice-tools lockdown get ProductVersion

Skip session startup for values that do not need a pairing session:

Terminal
idevice-tools lockdown --no-session get ProductVersion

Common Errors

ErrorWhat to check
Missing pairing filePair the device or pass the correct pairing file for TCP usage.
ServiceNotFound after start_serviceThe device does not expose that service in the current mode or OS path.
TLS/session failureConfirm the device trusts the host and the pairing record belongs to the device.

Source

On this page