From f82661f261e1e67a1de387f358d9d8f92b6b2fd4 Mon Sep 17 00:00:00 2001 From: Dylan Van Assche Date: Tue, 12 May 2026 19:13:21 +0200 Subject: [PATCH] main/postmarketos-usb-moded: add usb-moded-mtp-mode MTP mode requires some time for the userspace daemon to configure the FunctionFS gadget, wait until it is completed. Part-of: --- main/postmarketos-usb-moded/APKBUILD | 4 ++ .../rootfs-usr-bin-usb-moded-mtp-mode | 37 +++++++++++++++++++ ...-systemd-system-usb-moded-mtp-mode.service | 11 ++++++ 3 files changed, 52 insertions(+) create mode 100644 main/postmarketos-usb-moded/rootfs-usr-bin-usb-moded-mtp-mode create mode 100644 main/postmarketos-usb-moded/rootfs-usr-lib-systemd-system-usb-moded-mtp-mode.service diff --git a/main/postmarketos-usb-moded/APKBUILD b/main/postmarketos-usb-moded/APKBUILD index 553ef29d1..91f0343fb 100644 --- a/main/postmarketos-usb-moded/APKBUILD +++ b/main/postmarketos-usb-moded/APKBUILD @@ -30,6 +30,7 @@ _source644=" etc/umtprd/umtprd.conf usr/lib/systemd/system/usb-moded-developer-mode.service usr/lib/systemd/system/usb-moded-tethering-mode.service + usr/lib/systemd/system/usb-moded-mtp-mode.service usr/lib/systemd/system/usb-moded.service.d/override.conf " _source755=" @@ -37,6 +38,7 @@ _source755=" etc/init.d/usb-moded-tethering-mode.initd usr/bin/usb-moded-developer-mode usr/bin/usb-moded-tethering-mode + usr/bin/usb-moded-mtp-mode usr/lib/systemd/system-generators/umtprd-config-generator " @@ -118,10 +120,12 @@ af41dc4ceb7255dbb88273916306c6e7e66c879bb67523c9571f9e812c9b36ab00ea666ade49369c 912f0700c87883b55f631cfc3d76e172ff1c21aa57b0c18d1e7b9671ecd6254b1e7565816e3967c68caab196076bf7c8b848375c89185aa4466f4ca7f65231be rootfs-etc-umtprd-umtprd.conf 2c838fd0ad66c92386f6159c7d96d3ba940e13834642eb2cb7612d79d6b8832e9bd06b1eb189141f21fa9085d8b43ea514c15d82736ebd6b94533811f5a15f11 rootfs-usr-lib-systemd-system-usb-moded-developer-mode.service 56ce2662dd8f88795bd2e9063f20747e1377d896fbcf9e1ae43c90ef511c4a11517d7c673f857cf194070c425f417df8f40ced9b95749ed1df53e1be122a8ef7 rootfs-usr-lib-systemd-system-usb-moded-tethering-mode.service +969cfeb3ff0a0153f0d383db18600a3d94e80d39cfb6fb0bae3439c6550785d022852447e93834c50d8d1ec8edc7eec4114db1de64ed454aa9b01f4e6f621e08 rootfs-usr-lib-systemd-system-usb-moded-mtp-mode.service fe4d085730d448e51bbce9e99c3cc7b4662e5fadd6108e5f2e74040f0d4e901132aa7f3367acad183198c5a150862bdef536a6a1968784bf9babc1702c2f16fe rootfs-usr-lib-systemd-system-usb-moded.service.d-override.conf 95681a9bb2d5f8d99f51762d09dc4f0c487442a20070ad1439de1309b775ac1752fe60a205389cc74a1ee9026afc4ad984ac3363659a6749792835654a111d7f rootfs-etc-init.d-usb-moded-developer-mode.initd 1d8b98508f7969a4ba671866eee5e54261c50362e41b18bfebf004a6ed1e97d01a8eb83e3a33c392cbd00ea1a20f0f004b4794582ef1b71dedbba0fba2dc4602 rootfs-etc-init.d-usb-moded-tethering-mode.initd 9aab1a91a817e2337320ee0fa1bf6133e65e9269631560c1860c3b777adb336d036cebbc2510d1df35a82bf4396d553ff9e2edd0004027c7a3130168f7f50d90 rootfs-usr-bin-usb-moded-developer-mode 4539e5ba2d72b585b24b8a8606019f680226026d8316cdd69d476e3aa8126e5f2d236c5faaa2541f4b24e10bbb69ca5233e0b8e025a8307d4688e0c8fa071800 rootfs-usr-bin-usb-moded-tethering-mode +87b0cbf8388ea77ef674d1dee2744cb8cc41db9a703ac449883466f145025604b210c8f798dbaff8e4bccbff1eb2b9527b7f355910eb1fee055978b3444feb6e rootfs-usr-bin-usb-moded-mtp-mode ca4b82b0cccbbb498b8898c4e360142136c46687e97bce85553dc1793bf8ae2e0f509c2a1acdf96b08dc7c6b69f098b56181f9033ad669cabbf5a159ad8efbaa rootfs-usr-lib-systemd-system-generators-umtprd-config-generator " diff --git a/main/postmarketos-usb-moded/rootfs-usr-bin-usb-moded-mtp-mode b/main/postmarketos-usb-moded/rootfs-usr-bin-usb-moded-mtp-mode new file mode 100644 index 000000000..efef98357 --- /dev/null +++ b/main/postmarketos-usb-moded/rootfs-usr-bin-usb-moded-mtp-mode @@ -0,0 +1,37 @@ +#!/bin/sh +# Enable/disable MTP USB mode by delegating FunctionFS operations to uMTP-responder +# +# Copyright (c) Dylan Van Assche (2026) +set -e + +TIMEOUT=10s + +up() { + echo "Starting MTP responder" + systemctl start umtprd + + # Wait up to 10s for EP fds to appear + # usb-signaller and usb-moded need + # to wait for the FunctionFS daemon + # to prepare the gadget before activating it + timeout $TIMEOUT sh -c 'while [ $(ls /dev/mtp/ep* | wc -l) -le '1' ]; do sleep 1; done' +} + +down() { + echo "Stopping MTP responder" + systemctl stop umtprd +} + +case $1 in + up) + up + ;; + down) + down + ;; + *) + echo "need an argument (up|down)" + exit 0 + ;; +esac + diff --git a/main/postmarketos-usb-moded/rootfs-usr-lib-systemd-system-usb-moded-mtp-mode.service b/main/postmarketos-usb-moded/rootfs-usr-lib-systemd-system-usb-moded-mtp-mode.service new file mode 100644 index 000000000..f914c1f62 --- /dev/null +++ b/main/postmarketos-usb-moded/rootfs-usr-lib-systemd-system-usb-moded-mtp-mode.service @@ -0,0 +1,11 @@ +[Unit] +Description=USB Moded MTP Mode + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=usb-moded-mtp-mode up +ExecStop=usb-moded-mtp-mode down + +[Install] +WantedBy=multi-user.target