summaryrefslogtreecommitdiffstats
path: root/udev/85-usbmuxd.rules.in
blob: 7820a36d875a66dee8220c6156ec93b517b8a9e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 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"