summaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md159
1 files changed, 159 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..8249358
--- /dev/null
+++ b/README.md
@@ -0,0 +1,159 @@
1# usbmuxd
2
3*A socket daemon to multiplex connections from and to iOS devices.*
4
5![build](https://github.com/libimobiledevice/usbmuxd/actions/workflows/build.yml/badge.svg)
6
7## Features
8
9usbmuxd stands for "USB multiplexing daemon". This daemon is in charge of
10multiplexing connections over USB to an iOS device.
11
12To users, it means you can use various applications to interact with your
13device.
14
15To developers, it means you can connect to any listening localhost socket on
16the device.
17
18Some key features are:
19
20- **Implementation**: Open-Source implementation of proprietary usbmuxd daemon
21- **Cross-Platform:** Tested on Linux, macOS, Windows and Android platforms
22- **Linux**: Supports udev and systemd for automatic activation
23- **Compatibility**: Supports latest device firmware releases
24- **Scalability**: Supports multiple connections to different ports in parallel
25
26usbmuxd is not used for tethering data transfers which uses a dedicated USB
27interface to act as a virtual network device.
28
29The higher-level layers, especially if you want to write an application to
30interact with the device, are handled by [libimobiledevice](https://github.com/libimobiledevice/libimobiledevice.git).
31
32The low-level layer is handled by [libusbmuxd](https://github.com/libimobiledevice/libusbmuxd.git).
33
34## Installation / Getting started
35
36### Debian / Ubuntu Linux
37
38First install all required dependencies and build tools:
39```shell
40sudo apt-get install \
41 build-essential \
42 pkg-config \
43 checkinstall \
44 git \
45 autoconf \
46 automake \
47 libtool-bin \
48 libplist-dev \
49 libusbmuxd-dev \
50 libimobiledevice-dev \
51 libimobiledevice-glue-dev \
52 libusb-1.0-0-dev \
53 udev
54```
55
56If systemd is not installed and should control spawning the daemon use:
57```shell
58sudo apt-get install \
59 systemd
60```
61
62Then clone the actual project repository:
63```shell
64git clone https://github.com/libimobiledevice/usbmuxd.git
65cd usbmuxd
66```
67
68Now you can build and install it:
69```shell
70./autogen.sh
71make
72sudo make install
73```
74
75If you require a custom prefix or other option being passed to `./configure`
76you can pass them directly to `./autogen.sh` like this:
77```bash
78./autogen.sh --prefix=/opt/local --without-preflight --without-systemd
79make
80sudo make install
81```
82
83To output a list of available configure options use:
84```bash
85./autogen.sh --help
86```
87
88## Usage
89
90The daemon is automatically started by udev or systemd depending on what you
91have configured upon hotplug of an iOS device and exits if the last device
92was unplugged.
93
94When usbmuxd is running it provides a socket interface at `/var/run/usbmuxd`
95that is designed to be compatible with the socket interface that is provided
96on macOS.
97
98You should also create an `usbmux` user that has access to USB devices on your
99system. Alternatively, just pass a different username using the `-U` argument.
100
101The daemon also manages pairing records with iOS devices and the host in
102`/var/lib/lockdown` (Linux) or `/var/db/lockdown` (macOS).
103
104Ensure proper permissions are setup for the daemon to access the directory.
105
106For debugging purposes it is helpful to start usbmuxd using the foreground `-f`
107argument and enable verbose mode `-v` to get suitable logs.
108
109Please consult the usage information or manual page for a full documentation of
110available command line options:
111```shell
112usbmuxd --help
113man usbmuxd
114```
115
116## Contributing
117
118We welcome contributions from anyone and are grateful for every pull request!
119
120If you'd like to contribute, please fork the `master` branch, change, commit and
121send a pull request for review. Once approved it can be merged into the main
122code base.
123
124If you plan to contribute larger changes or a major refactoring, please create a
125ticket first to discuss the idea upfront to ensure less effort for everyone.
126
127Please make sure your contribution adheres to:
128* Try to follow the code style of the project
129* Commit messages should describe the change well without being too short
130* Try to split larger changes into individual commits of a common domain
131* Use your real name and a valid email address for your commits
132
133We are still working on the guidelines so bear with us!
134
135## Links
136
137* Homepage: https://libimobiledevice.org/
138* Repository: https://git.libimobiledevice.org/usbmuxd.git
139* Repository (Mirror): https://github.com/libimobiledevice/usbmuxd.git
140* Issue Tracker: https://github.com/libimobiledevice/usbmuxd/issues
141* Mailing List: https://lists.libimobiledevice.org/mailman/listinfo/libimobiledevice-devel
142* Twitter: https://twitter.com/libimobiledev
143
144## License
145
146This library and utilities are licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html),
147also included in the repository in the `COPYING.GPLv3` file.
148
149## Credits
150
151The initial usbmuxd daemon implementation was authored by Hector Martin.
152
153Apple, iPhone, iPad, iPod, iPod Touch, Apple TV, Apple Watch, Mac, iOS,
154iPadOS, tvOS, watchOS, and macOS are trademarks of Apple Inc.
155
156usbmuxd is an independent software application and has not been
157authorized, sponsored, or otherwise approved by Apple Inc.
158
159README Updated on: 2022-04-04