# usbmuxd (iPhone "Apple Mobile Device" MUXer listening on /var/run/usbmuxd) #if #SUBSYSTEMS=="usb_interface", SYMLINK+="usbmux/interface" #SUBSYSTEMS!="usb", GOTO="usbmuxd_rules_end" # stops the whole script working ATTR{idVendor}!="05ac", GOTO="usbmuxd_rules_end" # If it's plug insertion, flip it into dual "PTP + Apple Mobile Device" configuration # This allows another application to switch it later without it getting switched back (hopefully) # TODO: check iPod Touch/3G SUBSYSTEM=="usb", ACTION=="add", ATTR{product}=="iPhone", ATTR{bConfigurationValue}!="3", ATTR{bConfigurationValue}="3", GOTO="usbmuxd_rules_end" # SYMLINK the usbmux endpoints, if we get them # TODO: Multiple devices # TODO: work out how to make nice, incrementing usbmux/{0,1,2,3}-in for LABEL="usbmuxd_rules_usbmux" # ff/fe/02 == usbmux # #ACTION=="add", # Try to symlink the interface, containing the endpoints. # ...But it doesn't work #KERNELS=="7-3:3.1", SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="01", ATTRS{bAlternateSetting}==" 0", ATTRS{bNumEndpoints}=="02", ATTRS{bInterfaceClass}=="ff", ATTRS{bInterfaceSubClass}=="fe", ATTRS{bInterfaceProtocol}=="02", SYMLINK+="usbmux/prettyplease", RUN+="/bin/ls -l /dev/usbmux/prettyplease" #ATTRS{bInterfaceClass}=="ff", ATTRS{bInterfaceSubClass}=="fe", ATTRS{bInterfaceProtocol}=="02", SYMLINK+="usbmux/interface" # Cute names, really they should have nice numerically increasing names. ACTION=="add", SUBSYSTEM=="usb_endpoint", KERNEL=="usbdev*_ep04", SYMLINK+="usbmux/in" ACTION=="add", SUBSYSTEM=="usb_endpoint", KERNEL=="usbdev*_ep85", SYMLINK+="usbmux/out" # Start and stop 'usbmuxd' as required. ACTION=="add", SUBSYSTEM=="usb_endpoint", KERNEL=="usbdev*_ep85", RUN+="/sbin/start-stop-daemon --start --oknodo --exec @prefix@/sbin/usbmuxd" ACTION=="remove", SUBSYSTEM=="usb_endpoint", KERNEL=="usbdev*_ep85", RUN+="/sbin/start-stop-daemon --stop --signal 3 --exec @prefix@/sbin/usbmuxd" # skip LABEL="usbmuxd_rules_end"