usbmuxd
Multiplex USB connections to iOS devices
SYNOPSIS
usbmuxd [OPTIONS]
PARAMETERS
-f, --foreground
Do not daemonize; run in the foreground. Useful for debugging.
-v, --verbose
Increase logging verbosity. Can be used multiple times (e.g., -vvv).
-u USER, --user USER
Drop privileges to the specified user after startup.
-U UUID, --uuid UUID
Listen only for a device with the specified unique identifier.
-x, --exit
Exit the daemon when the last connected device is detached.
-p PORT, --port PORT
Listen on a specific TCP port instead of the default 27015.
-P FILE, --pid-file FILE
Write the process ID (PID) to the specified file.
-h, --help
Display a help message and exit.
-V, --version
Show version information and exit.
DESCRIPTION
usbmuxd is a crucial background service (daemon) that facilitates communication between Linux systems and Apple iOS devices (iPhones, iPads, iPods) via USB. It acts as a multiplexer, allowing multiple programs on the host computer to simultaneously connect to various services running on a single iOS device over a single USB cable.
When an iOS device is connected, usbmuxd detects it, establishes a USB connection, and then exposes the device's services (like file transfer, debugging, backup, etc.) as TCP ports on the local machine (e.g., localhost:4000). This abstraction allows user-space applications to interact with the device as if it were a network service, simplifying development and usage for tools like libimobiledevice utilities, iTunes alternatives, and development environments. It's an essential component for any non-Apple operating system to properly interact with iOS devices.
CAVEATS
Requires correct udev rules for proper device detection and permissions.
Potential conflicts with other USB or device management software if not configured properly.
Relies heavily on the libimobiledevice ecosystem; issues often relate to its dependencies or setup.
DAEMON OPERATION
usbmuxd typically runs as a system daemon, automatically starting at boot and monitoring USB ports for iOS device connections. It ensures continuous connectivity for applications.
DEFAULT PORT
By default, usbmuxd listens on TCP port 27015 on localhost for connections from other libimobiledevice tools and applications.
UDEV INTEGRATION
Proper operation requires udev rules to grant usbmuxd the necessary permissions to access USB devices and trigger its startup or operation upon device connection/disconnection events.
HISTORY
usbmuxd is a core component of the libimobiledevice project, an open-source software library developed to communicate with Apple iOS devices natively. It was created to provide a free and cross-platform alternative to Apple's proprietary iTunes and associated libraries, enabling Linux and other non-Apple operating systems to interact with iPhones, iPads, and iPod touches.
Its development began in the late 2000s as the popularity of iOS devices grew, filling a critical gap for users and developers outside the Apple ecosystem who needed to manage or develop for these devices. It abstracts the complexities of USB communication, making it possible for higher-level tools to function reliably.
SEE ALSO
idevice_id(1), ideviceinfo(1), ideviceinstaller(1), idevicesyslog(1), ipheth(4)