idevice
Installation

Features

Choose which Cargo features to enable and configure the TLS backend.

To keep dependency bloat and compile time down, everything in idevice is contained in Cargo features. Enable only what you need.

Choosing features

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

The full feature list:

FeatureDescription
afcApple File Conduit for file system access.
amfiApple mobile file integrity service.
bt_packet_loggerCapture Bluetooth packets.
companion_proxyManage paired Apple Watches.
core_deviceAccess CoreDevice services over RemoteXPC.
core_device_proxyStart a secure tunnel to access protected services.
crashreportcopymobileCopy crash reports.
debug_proxySend GDB commands to the device.
diagnostics_relayAccess device diagnostics information (IORegistry, MobileGestalt, battery, NAND, device control).
display_streamStream screen capture data and enable CoreDevice HID helpers.
dvtAccess Apple developer tools (e.g. Instruments).
energy_monitorAccess DVT energy monitoring.
graphicsAccess DVT graphics data.
device_infoAccess DVT device information.
application_listingList applications through the DVT developer-service path.
condition_inducerAccess the DVT condition inducer service.
network_monitorAccess DVT network monitoring.
sysmontapAccess DVT system monitor data.
heartbeatMaintain a heartbeat connection.
house_arrestManage files in app containers.
installation_proxyManage app installation and uninstallation.
installcoordination_proxyManage app installation coordination.
location_simulationSimulate GPS locations on the device.
mdnsMatch Bonjour/mDNS auth-tag device records.
misagentManage provisioning profiles on the device.
mobile_image_mounterManage DDI images.
mobileactivationdActivate/Deactivate device.
mobilebackup2Manage backups.
pairPair the device.
pcapdCapture network packets.
preboard_serviceInterface with Preboard.
remote_pairingSupport Remote Pairing / rppairing flows.
restore_serviceRestore service (recovery/reboot).
rsdDiscover RSD services from RemoteXPC handshake responses.
screenshotrTake screenshots.
springboardservicesControl SpringBoard (icons, wallpaper, orientation, etc.).
syslog_relayRelay system logs and OS trace logs from the device.
tcpConnect to devices over TCP.
tunnel_tcp_stackNaive in-process TCP stack for core_device_proxy.
tunnel_tcp_stack_pcapAdd pcap output support to the in-process TCP tunnel.
tssMake requests to Apple's TSS servers. Partial support.
tunneldInterface with pymobiledevice3's tunneld.
usbmuxdConnect using the usbmuxd daemon.
wasmEnable wasm32-unknown-unknown support.
wasm-cryptoSelect the pure-Rust Rustls crypto provider used by WASM builds.
xpcAccess protected services via XPC over RSD.
xctestLaunch XCTest runners and coordinate modern testmanagerd/XCTest sessions.
wdaMinimal WebDriverAgent bootstrap helpers and localhost bridge support.
notification_proxyPost and observe iOS notifications.

The full feature

To enable everything at once:

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

TLS backend

By default, idevice uses aws-lc for TLS. You can switch to ring or openssl if needed:

Cargo.toml
# Use ring instead of aws-lc
idevice = { version = "0.1.64", default-features = false, features = ["ring", "usbmuxd"] }

# Use OpenSSL
idevice = { version = "0.1.64", default-features = false, features = ["openssl", "usbmuxd"] }

aws-lc is the default because it's fast and widely supported. Use ring if you're targeting platforms where aws-lc doesn't compile (e.g. Mac Catalyst). Use openssl if you need to link against an existing OpenSSL installation.

On this page