diff --git a/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb b/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb
index c5e0fbee1a..6258bc5134 100644
--- a/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb
+++ b/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://COPYING.GPLv2;md5=ebb5c50ab7cab4baeffba14977030c07 \
 
 DEPENDS = "udev libusb1 libplist libimobiledevice-glue"
 
-inherit autotools pkgconfig gitpkgv systemd
+inherit autotools pkgconfig gitpkgv systemd useradd
 
 PKGV = "${GITPKGVTAG}"
 PV = "1.1.2+git"
@@ -22,5 +22,18 @@ UPSTREAM_CHECK_COMMITS = "1"
 EXTRA_OECONF += "--without-preflight"
 
 FILES:${PN} += "${base_libdir}/udev/rules.d/"
+FILES:${PN} += "${nonarch_libdir}/sysusers.d"
 
 SYSTEMD_SERVICE:${PN} = "usbmuxd.service"
+
+# 39-usbmuxd.rules carries OWNER="usbmux"; from systemd v258 udev drops the
+# whole rule line when the user does not exist, so the daemon is never
+# started. Create the account, and ship a sysusers.d fragment so it is also
+# recreated on systems whose /etc predates this recipe.
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "--system --no-create-home --shell /bin/false --user-group usbmux"
+
+do_install:append() {
+    install -d ${D}${nonarch_libdir}/sysusers.d
+    printf 'u usbmux - "usbmux daemon"\n' > ${D}${nonarch_libdir}/sysusers.d/usbmuxd.conf
+}
