summaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md201
1 files changed, 201 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..ec057a6
--- /dev/null
+++ b/README.md
@@ -0,0 +1,201 @@
1# libimobiledevice
2
3*A library to communicate with services on iOS devices using native protocols.*
4
5![](https://github.com/libimobiledevice/libimobiledevice/actions/workflows/build.yml/badge.svg)
6
7## Features
8
9libimobiledevice is a cross-platform software library that talks the protocols
10to interact with iOS devices.
11
12Unlike other projects, it does not depend on using any existing proprietary
13libraries and does not require jailbreaking.
14
15Some key features are:
16
17- **Interface**: Implements many high-level interfaces for device services
18- **Implementation**: Object oriented architecture and service abstraction layer
19- **Cross-Platform:** Tested on Linux, macOS, Windows and Android platforms
20- **Utilities**: Provides various command-line utilities for device services
21- **SSL**: Allows choosing between OpenSSL, GnuTLS, or MbedTLS to handle SSL communication
22- **Network**: Supports network connections with "WiFi sync" enabled devices
23- **Python:** Provides Cython based bindings for Python
24
25The implemented interfaces of many device service protocols allow applications
26to:
27
28* Access filesystem of a device
29* Access documents of file sharing apps
30* Retrieve information about a device and modify various settings
31* Backup and restore the device in a native way compatible with iTunes
32* Manage app icons arrangement on the device
33* Install, remove, list and basically manage apps
34* Activate a device using official servers
35* Manage contacts, calendars, notes and bookmarks
36* Retrieve and remove crashreports
37* Retrieve various diagnostics information
38* Establish a debug connection for app debugging
39* Mount filesystem images
40* Forward device notifications
41* Manage device provisioning
42* Take screenshots from the device screen (requires mounted developer image)
43* Simulate changed geolocation of the device (requires mounted developer image)
44* Relay the syslog of the device
45* Expose a connection for WebKit remote debugging
46
47... and much more.
48
49The library is in development since August 2007 with the goal to bring support
50for these devices to the Linux Desktop.
51
52## Installation / Getting started
53
54### Debian / Ubuntu Linux
55
56First install all required dependencies and build tools:
57```shell
58sudo apt-get install \
59 build-essential \
60 pkg-config \
61 checkinstall \
62 git \
63 autoconf \
64 automake \
65 libtool-bin \
66 libplist-dev \
67 libusbmuxd-dev \
68 libimobiledevice-glue-dev \
69 libtatsu-dev \
70 libssl-dev \
71 usbmuxd
72```
73NOTE: [libtatsu](https://github.com/libimobiledevice/libtatsu) (and thus `libtatsu-dev`)
74is a new library that was just published recently, you have to
75[build it from source](https://github.com/libimobiledevice/libtatsu?tab=readme-ov-file#building).
76
77If you want to optionally build the documentation or Python bindings use:
78```shell
79sudo apt-get install \
80 doxygen \
81 cython
82```
83
84Then clone the actual project repository:
85```shell
86git clone https://github.com/libimobiledevice/libimobiledevice.git
87cd libimobiledevice
88```
89
90Now you can build and install it:
91```shell
92./autogen.sh
93make
94sudo make install
95```
96
97If you require a custom prefix or other option being passed to `./configure`
98you can pass them directly to `./autogen.sh` like this:
99```bash
100./autogen.sh --prefix=/opt/local --enable-debug
101make
102sudo make install
103```
104
105By default, OpenSSL will be used as TLS/SSL library. If you prefer GnuTLS,
106configure with `--with-gnutls` like this:
107```bash
108./autogen.sh --with-gnutls
109```
110
111MbedTLS is also supported and can be enabled by passing `--with-mbedtls` to
112configure. If mbedTLS is not installed in a default location, you need to set
113the environment variables `mbedtls_INCLUDES` to the path that contains the
114MbedTLS headers and `mbedtls_LIBDIR` to set the library path. Optionally,
115`mbedtls_LIBS` can be used to set the library names directly. Example:
116```bash
117./autogen.sh --with-mbedtls mbedtls_INCLUDES=/opt/local/include mbedtls_LIBDIR=/opt/local/lib
118```
119
120## Usage
121
122Documentation about using the library in your application is not available yet.
123The "hacker way" for now is to look at the implementation of the included
124utilities.
125
126### Utilities
127
128The library bundles the following command-line utilities in the tools directory:
129
130| Utility | Description |
131| -------------------------- | ------------------------------------------------------------------ |
132| `idevice_id` | List attached devices or print device name of given device |
133| `idevicebackup` | Create or restore backup for devices (legacy) |
134| `idevicebackup2` | Create or restore backups for devices running iOS 4 or later |
135| `idevicebtlogger` | Capture Bluetooth HCI traffic from a device (requires log profile) |
136| `idevicecrashreport` | Retrieve crash reports from a device |
137| `idevicedate` | Display the current date or set it on a device |
138| `idevicedebug` | Interact with the debugserver service of a device |
139| `idevicedebugserverproxy` | Proxy a debugserver connection from a device for remote debugging |
140| `idevicediagnostics` | Interact with the diagnostics interface of a device |
141| `ideviceenterrecovery` | Make a device enter recovery mode |
142| `ideviceimagemounter` | Mount disk images on the device |
143| `ideviceinfo` | Show information about a connected device |
144| `idevicename` | Display or set the device name |
145| `idevicenotificationproxy` | Post or observe notifications on a device |
146| `idevicepair` | Manage host pairings with devices and usbmuxd |
147| `ideviceprovision` | Manage provisioning profiles on a device |
148| `idevicescreenshot` | Gets a screenshot from the connected device |
149| `idevicesetlocation` | Simulate location on device |
150| `idevicesyslog` | Relay syslog of a connected device |
151| `afcclient` | Interact with device filesystem via AFC/HouseArrest |
152
153Please consult the usage information or manual pages of each utility for a
154documentation of available command line options and usage examples like this:
155```shell
156ideviceinfo --help
157man ideviceinfo
158```
159
160## Contributing
161
162We welcome contributions from anyone and are grateful for every pull request!
163
164If you'd like to contribute, please fork the `master` branch, change, commit and
165send a pull request for review. Once approved it can be merged into the main
166code base.
167
168If you plan to contribute larger changes or a major refactoring, please create a
169ticket first to discuss the idea upfront to ensure less effort for everyone.
170
171Please make sure your contribution adheres to:
172* Try to follow the code style of the project
173* Commit messages should describe the change well without being too short
174* Try to split larger changes into individual commits of a common domain
175* Use your real name and a valid email address for your commits
176
177We are still working on the guidelines so bear with us!
178
179## Links
180
181* Homepage: https://libimobiledevice.org/
182* Repository: https://git.libimobiledevice.org/libimobiledevice.git
183* Repository (Mirror): https://github.com/libimobiledevice/libimobiledevice.git
184* Issue Tracker: https://github.com/libimobiledevice/libimobiledevice/issues
185* Mailing List: https://lists.libimobiledevice.org/mailman/listinfo/libimobiledevice-devel
186* Twitter: https://twitter.com/libimobiledev
187
188## License
189
190This library and utilities are licensed under the [GNU Lesser General Public License v2.1](https://www.gnu.org/licenses/lgpl-2.1.en.html),
191also included in the repository in the `COPYING` file.
192
193## Credits
194
195Apple, iPhone, iPad, iPod, iPod Touch, Apple TV, Apple Watch, Mac, iOS,
196iPadOS, tvOS, watchOS, and macOS are trademarks of Apple Inc.
197
198This project is an independent software and has not been authorized, sponsored,
199or otherwise approved by Apple Inc.
200
201README Updated on: 2024-06-27