0

I'm trying to set up usbmuxd to run as a daemon, however I keep running into the following error :

    Dec  3 10:29:19 asci-kubu-NUC7i3BNH systemd[1]: asci-usbmuxd.service: Main process exited, code=exited, status=1/FAILURE
Dec  3 10:29:19 asci-kubu-NUC7i3BNH systemd[1]: asci-usbmuxd.service: Failed with result 'exit-code'.
Dec  3 10:29:24 asci-kubu-NUC7i3BNH systemd[1]: asci-usbmuxd.service: Service hold-off time over, scheduling restart.
Dec  3 10:29:24 asci-kubu-NUC7i3BNH systemd[1]: asci-usbmuxd.service: Scheduled restart job, restart counter is at 46078.
Dec  3 10:29:24 asci-kubu-NUC7i3BNH systemd[1]: Stopped usbmuxd service.
Dec  3 10:29:24 asci-kubu-NUC7i3BNH systemd[1]: Started usbmuxd service.
Dec  3 10:29:24 asci-kubu-NUC7i3BNH usbmuxd[29950]: [0] Could not open lockfile

When I run it manually like so :

sudo usbmuxd -v --user usbmux --foreground

Everything is fine.

Here is my systemd .service file. I've read through the manual however I'm positive that I may have not set the correct capacities. I've verified the permissions/groups for usbmux user, usbmux is part of plugdev and sudo.

[Unit]
Description=usbmuxd service
Documentation=man:usbmuxd(8)

[Service]
Type=simple
ExecStart=/usr/local/sbin/usbmuxd --user usbmux --systemd
PIDFile=/var/run/usbmuxd.pid
Restart=always
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
LimitNPROC=1

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=asciusbmuxd

[Install]
WantedBy=multi-user.target

Any help would be appreciated, I've dug around as best I could trying to find a solution. Thanks!

UPDATE

Using the unit file shipped with usbmuxd does not function, and get the same error mentioned above I get when trying to pass the command parameters in ExecStart.

Bundled unit file :

[Unit]
Description=Socket daemon for the usbmux protocol used by Apple devices
Documentation=man:usbmuxd(8)

[Service]
ExecStart=@sbindir@/usbmuxd --user usbmux --systemd
PIDFile=@localstatedir@/run/usbmuxd.pid

When compiled, @sbindir@ maps to /usr/local/sbin/usbmuxd and @localstatedir@ to /usr/local/var/run/usbmuxd.pid which does not exist. I corrected it to /var/run/usbmuxd.pid.

Whether it's my unit file, or the bundled one removing, --user usbmux --systemd allows it to run correctly.

Trying to set usbmux via the unit file rather than via ExecStart also fails.

Syslog tells me the following :

Oct  4 10:52:19 potato asciusbmuxd[17327]: [10:52:19.635][0] Failed to drop privileges (cannot set supplementary groups)

When I remove User reference, the service starts correctly but I get, and I cannot execute ideviceinfo or use anything related to lockdownd :

usbmuxd[17462]: [2] chmod(/var/lib/lockdown, 02775) failed: Operation not permitted

I should note that I am forced to compile it, as I have OS restrictions and must use 16.04, I require a usbmuxd version that is more recent than available in the repos.

My systemd version is 229.

  • 2
    Why are you not using the service unit file that comes with usbmuxd? – JdeBP Dec 5 '18 at 16:51
  • 1
    Wait a sec, there's a unit file that's bundled in? I'm still learning, and I don't get why my question got downvoted... I legitimately needed some help. I just checked the source.. I found : [Unit] Description=Socket daemon for the usbmux protocol used by Apple devices Documentation=man:usbmuxd(8) [Service] ExecStart=@sbindir@/usbmuxd --user usbmux --systemd PIDFile=@localstatedir@/run/usbmuxd.pid I'll go try that. Thanks – mono Dec 5 '18 at 18:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.