|
|
0f7b43 |
From c15d2f6f22a3d5013c8b1cd6ca9c8a31be3748d5 Mon Sep 17 00:00:00 2001
|
|
|
0f7b43 |
From: Bastien Nocera <hadess@hadess.net>
|
|
|
0f7b43 |
Date: Mon, 9 Jul 2012 16:30:33 +0100
|
|
|
0f7b43 |
Subject: [PATCH] Use systemd to start usbmuxd
|
|
|
0f7b43 |
|
|
|
0f7b43 |
Instead of using udev. udev should not be used to start
|
|
|
0f7b43 |
long-running daemons. The started daemon will receive SIGKILL
|
|
|
0f7b43 |
after all event handling has been done, as udev.service cleans
|
|
|
0f7b43 |
up all the lingering processes.
|
|
|
0f7b43 |
|
|
|
0f7b43 |
We instead ask udev to tell systemd to start us up through the
|
|
|
0f7b43 |
usbmuxd.service file.
|
|
|
0f7b43 |
|
|
|
0f7b43 |
See:
|
|
|
0f7b43 |
https://bugzilla.redhat.com/show_bug.cgi?id=786853
|
|
|
0f7b43 |
for more details.
|
|
|
0f7b43 |
---
|
|
|
0f7b43 |
udev/85-usbmuxd.rules.in | 2 +-
|
|
|
0f7b43 |
udev/CMakeLists.txt | 2 ++
|
|
|
0f7b43 |
udev/usbmuxd.service.in | 7 +++++++
|
|
|
0f7b43 |
3 files changed, 10 insertions(+), 1 deletion(-)
|
|
|
0f7b43 |
create mode 100644 udev/usbmuxd.service.in
|
|
|
0f7b43 |
|
|
|
0f7b43 |
diff --git a/udev/85-usbmuxd.rules.in b/udev/85-usbmuxd.rules.in
|
|
|
0f7b43 |
index 6f2186b..d9de100 100644
|
|
|
0f7b43 |
--- a/udev/85-usbmuxd.rules.in
|
|
|
0f7b43 |
+++ b/udev/85-usbmuxd.rules.in
|
|
|
0f7b43 |
@@ -1,7 +1,7 @@
|
|
|
0f7b43 |
# usbmuxd ("Apple Mobile Device" muxer listening on /var/run/usbmuxd)
|
|
|
0f7b43 |
|
|
|
0f7b43 |
# Forces iDevices to the last USB configuration and runs usbmuxd
|
|
|
0f7b43 |
-ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="05ac", ATTR{idProduct}=="12[9a][0-9a-f]", ENV{USBMUX_SUPPORTED}="1", ATTR{bConfigurationValue}!="$attr{bNumConfigurations}", ATTR{bConfigurationValue}="$attr{bNumConfigurations}", OWNER="usbmux", RUN+="@CMAKE_INSTALL_PREFIX@/sbin/usbmuxd -u -U usbmux"
|
|
|
0f7b43 |
+ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="05ac", ATTR{idProduct}=="12[9a][0-9a-f]", ENV{USBMUX_SUPPORTED}="1", ATTR{bConfigurationValue}!="$attr{bNumConfigurations}", ATTR{bConfigurationValue}="$attr{bNumConfigurations}", OWNER="usbmux", TAG+="systemd", ENV{SYSTEMD_WANTS}="usbmuxd.service"
|
|
|
0f7b43 |
|
|
|
0f7b43 |
# Exit usbmuxd when the last device is removed
|
|
|
0f7b43 |
ACTION=="remove", SUBSYSTEM=="usb", ENV{PRODUCT}=="5ac/12[9a][0-9a-f]/*", ENV{INTERFACE}=="255/*", RUN+="@CMAKE_INSTALL_PREFIX@/sbin/usbmuxd -x"
|
|
|
0f7b43 |
diff --git a/udev/CMakeLists.txt b/udev/CMakeLists.txt
|
|
|
0f7b43 |
index 0f7042d..3067a75 100644
|
|
|
0f7b43 |
--- a/udev/CMakeLists.txt
|
|
|
0f7b43 |
+++ b/udev/CMakeLists.txt
|
|
|
0f7b43 |
@@ -1,2 +1,4 @@
|
|
|
0f7b43 |
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/85-usbmuxd.rules.in ${CMAKE_CURRENT_BINARY_DIR}/85-usbmuxd.rules @ONLY)
|
|
|
0f7b43 |
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/usbmuxd.service.in ${CMAKE_CURRENT_BINARY_DIR}/usbmuxd.service @ONLY)
|
|
|
0f7b43 |
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/85-usbmuxd.rules DESTINATION /lib/udev/rules.d/)
|
|
|
0f7b43 |
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/usbmuxd.service DESTINATION /lib/systemd/system/)
|
|
|
0f7b43 |
diff --git a/udev/usbmuxd.service.in b/udev/usbmuxd.service.in
|
|
|
0f7b43 |
new file mode 100644
|
|
|
0f7b43 |
index 0000000..bcfb347
|
|
|
0f7b43 |
--- /dev/null
|
|
|
0f7b43 |
+++ b/udev/usbmuxd.service.in
|
|
|
0f7b43 |
@@ -0,0 +1,7 @@
|
|
|
0f7b43 |
+[Unit]
|
|
|
0f7b43 |
+Description=iOS USB Muxer
|
|
|
0f7b43 |
+
|
|
|
0f7b43 |
+[Service]
|
|
|
0f7b43 |
+Type=simple
|
|
|
0f7b43 |
+ExecStart=/sbin/usbmuxd -u -U usbmux
|
|
|
0f7b43 |
+PIDFile=/var/run/usbmuxd.pid
|
|
|
0f7b43 |
--
|
|
|
0f7b43 |
1.7.10.2
|
|
|
0f7b43 |
|