All Projects → libimobiledevice → Usbmuxd

libimobiledevice / Usbmuxd

Licence: other
A socket daemon to multiplex connections from and to iOS devices

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Usbmuxd

Arduinoxinput
XInput library for USB capable Arduino boards
Stars: ✭ 126 (-85.12%)
Mutual labels:  usb, library
Kiwix Tools
Command line Kiwix tools: kiwix-serve, kiwix-manage, ...
Stars: ✭ 139 (-83.59%)
Mutual labels:  daemon, library
Whatpulse
WhatPulse reverse engineered
Stars: ✭ 30 (-96.46%)
Mutual labels:  daemon, library
Libusbmuxd
A client library to multiplex connections from and to iOS devices
Stars: ✭ 341 (-59.74%)
Mutual labels:  usb, library
Go Daemon
A library for writing system daemons in golang.
Stars: ✭ 1,341 (+58.32%)
Mutual labels:  daemon, library
Libgphoto2
The libgphoto2 camera access and control library.
Stars: ✭ 637 (-24.79%)
Mutual labels:  usb, library
Mouse Rs
Rust library to control the mouse
Stars: ✭ 24 (-97.17%)
Mutual labels:  library
Rubber Ducky Library For Arduino
An Arduino library that allows you to use a cheap Arduino (Leonardo) as a Rubber Ducky
Stars: ✭ 25 (-97.05%)
Mutual labels:  usb
Blipkit
C library for creating the beautiful sound of old sound chips
Stars: ✭ 23 (-97.28%)
Mutual labels:  library
Preppy
A simple and lightweight tool for preparing the publish of NPM packages.
Stars: ✭ 23 (-97.28%)
Mutual labels:  library
Cute php
PHP version of the beanstalkd-backed job queuing system.
Stars: ✭ 7 (-99.17%)
Mutual labels:  library
Awesome Android
😎 A curated list of awesome Android resources
Stars: ✭ 26 (-96.93%)
Mutual labels:  library
Apos.input
Polling input library for MonoGame.
Stars: ✭ 25 (-97.05%)
Mutual labels:  library
Downloadlargefilesbyurl
DownloadLargeFilesByUrl is a GAS library for downloading large files from URL to Google Drive using Google Apps Script (GAS).
Stars: ✭ 24 (-97.17%)
Mutual labels:  library
M2x Python
AT&T M2X Python Library
Stars: ✭ 25 (-97.05%)
Mutual labels:  library
Logmonitor
Monitoring log files on windows systems.
Stars: ✭ 23 (-97.28%)
Mutual labels:  daemon
Stringplus
Funny and minimal string library for C++ inspired by underscore.string
Stars: ✭ 7 (-99.17%)
Mutual labels:  library
Pipewire
Mirror of the PipeWire repository (see https://gitlab.freedesktop.org/pipewire/pipewire/)
Stars: ✭ 922 (+8.85%)
Mutual labels:  daemon
Hidpytoy
A GUI app for playing with HID devices, written in Python
Stars: ✭ 25 (-97.05%)
Mutual labels:  usb
Brainf cksharp
A complete and full-featured Brainf_ck IDE/console for Windows 10 (UWP), with a high-performance REPL interpreter
Stars: ✭ 26 (-96.93%)
Mutual labels:  library

usbmuxd

A socket daemon to multiplex connections from and to iOS devices.

Features

usbmuxd stands for "USB multiplexing daemon". This daemon is in charge of multiplexing connections over USB to an iOS device.

To users, it means you can use various applications to interact with your device.

To developers, it means you can connect to any listening localhost socket on the device.

Some key features are:

  • Implementation: Open-Source implementation of proprietary usbmuxd daemon
  • Cross-Platform: Tested on Linux, macOS, Windows and Android platforms
  • Linux: Supports udev and systemd for automatic activation
  • Compatibility: Supports latest device firmware releases
  • Scalability: Supports multiple connections to different ports in parallel

usbmuxd is not used for tethering data transfers which uses a dedicated USB interface to act as a virtual network device.

The higher-level layers, especially if you want to write an application to interact with the device, are handled by libimobiledevice.

The low-level layer is handled by libusbmuxd.

Installation / Getting started

Debian / Ubuntu Linux

First install all required dependencies and build tools:

sudo apt-get install \
	build-essential \
	checkinstall \
	git \
	autoconf \
	automake \
	libtool-bin \
	libplist-dev \
	libusbmuxd-dev \
	libimobiledevice-dev \
	libusb-1.0-0-dev \
	udev

If systemd is not installed and should control spawning the daemon use:

sudo apt-get install \
	systemd

Then clone the actual project repository:

git clone https://github.com/libimobiledevice/usbmuxd.git
cd usbmuxd

Now you can build and install it:

./autogen.sh
make
sudo make install

If you require a custom prefix or other option being passed to ./configure you can pass them directly to ./autogen.sh like this:

./autogen.sh --prefix=/opt/local --without-preflight --without-systemd
make
sudo make install

To output a list of available configure options use:

./autogen.sh --help

Usage

The daemon is automatically started by udev or systemd depending on what you have configured upon hotplug of an iOS device and exits if the last device was unplugged.

When usbmuxd is running it provides a socket interface at /var/run/usbmuxd that is designed to be compatible with the socket interface that is provided on macOS.

You should also create an usbmux user that has access to USB devices on your system. Alternatively, just pass a different username using the -U argument.

The daemon also manages pairing records with iOS devices and the host in /var/lib/lockdown (Linux) or /var/db/lockdown (macOS).

Ensure proper permissions are setup for the daemon to access the directory.

For debugging purposes it is helpful to start usbmuxd using the foreground -f argument and enable verbose mode -v to get suitable logs.

Please consult the usage information or manual page for a full documentation of available command line options:

usbmuxd --help
man usbmuxd

Contributing

We welcome contributions from anyone and are grateful for every pull request!

If you'd like to contribute, please fork the master branch, change, commit and send a pull request for review. Once approved it can be merged into the main code base.

If you plan to contribute larger changes or a major refactoring, please create a ticket first to discuss the idea upfront to ensure less effort for everyone.

Please make sure your contribution adheres to:

  • Try to follow the code style of the project
  • Commit messages should describe the change well without being to short
  • Try to split larger changes into individual commits of a common domain
  • Use your real name and a valid email address for your commits

We are still working on the guidelines so bear with us!

Links

License

This library and utilities are licensed under the GNU General Public License v3.0, also included in the repository in the COPYING.GPLv3 file.

Credits

The initial usbmuxd daemon implementation was authored by Hector Martin.

Apple, iPhone, iPad, iPod, iPod Touch, Apple TV, Apple Watch, Mac, iOS, iPadOS, tvOS, watchOS, and macOS are trademarks of Apple Inc.

usbmuxd is an independent software application and has not been authorized, sponsored, or otherwise approved by Apple Inc.

README Updated on: 2020-06-13

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].