This is a system for multiplexing several "connections" over one USB pipe. Conceptually, it provides a TCP-like system-processes on the host machine open up connections to specific, numbered ports on the mobile device. Communications between the host (generally, iTunes running on a Mac or Windows machine) and the device (an iPhone, iPad or iPod touch) take place using a complicated scheme of nested layers. From lowest level to highest, they are: USB protocol: multiplexes multiple data streams over one pair of bulk endpoints
usbmuxd protocol: provides a way of opening connections to TCP ports on the device
lockdownd protocol: tbd
iTunesHelper?
AFC?
this description is from https://www.theiphonewiki.com/wiki/Usbmux. But on my side, usbmuxd communicate with ios device like tcp, so I think we should put it at TCP layer. I think the layer from lowerest to highest may be like this:
usbmuxd protocol: provides a way of opening connections to TCP ports on the device
lockdownd protocol: tbd
iTunesHelper?
AFC?
USB protocol: multiplexes multiple data streams over one pair of bulk endpoints
If you have any idea about this layer, you can contact with me or leave your comments.
usbmuxd location:
code is from tidevice
import os
if os.name == "posix": # linux or darwin
address = "/var/run/usbmuxd"
elif os.name == "nt": # windows
address = ('127.0.0.1', 27015)
on Mac:
/System/Library/PrivateFrameworks/MobileDevice.framework/Resources/usbmuxd, a daemon that is started by launchd (see /System/Library/LaunchDaemons/com.apple.usbmuxd.plist Catalina: /Library/Apple/System/Library/LaunchDaemons/com.apple.usbmuxd.plist)
on windows: install iTunes, and this usbmuxd is already installed.


