libimobiledevice/usbmuxd logo

libimobiledevice/usbmuxd

Free

A socket daemon to multiplex connections from and to iOS devices

FreeFree tier
Type
Open Source
Company
libimobiledevice

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.