Pure python3 implementation for working with iDevices (iPhone, etc...)
Project description
PyMobileDevice3
Overview
pymobiledevice3 is a pure Python 3 implementation for interacting with iOS devices (iPhone, iPad, ...).
It includes both a CLI and a Python API and is supported on:
- Windows
- Linux
- macOS
Main features:
- Device discovery over bonjour
- TCP port forwarding
- Syslog and oslog streaming
- Profile and application management
- AFC file access
- Crash report collection
- Network sniffing (PCAP)
- Firmware update
- Recovery/DFU workflows
- Notification listen/post (
notify_post()) - Querying and setting SpringBoard options
- WebInspector automation
- DDI/DVT developer tooling
- Backup and restore
Quick Start
Install from PyPI:
python3 -m pip install -U pymobiledevice3
Or install from source:
git clone git@github.com:doronz88/pymobiledevice3.git
cd pymobiledevice3
python3 -m pip install -U -e .
Verify connectivity and run first commands:
pymobiledevice3 usbmux list
pymobiledevice3 syslog live
pymobiledevice3 apps list
Platform Notes
-
Windows:
-
Install iTunes from Microsoft Store: https://apps.microsoft.com/detail/9pb2mz1zmb1s?hl=en-US&gl=US
-
For WSL2, enable mirrored networking mode: https://learn.microsoft.com/en-us/windows/wsl/networking#mirrored-mode-networking
[wsl2] networkingMode=mirrored
-
-
Linux:
- Install
usbmuxd: https://github.com/libimobiledevice/usbmuxd
- Install
-
OpenSSL:
- OpenSSL is explicitly required for older iOS versions (
< 13).
- OpenSSL is explicitly required for older iOS versions (
-
Recovery/DFU support
- Requires
libusb.
- Requires
Support Matrix (Developer Services)
iOS >= 17 developer services require tunnel-based transport.
| Host OS | iOS 17.0-17.3.1 | iOS 17.4+ |
|---|---|---|
| macOS | Supported | Supported |
| Windows | Supported (requires additional drivers) | Supported |
| Linux | Limited | Supported (lockdown tunnel) |
See the detailed guide: iOS 17+ tunnels
Common CLI Tasks
See full recipes: CLI recipes
# List connected devices
pymobiledevice3 usbmux list
# Watch syslog
pymobiledevice3 syslog live
# Pull crash reports
pymobiledevice3 crash pull /path/to/crashes
# Mount DDI
pymobiledevice3 mounter auto-mount
# DVT screenshot (requires developer setup)
pymobiledevice3 developer dvt screenshot /path/to/screen.png
Install shell completions:
pymobiledevice3 install-completions
Python API and Protocol Internals
- Protocol overview: Understanding iDevice protocol layers
- DTX API quick start: DTX README
- DTX internals: DTX DEVELOPMENT
- RemoteXPC internals: RemoteXPC
- Building custom CLI commands with
service_provider: Guide
Documentation Map
See Documentation index for task-focused guides.
Contributing
See CONTRIBUTING and Code of Conduct. Agent-specific contributor guidance is in AGENTS.
License and Credits
This work is licensed under GPL 3.0 and credited to several major contributors:
- Hector Martin "marcan" hector@marcansoft.com
- Mathieu Renard
- doronz doron88@gmail.com
- matan1008 matan1008@gmail.com
- Guy Salton
- netanelc305 netanelc305@protonmail.com
- Inbar Agmon inbar2812@gmail.com (Project's logo)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pymobiledevice3-9.8.1.tar.gz.
File metadata
- Download URL: pymobiledevice3-9.8.1.tar.gz
- Upload date:
- Size: 758.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
621479ad545795e52af1955e0cc6c8e807b51d81442173b3386f9d1fef21308a
|
|
| MD5 |
bcd03f79ab7b615aa059e9fc1624ab52
|
|
| BLAKE2b-256 |
a10e81b8c391929cb2e2c9c831968df5c9cabc5687ab5d45fc9c345fcdb48171
|
Provenance
The following attestation bundles were made for pymobiledevice3-9.8.1.tar.gz:
Publisher:
python-publish.yml on doronz88/pymobiledevice3
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pymobiledevice3-9.8.1.tar.gz -
Subject digest:
621479ad545795e52af1955e0cc6c8e807b51d81442173b3386f9d1fef21308a - Sigstore transparency entry: 1203514188
- Sigstore integration time:
-
Permalink:
doronz88/pymobiledevice3@5377150e15aa445ff21ead2705df69b4b3ad498a -
Branch / Tag:
refs/tags/v9.8.1 - Owner: https://github.com/doronz88
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@5377150e15aa445ff21ead2705df69b4b3ad498a -
Trigger Event:
release
-
Statement type:
File details
Details for the file pymobiledevice3-9.8.1-py3-none-any.whl.
File metadata
- Download URL: pymobiledevice3-9.8.1-py3-none-any.whl
- Upload date:
- Size: 797.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e1a5c8277a8a7955544579f118da8645f83ac05a1a03e79a96307242089842a
|
|
| MD5 |
cd0dffd173d563d8d0e19531103e9ec9
|
|
| BLAKE2b-256 |
1a583275db73730e99a6345231a7deeef5b184bd6a26b5dd40adefcb5ad0f84d
|
Provenance
The following attestation bundles were made for pymobiledevice3-9.8.1-py3-none-any.whl:
Publisher:
python-publish.yml on doronz88/pymobiledevice3
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pymobiledevice3-9.8.1-py3-none-any.whl -
Subject digest:
9e1a5c8277a8a7955544579f118da8645f83ac05a1a03e79a96307242089842a - Sigstore transparency entry: 1203514189
- Sigstore integration time:
-
Permalink:
doronz88/pymobiledevice3@5377150e15aa445ff21ead2705df69b4b3ad498a -
Branch / Tag:
refs/tags/v9.8.1 - Owner: https://github.com/doronz88
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@5377150e15aa445ff21ead2705df69b4b3ad498a -
Trigger Event:
release
-
Statement type: