libimobiledevice/usbmuxd
FreeA socket daemon to multiplex connections from and to iOS devices
FreeFree tier
About libimobiledevice/usbmuxd
usbmuxd is an open-source socket daemon that multiplexes USB connections from and to iOS devices. It replaces the proprietary usbmuxd daemon and is tested on Linux, macOS, Windows, and Android. The daemon automatically starts via udev or systemd when an iOS device is connected and provides a socket interface at /var/run/usbmuxd compatible with macOS. It manages pairing records in /var/lib/lockdown (Linux) or /var/db/lockdown (macOS) and supports multiple parallel connections to different ports. usbmuxd is part of the libimobiledevice project; higher-level interactions are handled by libimobiledevice and low-level by libusbmuxd.
Key Features
Open-source implementation of proprietary usbmuxd daemon
Cross-platform: tested on Linux, macOS, Windows, and Android
Supports udev and systemd for automatic activation upon device hotplug
Compatible with latest device firmware releases
Supports multiple connections to different ports in parallel
Provides a socket interface at /var/run/usbmuxd compatible with macOS
Manages pairing records between host and iOS devices
Pros & Cons
Pros
- Open-source and free to use
- Cross-platform support (Linux, macOS, Windows, Android)
- Automatic activation via udev/systemd simplifies setup
- Scalable: handles multiple parallel connections
- Compatible with latest iOS firmware releases
- Part of the well-established libimobiledevice ecosystem
Cons
- Requires manual installation and compilation on some platforms
- Not used for tethering data transfers (uses a dedicated USB interface)
- May need to create a dedicated usbmux user and configure permissions
- No official graphical user interface; command-line based
Best For
Developing applications that interact with iOS devices over USBMultiplexing connections to iOS devices for debugging or testingRunning multiple services simultaneously to different ports on an iOS deviceReplacing proprietary usbmuxd on Linux for iOS device management
FAQ
What is usbmuxd?
usbmuxd stands for 'USB multiplexing daemon'. It is an open-source daemon that multiplexes connections over USB to an iOS device, allowing applications to interact with the device and developers to connect to any listening localhost socket on the device.
How do I install usbmuxd on Debian/Ubuntu?
Install build dependencies (build-essential, pkg-config, checkinstall, git, autoconf, automake, libtool-bin, libplist-dev, libusbmuxd-dev, libimobiledevice-dev, libimobiledevice-glue-dev, libusb-1.0-0-dev, udev) and optionally systemd. Then clone the repository, run ./autogen.sh, make, and sudo make install.
How does usbmuxd differ from tethering?
usbmuxd is not used for tethering data transfers. Tethering uses a dedicated USB interface to act as a virtual network device, whereas usbmuxd multiplexes connections to different ports on the device.