diff options
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 159 |
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 |  | ||
6 | |||
7 | ## Features | ||
8 | |||
9 | usbmuxd stands for "USB multiplexing daemon". This daemon is in charge of | ||
10 | multiplexing connections over USB to an iOS device. | ||
11 | |||
12 | To users, it means you can use various applications to interact with your | ||
13 | device. | ||
14 | |||
15 | To developers, it means you can connect to any listening localhost socket on | ||
16 | the device. | ||
17 | |||
18 | Some 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 | |||
26 | usbmuxd is not used for tethering data transfers which uses a dedicated USB | ||
27 | interface to act as a virtual network device. | ||
28 | |||
29 | The higher-level layers, especially if you want to write an application to | ||
30 | interact with the device, are handled by [libimobiledevice](https://github.com/libimobiledevice/libimobiledevice.git). | ||
31 | |||
32 | The low-level layer is handled by [libusbmuxd](https://github.com/libimobiledevice/libusbmuxd.git). | ||
33 | |||
34 | ## Installation / Getting started | ||
35 | |||
36 | ### Debian / Ubuntu Linux | ||
37 | |||
38 | First install all required dependencies and build tools: | ||
39 | ```shell | ||
40 | sudo 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 | |||
56 | If systemd is not installed and should control spawning the daemon use: | ||
57 | ```shell | ||
58 | sudo apt-get install \ | ||
59 | systemd | ||
60 | ``` | ||
61 | |||
62 | Then clone the actual project repository: | ||
63 | ```shell | ||
64 | git clone https://github.com/libimobiledevice/usbmuxd.git | ||
65 | cd usbmuxd | ||
66 | ``` | ||
67 | |||
68 | Now you can build and install it: | ||
69 | ```shell | ||
70 | ./autogen.sh | ||
71 | make | ||
72 | sudo make install | ||
73 | ``` | ||
74 | |||
75 | If you require a custom prefix or other option being passed to `./configure` | ||
76 | you can pass them directly to `./autogen.sh` like this: | ||
77 | ```bash | ||
78 | ./autogen.sh --prefix=/opt/local --without-preflight --without-systemd | ||
79 | make | ||
80 | sudo make install | ||
81 | ``` | ||
82 | |||
83 | To output a list of available configure options use: | ||
84 | ```bash | ||
85 | ./autogen.sh --help | ||
86 | ``` | ||
87 | |||
88 | ## Usage | ||
89 | |||
90 | The daemon is automatically started by udev or systemd depending on what you | ||
91 | have configured upon hotplug of an iOS device and exits if the last device | ||
92 | was unplugged. | ||
93 | |||
94 | When usbmuxd is running it provides a socket interface at `/var/run/usbmuxd` | ||
95 | that is designed to be compatible with the socket interface that is provided | ||
96 | on macOS. | ||
97 | |||
98 | You should also create an `usbmux` user that has access to USB devices on your | ||
99 | system. Alternatively, just pass a different username using the `-U` argument. | ||
100 | |||
101 | The daemon also manages pairing records with iOS devices and the host in | ||
102 | `/var/lib/lockdown` (Linux) or `/var/db/lockdown` (macOS). | ||
103 | |||
104 | Ensure proper permissions are setup for the daemon to access the directory. | ||
105 | |||
106 | For debugging purposes it is helpful to start usbmuxd using the foreground `-f` | ||
107 | argument and enable verbose mode `-v` to get suitable logs. | ||
108 | |||
109 | Please consult the usage information or manual page for a full documentation of | ||
110 | available command line options: | ||
111 | ```shell | ||
112 | usbmuxd --help | ||
113 | man usbmuxd | ||
114 | ``` | ||
115 | |||
116 | ## Contributing | ||
117 | |||
118 | We welcome contributions from anyone and are grateful for every pull request! | ||
119 | |||
120 | If you'd like to contribute, please fork the `master` branch, change, commit and | ||
121 | send a pull request for review. Once approved it can be merged into the main | ||
122 | code base. | ||
123 | |||
124 | If you plan to contribute larger changes or a major refactoring, please create a | ||
125 | ticket first to discuss the idea upfront to ensure less effort for everyone. | ||
126 | |||
127 | Please 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 | |||
133 | We 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 | |||
146 | This library and utilities are licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html), | ||
147 | also included in the repository in the `COPYING.GPLv3` file. | ||
148 | |||
149 | ## Credits | ||
150 | |||
151 | The initial usbmuxd daemon implementation was authored by Hector Martin. | ||
152 | |||
153 | Apple, iPhone, iPad, iPod, iPod Touch, Apple TV, Apple Watch, Mac, iOS, | ||
154 | iPadOS, tvOS, watchOS, and macOS are trademarks of Apple Inc. | ||
155 | |||
156 | usbmuxd is an independent software application and has not been | ||
157 | authorized, sponsored, or otherwise approved by Apple Inc. | ||
158 | |||
159 | README Updated on: 2022-04-04 | ||