usbmuxd是用于在USB连接上复用通往iOS设备连接的通路守护进程,其名称是「USB multiplexing daemon」的缩写[1]。它让个人计算机上的同步、管理与调试类程序能够同时与iPhone、iPad等设备交换数据,并向开发者提供访问设备上监听端口的通道。在非苹果平台上,它通常由libimobiledevice项目以开源方式重新实现,是Linux等系统与iOS设备通信的基础组件之一[2]。
定义
usbmuxd是一种运行在计算机一侧的后台进程,职责是把一台主机与iOS设备之间单一物理USB链路,虚拟成多条并行的逻辑连接通道[1]。按Debian软件包仓库的说明,它负责协调各方对iPhone、iPod touch等设备服务的USB访问,使多个同步与管理程序可以同时与设备通信。
对普通用户而言,usbmuxd的存在意味着可以通过USB连接同步音乐、通讯录与照片等数据;对开发者而言,它意味着可以连接到设备上任意处于监听状态的本地端口[3]。需要区分的是,共享网络这类数据转发并不经过usbmuxd,而是使用专门的USB接口,把设备当作虚拟网络设备使用。
原理
usbmuxd在运行时会创建一个套接字接口,路径为 /var/run/usbmuxd,其设计目标是与macOS上同类接口保持兼容[4]。上层程序只要连接这个套接字,就可以通过它向设备上某个TCP端口发起连接,对不同的TCP端口的多条连接可以并行存在[1]。
整个软件栈分为若干层:紧贴USB硬件的底层部分由libusbmuxd处理,面向应用、封装具体服务的高层部分由libimobiledevice负责。以下是这一数据通路的概念示意:
flowchart LR
App[同步或管理程序] --> Socket[/var/run/usbmuxd 套接字/]
Socket --> Daemon[usbmuxd 守护进程]
Daemon --> USB[USB 物理链路]
USB --> Device[iOS 设备上的本地端口]
由于iOS 7带来的变化,该守护进程还负责管理主机与iOS设备之间的配对记录,这些记录存放在Linux系统的 /var/lib/lockdown 目录或macOS系统的 /var/db/lockdown 目录中,需要为其设置正确的目录权限[3]。此外,安装时通常还需要建立一个对USB设备有访问权限的用户,也可以通过命令行参数指定其他用户名[5]。
发展历程
usbmuxd的第1个开源实现由Hector Martin编写[1]。代码仓库的记录显示,相关开发工作在2009年4月密集展开,最初的提交出现在2009年4月26日,随后数日内陆续加入USB收发、设备框架与主循环等部分[6]。同一时期的贡献者还包括Nikias Bassen、Martin Szulecki与Paul Sladen等人。
该程序在2009年进入Linux发行版的打包流程,Debian的收录请求于2009年11月提出,随后以1.0.0版本进入归档。此后项目转入libimobiledevice社区维护,目前主要由Nikias Bassen、Martin Szulecki及众多贡献者继续开发[4]。
应用
在Linux、macOS、Windows与Android等平台上,usbmuxd被用于让各类应用与iOS设备交互。在Linux系统中它支持通过udev与systemd实现自动激活:设备热插拔时守护进程自动启动,最后一个设备被拔出后自动退出。
随同分发的工具iproxy可以将主机上的某个本地端口转发到设备上某个端口,便于调试设备上的服务[4]。在上层,libimobiledevice系列的ifuse等程序建立在usbmuxd之上,可以挂载设备中的文件系统共享。
局限
usbmuxd不承担网络共享的数据传输。这类功能使用独立的USB接口,把设备作为虚拟网络设备使用,与usbmuxd的通路无关[1]。它本身只提供多条连接的复用与套接字接口,具体的设备服务访问需要上层库来处理。
在Linux上,usbmuxd需要正确的udev规则才能正常识别设备并取得权限,否则可能出现设备无法被检测到的情况;如果配置不当,也可能与本机其他USB或设备管理软件产生冲突[7]。它对libimobiledevice软件生态依赖较重,实际使用中遇到的问题往往与其依赖组件或环境配置有关[7]。
参见
-
libimobiledevice —— 建立在usbmuxd之上的高层次库,用于访问iOS设备服务。
-
libusbmuxd —— 对应usbmuxd的客户端库,处理与守护进程通信的底层细节。
-
USB —— usbmuxd复用连接所依托的物理总线。
-
守护进程 —— usbmuxd所属的程序类型,在系统后台长期运行。
-
udev —— Linux中用于在设备插入时自动启动usbmuxd的机制。
参考资料
- usbmuxd [引用日期2026-10-14]
- comms/libusbmuxd - The NetBSD Packages Collection [引用日期2026-10-14]
- usbmuxd.8 [引用日期2026-10-14]
- usbmuxd(8) — usbmuxd — Debian testing [引用日期2026-10-14]
- usbmuxd.8.en [引用日期2026-10-14]
- libimobiledevice.org 上的网页 [引用日期2026-10-14]
- usbmuxd man | Linux Command Library [引用日期2026-10-14]