diff -urp usbmuxd-1.1.0.orig/src/main.c usbmuxd-1.1.0/src/main.c
--- usbmuxd-1.1.0.orig/src/main.c	2021-04-26 18:47:41.499647827 -0500
+++ usbmuxd-1.1.0/src/main.c	2021-04-26 19:10:10.994771889 -0500
@@ -53,7 +53,8 @@
 #include "conf.h"
 
 static const char *socket_path = "/var/run/usbmuxd";
-static const char *lockfile = "/var/run/usbmuxd.pid";
+#define DEFAULT_LOCKFILE "/var/run/usbmuxd.pid"
+static const char *lockfile = DEFAULT_LOCKFILE;
 
 int should_exit;
 int should_discover;
@@ -501,6 +502,8 @@ static void usage()
 	printf("  -S, --socket ADDR:PORT | PATH   Specify source ADDR and PORT or a UNIX\n");
 	printf("            \t\tsocket PATH to use for the listening socket.\n");
 	printf("            \t\tDefault: %s\n", socket_path);
+	printf("  -P, --pidfile PATH\tSpecify a different location for the pid file, or pass\n");
+	printf("            \t\tNONE to disable. Default: %s\n", DEFAULT_LOCKFILE);
 	printf("  -x, --exit\t\tNotify a running instance to exit if there are no devices\n");
 	printf("            \t\tconnected (sends SIGUSR1 to running instance) and exit.\n");
 	printf("  -X, --force-exit\tNotify a running instance to exit even if there are still\n");
@@ -525,6 +528,7 @@ static void parse_opts(int argc, char **
 		{"systemd", 0, NULL, 's'},
 #endif
 		{"socket", 1, NULL, 'S'},
+		{"pidfile", 1, NULL, 'P'},
 		{"exit", 0, NULL, 'x'},
 		{"force-exit", 0, NULL, 'X'},
 		{"version", 0, NULL, 'V'},
@@ -533,11 +537,11 @@ static void parse_opts(int argc, char **
 	int c;
 
 #ifdef HAVE_SYSTEMD
-	const char* opts_spec = "hfvVuU:xXsnzS:";
+	const char* opts_spec = "hfvVuU:xXsnzS:P:";
 #elif HAVE_UDEV
-	const char* opts_spec = "hfvVuU:xXnzS:";
+	const char* opts_spec = "hfvVuU:xXnzS:P:";
 #else
-	const char* opts_spec = "hfvVU:xXnzS:";
+	const char* opts_spec = "hfvVU:xXnzS:P:";
 #endif
 
 	while (1) {
@@ -589,6 +593,18 @@ static void parse_opts(int argc, char **
 			}
 			listen_addr = optarg;
 			break;
+		case 'P':
+			if (!*optarg || *optarg == '-') {
+				usbmuxd_log(LL_FATAL, "ERROR: --pidfile requires an argument");
+				usage();
+				exit(2);
+			}
+			if (!strcmp(optarg, "NONE")) {
+				lockfile = NULL;
+			} else {
+				lockfile = optarg;
+			}
+			break;
 		case 'x':
 			opt_exit = 1;
 			exit_signal = SIGUSR1;
@@ -634,19 +650,21 @@ int main(int argc, char *argv[])
 	set_signal_handlers();
 	signal(SIGPIPE, SIG_IGN);
 
-	res = lfd = open(lockfile, O_WRONLY|O_CREAT, 0644);
-	if(res == -1) {
-		usbmuxd_log(LL_FATAL, "Could not open lockfile");
-		goto terminate;
+	if (lockfile) {
+		res = lfd = open(lockfile, O_WRONLY|O_CREAT, 0644);
+		if(res == -1) {
+			usbmuxd_log(LL_FATAL, "Could not open lockfile");
+			goto terminate;
+		}
+		lock.l_type = F_WRLCK;
+		lock.l_whence = SEEK_SET;
+		lock.l_start = 0;
+		lock.l_len = 0;
+		lock.l_pid = 0;
+		fcntl(lfd, F_GETLK, &lock);
+		close(lfd);
 	}
-	lock.l_type = F_WRLCK;
-	lock.l_whence = SEEK_SET;
-	lock.l_start = 0;
-	lock.l_len = 0;
-	lock.l_pid = 0;
-	fcntl(lfd, F_GETLK, &lock);
-	close(lfd);
-	if (lock.l_type != F_UNLCK) {
+	if (lockfile && lock.l_type != F_UNLCK) {
 		if (opt_exit) {
 			if (lock.l_pid && !kill(lock.l_pid, 0)) {
 				usbmuxd_log(LL_NOTICE, "Sending signal %d to instance with pid %d", exit_signal, lock.l_pid);
@@ -682,7 +700,9 @@ int main(int argc, char *argv[])
 			goto terminate;
 		}
 	}
-	unlink(lockfile);
+	if (lockfile) {
+		unlink(lockfile);
+	}
 
 	if (opt_exit) {
 		usbmuxd_log(LL_NOTICE, "No running instance found, none killed. Exiting.");
@@ -697,26 +717,28 @@ int main(int argc, char *argv[])
 		}
 	}
 
-	// now open the lockfile and place the lock
-	res = lfd = open(lockfile, O_WRONLY|O_CREAT|O_TRUNC|O_EXCL, 0644);
-	if(res < 0) {
-		usbmuxd_log(LL_FATAL, "Could not open lockfile");
-		goto terminate;
-	}
-	lock.l_type = F_WRLCK;
-	lock.l_whence = SEEK_SET;
-	lock.l_start = 0;
-	lock.l_len = 0;
-	if ((res = fcntl(lfd, F_SETLK, &lock)) < 0) {
-		usbmuxd_log(LL_FATAL, "Lockfile locking failed!");
-		goto terminate;
-	}
-	sprintf(pids, "%d", getpid());
-	if ((size_t)(res = write(lfd, pids, strlen(pids))) != strlen(pids)) {
-		usbmuxd_log(LL_FATAL, "Could not write pidfile!");
-		if(res >= 0)
-			res = -2;
-		goto terminate;
+	if (lockfile) {
+		// now open the lockfile and place the lock
+		res = lfd = open(lockfile, O_WRONLY|O_CREAT|O_TRUNC|O_EXCL, 0644);
+		if(res < 0) {
+			usbmuxd_log(LL_FATAL, "Could not open pidfile '%s'", lockfile);
+			goto terminate;
+		}
+		lock.l_type = F_WRLCK;
+		lock.l_whence = SEEK_SET;
+		lock.l_start = 0;
+		lock.l_len = 0;
+		if ((res = fcntl(lfd, F_SETLK, &lock)) < 0) {
+			usbmuxd_log(LL_FATAL, "Locking pidfile '%s' failed!", lockfile);
+			goto terminate;
+		}
+		sprintf(pids, "%d", getpid());
+		if ((size_t)(res = write(lfd, pids, strlen(pids))) != strlen(pids)) {
+			usbmuxd_log(LL_FATAL, "Could not write pidfile!");
+			if(res >= 0)
+				res = -2;
+			goto terminate;
+		}
 	}
 
 	// set number of file descriptors to higher value
