Compare commits

...
33 Commits
Author SHA1 Message Date
postmarketOS CI f3c2221241 linux-next: upgrade to next-20260619 2026-06-19 15:38:42 +00:00
bluebunny e015e4359c docs: device-categorization: fix duplicate typo
Signed-off-by: bluebunny <bluebunny@postmarketos.org>
2026-06-19 12:53:37 +00:00
Pablo Correa Gómez ada7990f8e docs: add that lowering main or community devices requires communication
Signed-off-by: Pablo Correa Gómez <pabloyoyoista@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8595>
2026-06-19 11:41:19 +00:00
Pablo Correa Gómez 85dc562881 docs: add rationales for device categories
The lack of rationales for device categorization has lead to a lot of
discussions, misunderstandings, and frustrations, as of why the
requirements are the way they are. Even though it's always good to
keep improving and exploring ways to change our processes, having
rationales can help to explain the "why"s that do not really get
addressed by the "how"s of the actual requirements. Hopefully, this
will lead to less discussions and misunderstandings around the
specific requirements.

Closes https://gitlab.postmarketos.org/postmarketOS/postmarketos/-/work_items/146

Signed-off-by: Pablo Correa Gómez <pabloyoyoista@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8595>
2026-06-19 11:41:19 +00:00
Aelin e7fe5dab0e ci: Switch to Alpine 3.24 for CI runs
Now that Alpine 3.24 is out and the issues with Python 3.14 are
resolved, we can safely upgrade in CI.

Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8859>
2026-06-19 10:52:05 +00:00
Kidd Lee 834dccd4d9 readme: update link to approval rules
MR !8812 moved this page to `merge-requests` subdirectory.

Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8860>
2026-06-19 18:12:28 +08:00
Aelin fddebb2279 systemd/systemd: fix the provider mess
This fixes two issues:

1. I was investigating why currently, pmbootstrap build --force
   libcamera would fail. It turns out that the problem was possible to
   reduce down to apk add eudev-dev resulting in installing eudev-dev
   instead of systemd-dev, even with the systemd repository enabled.
   This is because apk actually thinks it has a higher version:

name <eudev-dev> selected from selectable list
select_package: eudev-dev (requirers=1, autosel=1, iif=0, order_id=0x40005807)
  consider systemd-dev-261_rc4-r0 iif_triggered=0, tag_ok=1, selectable=1, available=1, flags=0x0, provider_priority=100, installed=0
   prefer existing package
    choose as new provider
  consider eudev-dev-3.2.14-r6 iif_triggered=0, tag_ok=1, selectable=1, available=1, flags=0x0, provider_priority=100, installed=0
    select latest by requested name (greater)
    choose as new provider
  consider libudev-zero-dev-1.0.4-r0 iif_triggered=0, tag_ok=1, selectable=1, available=1, flags=0x0, provider_priority=20, installed=0
    select latest by requested name (less)
selecting: eudev-dev-3.2.14-r6, available: 1
assign eudev-dev to eudev-dev-3.2.14-r6
disqualify_package: systemd-dev-261_rc4-r0 (conflicting provides)
disqualify_package: libudev-zero-dev-1.0.4-r0 (conflicting provides)

   And why is that? It's because we have two providers here: One is
   eudev-dev with a provider version of 3.2.14-r6, and the other is
   systemd-dev with a provider version that is empty. This then results
   in apk thinking the version number is greater, as seen above in the
   verbose output. An unversioned provides= for an exact package name
   match will never, ever, ever have any effect, even if the priority is
   set super high, because the version number comparison is before apk
   even starts looking at provider priorities.

   Therefore, we should not have unversioned provides for eudev,
   eudev-dev, eudev-libs and udev. Since those have fairly low version
   numbers, we can just provide them with systemd's version number and
   we'll be fine. This will now result in apk actually installing
   systemd-dev when eudev-dev is prompted for installation.

2. After fixing the aforementioned issue, I noticed that I couldn't
   build anything anymore. This is because my dependency tree would pull
   in systemd and systemd-udev - completely normal. However, both
   systemd and systemd-udev were providing eudev, and apk will refuse to
   install two packages that provide the same thing at the same time.
   The fix for this is to just not provide eudev in the top-level
   systemd package and rather let systemd-udev do that.

With this, I can now finally build libcamera again!

Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8857>
2026-06-19 03:46:53 +02:00
Aelin 7bc5615daf device-lenovo-21bx: Fix typo in lts kernel description
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8856>
2026-06-18 19:04:35 +02:00
Ferass El Hafidi d4ead1f8f8 device-postmarketos-trailblazer: drop qcom-laptop kernel
It is apparently broken (according to Casey), and might be dropped from
pmaports anyway. Let's just drop it from trailblazer at this point.

Signed-off-by: Ferass El Hafidi <funderscore@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8826>
2026-06-18 15:49:42 +00:00
postmarketOS CI 93f70ea6c0 linux-next: upgrade to next-20260618 2026-06-18 15:38:50 +00:00
Aster Boese 9f4e4777a8 docs: reference Alpine Linux's CODINGSTYLE.md
Signed-off-by: Aster Boese <asterboese@mailbox.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8847>
2026-06-18 13:39:33 +00:00
Stefan Hansson f357e3e669 linux-postmarketos-qcom-sm7125: install modules to /usr
Signed-off-by: Stefan Hansson <newbyte@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8855>
2026-06-18 13:15:46 +00:00
binarycraft007 1aedb96c37 device-asus-s5507q: switch to mainline kernels
Adds support for the kernels in main (lts, mainline, stable) and removes
support for linux-postmarketos-qcom-laptop.

Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8849>
2026-06-18 13:09:05 +00:00
Dang Huynh 167f59c830 linux-pine64-pinetab2: Upgrade to 7.0.12
Signed-off-by: Dang Huynh <dang.huynh@mainlining.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8840>
2026-06-18 10:42:52 +00:00
Clayton Craft 17214afd71 main/postmarketos-base-ui-plasma: add cups to pmb_recommends
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>

[ci:skip-vercheck]: pmb_recommends-only change

Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8836>
2026-06-18 07:54:18 +00:00
Clayton Craft 64aa98a876 main/postmarketos-base-ui-gnome: add cups to pmb_recommends
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8836>
2026-06-18 07:54:18 +00:00
Clayton Craft d1d310a503 main/postmarketos-ui-cosmic: move install= from subpkg funcs
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8836>
2026-06-18 07:54:18 +00:00
Clayton Craft 81f3595800 main/postmarketos-ui-cosmic: add cups to pmb_recommends
Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8836>
2026-06-18 07:54:18 +00:00
Dylan Van Assche ccd3a554a6 main/postmarketos-usb-moded: use service manager for unudhcpd
Also start set -e after config parameters are read. Fallbacks would trigger exit otherwise.

Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8553>
2026-06-18 06:27:13 +00:00
Dylan Van Assche 9bccd6b5e9 systemd/postmarketos-base-systemd: enable unudhpcd service
Start unudhpcd on boot

Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8553>
2026-06-18 06:27:13 +00:00
Dylan Van Assche 41732e213b main/postmarketos-initramfs: stop unudhcpd before switching rootfs
Rootfs will take over the managing of unudhcpd under the service manager,
stop unudhpcd to allow this and avoiding multiple instances.

Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8553>
2026-06-18 06:27:13 +00:00
Dylan Van Assche 7a917eee3c main/postmarketos-usb-moded: handle initramfs situation
initramfs starts USB NCM gadget and unudhcpd for SSH login.
This requires special handling since unudhpcd is unmanaged by the
service manager until the userspace is started. Once entered in userspace,
the usb-moded-developer-mode needs to be activated which configures
NetworkManager and starts unudhcpd under the service manager.
This way, a full handover is possible and the gadgets can be properly
switched without any leftovers from the initramfs due to the unmanaged
situation.

Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8553>
2026-06-18 06:27:13 +00:00
Dylan Van Assche b877e7943b main/postmarketos-usb-moded: support dynamic iface
Read iface name from gadget, including config name. Also check for errors

Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8553>
2026-06-18 06:27:10 +00:00
Dylan Van Assche ba1fd6bf14 main/postmarketos-usb-moded: add OpenRC MTP mode
OpenRC also needs MTP mode for usb-signaller.

Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8553>
2026-06-18 06:27:07 +00:00
Dylan Van Assche 9112523f0a systemd/postmarketos-base-systemd: swap usb-moded by usb-signaller
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8553>
2026-06-18 06:27:03 +00:00
Dylan Van Assche 9dcb48a08f main/postmarketos-usb-moded: switch to usb-signaller as default
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8553>
2026-06-18 06:27:00 +00:00
Dylan Van Assche f82661f261 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: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8553>
2026-06-18 06:26:56 +00:00
Dylan Van Assche 7c4ebfcc91 main/postmarketos-usb-moded: clean up IP forwarding
NetworkManager doesn't clean up IP forwarding, do it in the tethering script.

Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8553>
2026-06-18 06:26:53 +00:00
Bart Ribbers e2572a0dc9 systemd/kjournald: upgrade to 26.04.2
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8834>
2026-06-17 18:53:52 +00:00
Bart Ribbers fd34f8e28d systemd/plasma*: upgrade to 6.7.0
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8834>
2026-06-17 18:53:52 +00:00
Oliver Smith 0fe40dd597 main/postmarketos-release-upgrade: upgrade to 1.12.2
Signed-off-by: Oliver Smith <ollieparanoid@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8848>
2026-06-17 18:24:05 +00:00
Oliver Smith 9b29c2bc2c docs: stable-branches: backports may wait
Let's note that maintainers can choose to delay backports to give them
more testing time.

Signed-off-by: Oliver Smith <ollieparanoid@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8850>
2026-06-17 19:45:54 +02:00
Aster Boese ff88820b6a lenovo-21bx: add myself as co-maintainer and move reference to top
Signed-off-by: Aster Boese <asterboese@mailbox.org>

[ci:skip-vercheck]

Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8844>
2026-06-17 18:32:37 +02:00
38 changed files with 293 additions and 109 deletions

No files matched your search

+1 -1
View File
@@ -1,4 +1,4 @@
image: registry.alpinelinux.org/img/alpine:3.23
image: registry.alpinelinux.org/img/alpine:3.24
stages:
- build
- hardware tests
+1 -1
View File
@@ -10,7 +10,7 @@ Helpful resources:
* [How to create a package](https://wiki.postmarketos.org/wiki/Create_a_package)
* [APKBUILD reference](https://wiki.alpinelinux.org/wiki/APKBUILD_Reference)
* [pmaports commit style](./COMMITSTYLE.md)
* [Approval rules](docs/approval-rules.md)
* [Approval rules](docs/merge-requests/approval-rules.md)
* [Alpine Linux aports](https://gitlab.alpinelinux.org/alpine/aports/)
* [Alpine Linux package search](https://pkgs.alpinelinux.org/packages)
* [postmarketOS package search](https://pkgs.postmarketos.org/packages)
+4 -4
View File
@@ -1,10 +1,10 @@
# Contributor: Konrad Dybcio <konradybcio@kernel.org>
# Contributor: Aster Boese <asterboese@mailbox.org>
# Reference: <https://postmarketos.org/devicepkg>
# Contributor: Konrad Dybcio <konradybcio@kernel.org>
# Co-Maintainer: Aster Boese <asterboese@mailbox.org>
maintainer="Clayton Craft <clayton@craftyguy.net>"
pkgname=device-lenovo-21bx
pkgdesc="Lenovo ThinkPad X13s"
pkgver=22
pkgver=23
pkgrel=0
url="https://postmarketos.org"
license="MIT"
@@ -88,7 +88,7 @@ kernel_stable() {
}
kernel_lts() {
pkgdesc="Long-term maintainance kernel (most stability, not all security fixes & new features)"
pkgdesc="Long-term maintenance kernel (most stability, not all security fixes & new features)"
depends="linux-postmarketos-lts"
provides="$pkgname-kernel-any"
provider_priority=2
+27 -3
View File
@@ -2,14 +2,13 @@
maintainer="binarycraft007 <keep.it.sns@gmail.com>"
pkgname=device-asus-s5507q
pkgdesc="ASUS Vivobook S 15"
pkgver=6
pkgrel=2
pkgver=7
pkgrel=0
url="https://postmarketos.org"
license="MIT"
arch="aarch64"
options="!check !archcheck"
depends="
linux-postmarketos-qcom-laptop
postmarketos-base
systemd-boot
firmware-asus-s5507q-dpu
@@ -26,6 +25,12 @@ _pmb_recommends="
firmware-asus-s5507q-common
"
subpackages="
$pkgname-kernel-stable:kernel_stable
$pkgname-kernel-lts:kernel_lts
$pkgname-kernel-mainline:kernel_mainline
"
build() {
devicepkg_build $startdir $pkgname
}
@@ -34,6 +39,25 @@ package() {
devicepkg_package $startdir $pkgname
}
kernel_stable() {
pkgdesc="Stable kernel (recommended, best balance between stability and features)"
depends="linux-postmarketos-stable"
replaces="linux-postmarketos-qcom-laptop"
devicepkg_subpackage_kernel $startdir $pkgname $subpkgname
}
kernel_lts() {
pkgdesc="Long-term maintenance kernel (most stability, not all security fixes & new features)"
depends="linux-postmarketos-lts"
devicepkg_subpackage_kernel $startdir $pkgname $subpkgname
}
kernel_mainline() {
pkgdesc="Upstream development kernel (regular breakage, latest features)"
depends="linux-postmarketos-mainline"
devicepkg_subpackage_kernel $startdir $pkgname $subpkgname
}
sha512sums="
a1cab3c635b322dfa9b561a07770dd1c879d5ae2864a572e2e19e4cbed72b712a370d5e18a4f9675aaf473e49246e6faee697c514c01567828c4b8cb7fc606eb deviceinfo
04cc87ed6b0041ede7edb2693ee4dd58d6ac8f1b036a0b37e1a86cce57b66e35d9f400a3ea75d75278b028132535033915f3a2fff919866e85336c5f92a68ffe kernel-cmdline.conf
@@ -3,7 +3,7 @@
maintainer="Casey Connolly <kcxt@postmarketos.org>"
pkgname=device-postmarketos-trailblazer
pkgdesc="postmarketOS Trailblazer generic ARM64"
pkgver=20
pkgver=21
pkgrel=0
url="https://postmarketos.org"
license="MIT"
@@ -39,7 +39,6 @@ subpackages="
$pkgname-kernel-mainline:kernel_mainline
$pkgname-kernel-lts:kernel_lts
$pkgname-kernel-stable:kernel_stable
$pkgname-kernel-postmarketos-qcom-laptop:kernel_postmarketos_qcom_laptop
$pkgname-kernel-postmarketos-amlogic:kernel_postmarketos_amlogic
"
source="
@@ -82,12 +81,6 @@ kernel_stable() {
devicepkg_subpackage_kernel $startdir $pkgname $subpkgname
}
kernel_postmarketos_qcom_laptop() {
pkgdesc="Mainline kernel with additional patches for Qualcomm Snapdragon-based laptops (linux-postmarketos-qcom-laptop)"
depends="linux-postmarketos-qcom-laptop"
devicepkg_subpackage_kernel $startdir $pkgname $subpkgname
}
kernel_postmarketos_amlogic() {
pkgdesc="Mainline kernel with additional patches for Amlogic AArch64-based devices (linux-postmarketos-amlogic)"
depends="linux-postmarketos-amlogic"
+2 -2
View File
@@ -1,7 +1,7 @@
# Kernel config based on: arch/arm64/configs/defconfig
maintainer="Casey Connolly <kcxt@postmarketos.org>"
pkgname=linux-next
pkgver=7.1_git20260616
pkgver=7.1_git20260619
pkgrel=0
_nextver="${pkgver#*_git}"
pkgdesc="Linux next kernel"
@@ -90,7 +90,7 @@ package() {
}
sha512sums="
4f80433a04043e311ed383ef66a97a2cbef6436b1ef16aa5e1bbc8e676f72ee6aca9ed1acb54b5c2f19a34f76b6f048f7af96856211741ac13c6e38f1a2c1c1f linux-next-next-20260616.tar.gz
d581f166ee76202b1b8755b420f3df881ab22a7dd4e7d557251058a988929bd4412077cbc75666510d12c65987ff1e7a130209242d9b2133161244d71525f386 linux-next-next-20260619.tar.gz
08ec500bd2f40c1c80e56ebd938d4e54af71972fdf00c4dfe8a911cf094e1c296766276010470bfa26c68093c90bcae01266acc5e59fa0ec4620d4becc2c53d4 devices.config
25c07558cc7dc82485957c82246bbf1eef4a4188f007546b27336fcd84507b387c8afc3d0feb2a2760e90ccde804ff7d7112be38831bba92d5a1988780a42cdd pmos.config
"
+11 -4
View File
@@ -3,7 +3,7 @@
# Co-Maintainer: Stefan Hansson <newbyte@postmarketos.org>
maintainer="Dang Huynh <dang.huynh@mainlining.org>"
pkgname=linux-pine64-pinetab2
pkgver=7.0.6
pkgver=7.0.12
_danctnix_kernel_rel=1
pkgrel=0
pkgdesc="Pine64 PineTab 2 mainline"
@@ -32,14 +32,20 @@ makedepends="
_tags="v$pkgver-danctnix$_danctnix_kernel_rel"
_config="config-$_flavor.$arch"
source="
$pkgname-$_tags.tar.gz::https://codeberg.org/DanctNIX/linux-pinetab2/archive/$_tags.tar.gz
linux-$pkgver.tar.xz::https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/linux-$pkgver.tar.xz
$_tags.patch.zst::https://codeberg.org/DanctNIX/linux-pinetab2/releases/download/$_tags/$_tags.patch.zst
$_config
"
builddir="$srcdir/linux-pinetab2"
builddir="$srcdir/linux-$pkgver"
_outdir="out"
prepare() {
default_prepare
# Decrunch the patch file and apply it to the tree
zstd -d "$(readlink $srcdir/$_tags.patch.zst)" -o "$srcdir/$_tags.patch"
patch -p1 -i "$srcdir/$_tags.patch"
cp "$srcdir/config-$_flavor.$CARCH" .config
}
@@ -66,6 +72,7 @@ package() {
}
sha512sums="
b5f0578bf9bc18ea70161bb39fcbbfcd5c92a0d4c58b7c92af64c2277ce2242db3a3551929d608944392bd6b4756bf65a796594acdb4847033a6992ea99ad09b linux-pine64-pinetab2-v7.0.6-danctnix1.tar.gz
5c1df7992b8b78ba28b441a5efdb3fd8d07c2a0ce1421e42a409001dea4b8bdf1aa2bda26645439603c3a903a00d7dfa14324ad2f59f8131174c83d1a5da2f45 linux-7.0.12.tar.xz
b24aadf37f85285edca551d1fd8625755e6db121a760143e468a48c7eb45ffbc3aeff9aea1666afc74a6e7f8ed75944a848c1f9b1ae37d2ad2b3c4412b5b0873 v7.0.12-danctnix1.patch.zst
77b54e385f63436a6fa0a595149d626aae7026dbd748ab121bcbaa88a0e7cf156239033867d8f7acd51b42f04c6cfe9de1c20cc7f687491afe836a7b4759763f config-pine64-pinetab2.aarch64
"
@@ -3,7 +3,7 @@ maintainer="Nikroks <nikroks@mainlining.org>"
_flavor="postmarketos-qcom-sm7125"
pkgname=linux-$_flavor
pkgver=6.14.7
pkgrel=0
pkgrel=1
pkgdesc="Mainline Kernel fork for SM7125 devices"
arch="aarch64"
_carch="arm64"
@@ -47,7 +47,7 @@ package() {
make zinstall modules_install dtbs_install \
ARCH="$_carch" \
INSTALL_PATH="$pkgdir"/boot/ \
INSTALL_MOD_PATH="$pkgdir" \
INSTALL_MOD_PATH="$pkgdir"/usr \
INSTALL_MOD_STRIP=1 \
INSTALL_DTBS_PATH="$pkgdir"/boot/dtbs
rm -f "$pkgdir"/lib/modules/*/build "$pkgdir"/lib/modules/*/source
+6
View File
@@ -35,6 +35,12 @@ release](../releases) branch.
* Put `backport of <link to the original MR>` into the description of the MR
towards the stable branch.
* For patches that are not related to security, maintainers can choose to delay
backporting to give them more time in edge. This can be done either by adding
a visible note in the original MR description that a backport shall wait and
how long, or by adding a blocking comment in the backport MR that it shall
not be merged before a specific date.
### Best Practices
* Cherry picked commits shall not be squashed, then it's hard to understand
+11
View File
@@ -1,5 +1,16 @@
# Packaging Guidelines
This document explains the general logic behind APKBUILDs and the niche
or confusing parts of writing them.
## General Policy
The APKBUILDs in pmaports follow
[Alpine Linux's coding style guide](https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/CODINGSTYLE.md)
with a few small style and policy differences to make up for the differences
in the types of packages between aports and pmaports. These can be found below
and in the other sections.
## Maintainership
Every package is expected to have a maintainer. The only exception is packages
+55 -32
View File
@@ -1,13 +1,27 @@
# Device Categorization
Devices that are working quite well get lost in the [big matrix of booting
devices](https://wiki.postmarketos.org/wiki/Devices). To improve the situation,
devices postmarketOS runs on have been grouped into the following categories.
There are a [lot of devices](https://wiki.postmarketos.org/wiki/Devices) that
can boot postmarketOS. These devices are divided into different categories. The
categorization serves to provide users with information about what to expect in
the present and future from a specific device. Therefore, the categories provide
information about a minimum set of working features, but also about the expected
level of support and stability that those features will have in the future.
## Categories
Although there are distinct categories, device support on-paper might not match
reality. Especially in regards to device features: some devices in lower
categories might match the requirements of higher categories, but the commitment
or support from maintainers might be lower than what higher categories require.
### Main
Main devices should be usable in the most common use-cases for which the device
is designed. They are also expected to be reliable and have few regressions in
functionality. One can expect some level of support from the postmarketOS team,
always respecting the volunteer nature of the project. See
[state](https://postmarketos.org/state/) to understand what that means.
Requirements:
* The [postmarketOS team](https://postmarketos.org/team) must endorse the new
device.
@@ -59,6 +73,15 @@ Responsibilities for the device maintainer team:
### Community
Community devices have a reasonable set of features enabled, although there is
not a fixed feature set: users should not assume that everything works and are
expected to look at the device wiki page. Community devices have generally
received a lot of work and should, in general, remain working quite
well. However, there is no commitment from the postmarketOS team, and it can
happen that maintainers are unable to continue working on them, leading to them
eventually getting demoted. The team will always notify the community about such
changes through the standard communication channels: Fediverse and blog posts.
Requirements:
* Well documented installation instructions on device wiki page
@@ -91,19 +114,14 @@ Requirements:
For e.g. version 6.12.3, the date would be that of the specific patch release,
not that of the initial 6.12 release
Regarding device features (calls working, camera, ...), there is not a fixed
feature set (so for users, don't assume that everything works, look at the
device's wiki page for details).
The purpose of community is to increase visibility of devices that:
* A lot of work was put into
* Are (and stay) working quite well (i.e. they are useful in some way and are
tested occasionally to find and fix regressions)
* Are still being improved or are considered completed at some point
### Testing
Testing devices cover devices with close-to-mainline kernels and other minimal
requirements. Devices on this category might have few, or many features enabled,
and there are no expectations on maintainers regarding user support. In
consequence, users of testing devices must consider that their devices could be
archived at any time and without notice.
Requirements:
* Must run a close-to-mainline kernel as new or newer than the oldest supported LTS release
@@ -114,32 +132,34 @@ Requirements:
### Downstream
Device ports using vendor/downstream kernels. These kernels and devices are only
advised to be used as a step towards using mainline, at which point they would
be moved to testing. Depending on downstream ports as an user can be
problematic, as kernels and devices in this category might be moved to archived
at any time. This will happen if the port no longer builds, lacks a maintainer,
or the maintainer is unresponsive. Downstream ports are also often unable to
support modern userspace components like Docker or systemd.
Requirements:
* Port and dependencies build
* The device boots
Notes:
Device ports using vendor/downstream kernels. Can be moved to _testing_
once a mainline port appears. Kernels and devices in this category might be
moved to _archived_ if no longer building and either lack a maintainer or the
maintainer is unresponsive for months.
(device-category-archived)=
### Archived
Ports are moved to this category if:
A port might be in archived if the port has been replaced with a better
alternative (e.g. ports using downstream kernels when a functional mainline port
exists), the port no longer boots with the current version of postmarketOS,
or it became unmaintained.
* The port has been replaced with a better alternative (e.g. ports using
downstream kernels when a functional mainline port exists).
* The port no longer boots with the current version of postmarketOS, and the
port doesn't have an active maintainer to fix it.
Archived ports aren't listed in `pmbootstrap init` and binary packages are not
built for them. Still, they can be manually selected and built by entering the
device codename. A warning is displayed with the reason why they have been
archived.
The archived category exists to simplify bringing back old ports (so new
maintainers don't have to dig through the git history), and for specific
situations where it is useful for developers to share a non-recommended
downstream kernel. Therefore, archived ports aren't listed in `pmbootstrap init`
and binary packages are not built for them. However, they can still be manually
selected and built by entering the device codename. Although, doing this will display
a warning with the reason why they have been archived.
This category was formerly called *unmaintained*
([!1912](https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/1912),
@@ -221,7 +241,10 @@ the date of the branching.
If the maintainers cannot be contacted, or if two weeks and any additionally
requested time pass and the device still does not meet the criteria, a merge
request to move them to the now appropriate category should be opened.
request to move them to the now appropriate category should be opened. If the
device being demoted is in the main or community category, the community shall
be notified through Fediverse and blog posts (edge blog post, release notes, or
next monthly blog post).
Merge requests moving a device to a lower category are subject to the standard
[pmaports approval rules](../merge-requests/approval-rules).
+6 -4
View File
@@ -1,6 +1,6 @@
maintainer="team/kde <bribbers@disroot.org>"
pkgname=drkonqi
pkgver=6.6.5
pkgver=6.7.0
pkgrel=0
pkgdesc="The KDE crash handler"
# armhf blocked by qt6-qtdeclarative -> ki18n
@@ -34,7 +34,6 @@ makedepends="
kuserfeedback-dev
kwallet-dev
kwidgetsaddons-dev
py3-chai
qt6-qtbase-dev
samurai
syntax-highlighting-dev
@@ -45,7 +44,10 @@ case "$pkgver" in
*.90*) _rel=unstable;;
*) _rel=stable;;
esac
subpackages="$pkgname-lang"
subpackages="
$pkgname-lang
$pkgname-systemd
"
_repo_url="https://invent.kde.org/plasma/drkonqi.git"
source="https://download.kde.org/stable/plasma/$pkgver/drkonqi-$pkgver.tar.xz"
@@ -69,5 +71,5 @@ package() {
}
sha512sums="
211eafeb7dc3ff26f54d0347ee019ef6a89e3281c8bc825f9804f2983c7c451a258e40fbbc92f068f7d2c124b606c37ef47a3fae5f0d9b620896e0d86abb7c57 drkonqi-6.6.5.tar.xz
4a2f04fd28c5f198533e8e06a086781da7db6fc70283b9664cbeb6b851892f26a5578a4dbd034c385893fa28f4c85d947d6f562e514701a016a7dae987f78f8d drkonqi-6.7.0.tar.xz
"
+2 -2
View File
@@ -1,6 +1,6 @@
maintainer="team/kde <bribbers@disroot.org>"
pkgname=kjournald
pkgver=25.12.2
pkgver=26.04.2
pkgrel=0
pkgdesc="Framework for interacting with systemd-journald"
# armhf blocked by qt6-qtdeclarative and pmb#2618
@@ -52,5 +52,5 @@ package() {
}
sha512sums="
86a6bcbe39c0343a197ebe0f50f05b131b1c7dc7baa3b962745dcc7fe1e6bf8307a408990a62a8e9de5813d2a31cef473a0252be4d5396ebeaae8322a63d6cae kjournald-25.12.2.tar.xz
629c5acf21b58b1d909f4e666c1299c76214a740e3bb160ff5abe431649cd9dc477d27f3fc5dc76aa2c9f796224cc5f9c2e984c36b64a27e8b7d2893fe4032ab kjournald-26.04.2.tar.xz
"
+2 -2
View File
@@ -1,7 +1,7 @@
# Forked from Alpine to add systemd!
maintainer="team/kde <bribbers@disroot.org>"
pkgname=kscreenlocker
_pkgver=6.6.5
_pkgver=6.7.0
pkgver=9999$_pkgver
pkgrel=0
pkgdesc="Library and components for secure lock screen architecture"
@@ -76,7 +76,7 @@ package() {
}
sha512sums="
da4405dc6de5477ab1fc6d8e3ba708ce96f9e6dadfb39d70ef697a0e5da7d6f1053b6f2fb6f53fb48ff3f603ea766aaf8ec17dd8c5f3efe867e4ee20e03f3713 kscreenlocker-6.6.5.tar.xz
0f6d4b37dc1a74bcc30697ee6406acb41e310ab1477180d4fc5884a265560553da42afdefacf6cae584ab1cf75699bc9fe1217bb706dea850a805f0e04a42558 kscreenlocker-6.7.0.tar.xz
cdbc45fb74a3c43fb2302fe09bf2f9f644ca93693e0110cf748c403762236aaeea8284a8d21fc495014c69b6d5fe4789aaff7687ce9f03dda270490fa5042e2b kde.pam
fe2f244b73b5cccf4b7125b9e3cac0a35566840e4ba2f69937fd8053aa56af71ee43dcbfa9c0f79de9ebe31f656e98a5d38955f77560be5c3535b08215ad8789 kde-fingerprint.pam
2ae866d25224ba345ea9d5ddb2fce668de5c51d1cfbb4d7a048c50107ccd6cffc3231a46855599c0ba3d62ff002a26e45b69d9029f88f4ab42661465a5e526c5 kde-smartcard.pam
+2 -2
View File
@@ -1,7 +1,7 @@
# Forked from Alpine to add systemd!
maintainer="team/kde <bribbers@disroot.org>"
pkgname=kwin
_pkgver=6.6.5
_pkgver=6.7.0
pkgver=9999$_pkgver
pkgrel=0
pkgdesc="An easy to use, but flexible, composited Window Manager"
@@ -124,5 +124,5 @@ package() {
DESTDIR="$pkgdir" cmake --install build
}
sha512sums="
4342a5393b1749355a2b538c44a9b9f3c40fa128974290b292abff71231f3992bf95f3a9beb98ee9e638d358bfb556acba487512a4c646efa0d9a151728aa7c1 kwin-6.6.5.tar.xz
413b979528485f23ff8a40e50d5ecc8e693dbbf267ed40c7783fdb6ed5aa2b3c30bd3adf148c67d9223ea3e94317ad94a670e226daa9caf2634662d14b68e7d6 kwin-6.7.0.tar.xz
"
@@ -2,7 +2,7 @@
# group=kde-plasma
maintainer="team/kde <bribbers@disroot.org>"
pkgname=plasma-login-manager
pkgver=6.6.5
pkgver=6.7.0
pkgrel=0
pkgdesc="A display manager for KDE Plasma"
# armhf blocked by qt6-qtdeclarative
@@ -79,7 +79,7 @@ package() {
sha512sums="
4f1ca605d4171a678852b3c039471cf3b0f9531c520b5bcbaca1bdfc2d60df28509a425f8252d79f2949065dd5c9665a2055e849dfbecdd2fcde02d9fdfc1dfa plasma-login-manager-6.6.5.tar.xz
67bb54a2ecf1a4046e268216c4d3648e924f980f8bf1d57121c0adab1669a0b3aa5e59c65864fb7b9b2a7734e8b93cd7129d16cc16c16346612929b3d6fd43f4 plasma-login-manager-6.7.0.tar.xz
77fcd3ace910cc694266afb32ac75258e954dfcefa206dfc5f42204b4e3e14528d47a9e28e6cb0aa7f1670450a42023ce4ee85eac76fce2806bab54b2d1aa37c plasmalogin.pam
44d0fce5ed4dd19c0a66cd3b191f33658dcaadf619711c8ed8dccfa8697e8464836780404307271922a910e3df631b8cecfec77822a252e3eabf12c28e65dfa1 plasmalogin-autologin.pam
e82cf4dbca78ea73cc26378ca94dca12d9bb48fe13c29ff1e8403f44f4c83ba5000b8cfff0d2c4161ef9e8218edda82d4226ea571b70ffe7042ed3f2580538cd plasmalogin-greeter.pam
@@ -1,7 +1,7 @@
# Forked from Alpine to add systemd!
maintainer="team/kde <bribbers@disroot.org>"
pkgname=plasma-workspace
_pkgver=6.6.5
_pkgver=6.7.0
pkgver=9999$_pkgver
pkgrel=0
pkgdesc="KDE Plasma Workspace"
@@ -209,5 +209,5 @@ x11() {
}
sha512sums="
865083b9fcb6f8bbaa5a26aa01b3c8f9afe3d7640d19b4639b149ea79ec825e536aa564a479453c43b6d810468e632c10ffa178e21a88250d818ff0aa33e753a plasma-workspace-6.6.5.tar.xz
ffef9f3c95a6581394207218edf19c5e2a5db84140c484efbfc2536a74a0f2f86621f7c8c1cda1b06f37ea3a1844944fd1fcb6cfd63e2ee3390c502519e177d0 plasma-workspace-6.7.0.tar.xz
"
@@ -1,7 +1,7 @@
# pmbootstrap installs this, if systemd is selected in "pmbootstrap init".
maintainer="Clayton Craft <clayton@craftyguy.net>"
pkgname=postmarketos-base-systemd
pkgver=78
pkgver=80
pkgrel=0
pkgdesc="Meta package for running postmarketOS with systemd"
url="https://postmarketos.org"
@@ -118,7 +118,7 @@ b7c3e70f5e4d88d6df6a8d58f4bb6af3d3051c5130cf13ad86a491fcbf7a69ae33ba31d663946c35
bd85f6153d857e1aec191b5fc8c8fc0d87125bf0198bef20d1e91ef40ca7e9ed1209a64ae279f98dc8733969ad6e71e29623180ef2203e386023a950d9ce8269 rootfs-usr-lib-systemd-logind.conf
e49972d276441e9da284315bab5f70d8d25ccba5e43d7e7ec6607c34a3d4dfa512f7303d5ce41076819ef24f5dced5acc74001b4d569258269de34da27912466 rootfs-usr-lib-systemd-resolved.conf.d-disable-dnsovertls.conf
93ab180810dbd2a1477f7ea0f0959be90f099272fe5840030a0772771c97a066b70068c476d32c6a4610b8f7b9fc5bfcf1d7a93f071cec026553ac6a3b8b5324 rootfs-usr-lib-systemd-resolved.conf.d-disable-mdns.conf
0e9b203870d0f533a9ef1587e42fe7f83ee8e8cc32893e666f79409e0741101d60564cadbc97e127c75f516a21c08b1283d05ac6f102aa7a6a0f4407d6ea07df rootfs-usr-lib-systemd-system-preset-90-base.preset
95b68c150db05e60ab60b299a4182cf6e82394d41e179d1d4c23bce0e0777fa0f4596e150960266cf1181f08af062b12234710db436c6f2be374dfe3a789e696 rootfs-usr-lib-systemd-system-preset-90-base.preset
bde7052939d1ddde22fe1df86439d3f1b0cd41810911cee7acf26aac08afe1610360cbbd257b3c1a2e5e7409dff27ade8f3a302a38cd1b99c6cc6eed4cc64a78 rootfs-usr-lib-systemd-system--.slice.d-10-oomd-defaults.conf
bde7052939d1ddde22fe1df86439d3f1b0cd41810911cee7acf26aac08afe1610360cbbd257b3c1a2e5e7409dff27ade8f3a302a38cd1b99c6cc6eed4cc64a78 rootfs-usr-lib-systemd-system-system.slice.d-10-oomd-defaults.conf
cedd159b98ce47ee9d03e5f332c4132c7c3eff32135aa7b7993e19c4867d55aff689b418fc549e139c0ea4690f1094e86efcee7a5bc6cd6998ba99821064a917 rootfs-usr-lib-systemd-system-tmp.mount.d-10-min-memory.conf
@@ -38,7 +38,9 @@ enable alsa-state.service
enable tuned.service
enable tuned-ppd.service
enable irqbalance.service
enable usb-moded.service
enable usb-signaller.service
enable usb-moded-developer-mode.service
enable unudhcpd@usb0.service
enable dbus-broker.service
enable avahi-daemon.service
+1 -1
View File
@@ -6,7 +6,7 @@ pkgname=systemd-stage0
pkgver=261_rc4
_pkgver="${pkgver/_/-}"
# pkgrel must match systemd!
pkgrel=0
pkgrel=1
pkgdesc="Minimal systemd bootstrap package"
url="https://github.com/systemd/systemd"
# armhf: pmb#2618
+4 -4
View File
@@ -17,7 +17,7 @@ pkgname=systemd
pkgver=261_rc4
_pkgver="${pkgver/_/-}"
# pkgrel must match systemd-stage0!
pkgrel=0
pkgrel=1
pkgdesc="System and service manager"
url="https://github.com/systemd/systemd"
# armhf: no linux-stable
@@ -160,7 +160,7 @@ depends="
# provides=openrc and openrc-settingsd to prevent those packages
# getting pulled in, as there are some conflicts (dbus)
provides="busctl eudev openrc-settingsd=$pkgver-r$pkgrel systemd-stage0=$pkgver-r$pkgrel"
provides="busctl openrc-settingsd=$pkgver-r$pkgrel systemd-stage0=$pkgver-r$pkgrel"
provider_priority=100
install="$pkgname.pre-install"
@@ -369,7 +369,7 @@ udevd() {
depends="kmod-libs"
# NOTE: should only be udev, but packages hardcode eudev
provides="eudev udev eudev-libs"
provides="eudev=$pkgver-r$pkgrel udev=$pkgver-r$pkgrel eudev-libs=$pkgver-r$pkgrel"
provider_priority=100
amove usr/bin/udevadm
@@ -550,7 +550,7 @@ x11() {
}
dev() {
provides="eudev-dev udev-dev systemd-stage0-dev=$pkgver-r$pkgrel"
provides="eudev-dev=$pkgver-r$pkgrel udev-dev=$pkgver-r$pkgrel systemd-stage0-dev=$pkgver-r$pkgrel"
provider_priority=100
default_dev
+1
View File
@@ -44,6 +44,7 @@ subpackages="
install="$pkgname-openrc.post-install $pkgname-openrc.post-upgrade"
_pmb_recommends="
cups
decibels
firefox-esr
flatpak
@@ -32,6 +32,7 @@ depends="$depends
"
_pmb_recommends="
breeze-gtk
cups
discover
flatpak
kde-gtk-config
+4 -4
View File
@@ -1,8 +1,8 @@
# Co-Maintainer: Clayton Craft <clayton@craftyguy.net>
maintainer="Casey Connolly <kcxt@postmarketos.org>"
pkgname=postmarketos-initramfs
pkgver=3.11.2
pkgrel=1
pkgver=3.12.0
pkgrel=0
pkgdesc="Base files for the postmarketOS initramfs / initramfs-extra"
url="https://postmarketos.org"
options="!check" # no tests
@@ -112,8 +112,8 @@ ace852ba267b3408998970df6042603c8bec1d033066d1c30ed65f1be955fee8644b57882898f102
69852928464f01757e2f473bd2c2e7ecb4132ecf3e26bdec95932e928dfe9042f59316e0a509fd38bcda88e24dd94bf33e8a88118b5adbec7023d1c13da12f59 00-initramfs-base.files
6d91270b96ce0c745391174201dde63b43a73ae6456c2e1138046beef3548580588fedbeae7cc914079162e99343b45d82c6e6a7ee1d03829aae7697ae52f575 00-initramfs-extra-base.files
bd72e8b6345a46ec13516c64d78d4fa1a9a18a8db9ab04aac605f9708629453dc65b6fbccd96b58eeb1ea68102ddbcae9dc6b369255c6c6c1fb18ce0bd43ec79 init.sh
85bc25e72ce67a2b9ae91bf5486707b35b8a118f527ae7d95f8ce45da5ec61bd77987f69963843a9db7baf692c5635a233f5fbada8417f545866bc4b95c32ba5 init_functions.sh
6201869d3731bdbe4330ffe1c6cf66ab48918b4693153e5ad648f87fa1a28c93095a218de66ce9b24d8f13df92042959591293b26fbc64279480a015ea23ce06 init_2nd.sh
1c1518e903a1d08fe6eed85534fe84d12f43bb5fbfbca97de8aed78f30ddf96ebc2391d39eab02d8689549ca1367f422182995a26e5fda284afea024c433b1b9 init_functions.sh
7aa82d5e2907470d667612643d98371dff27b2650051f8c568ab43d1b97677362c3e6fbd442474086d681ea7c0cfbcaf269d3eef2d2dc3ff4ebf17c786b82148 init_2nd.sh
4eca94327274511011967cde1f663b00b1a8182f7dddc3ba19d5c1f0ac094087a154a250c140ca70ac75a2e7c5bb70b03e94fa5eca63a5393efc4a23d025e1c3 init_functions_2nd.sh
675e7d5bee39b2df7d322117f8dcaccc274d61beaf4d50ead19bbf2109446d64b1c0aa0c5b4f9846eb6c1c403418f28f6364eff4537ba41120fbfcbc484b7da7 mdev.conf
"
+1 -1
View File
@@ -88,7 +88,7 @@ if [ "$IN_CI" != "true" ]; then
beebzzr &
fi
killall udevd syslogd 2>/dev/null
killall udevd syslogd unudhcpd 2>/dev/null
# Kill any getty shells that might be running
for pid in $(pidof sh); do
@@ -1056,8 +1056,13 @@ debug_shell() {
local have_udc
have_udc="$(cat $CONFIGFS/g1/UDC)"
# Use USB ACM gadget if no UDC is available,
# if UDC is available use configured USB networking,
# but DHCP server needs to be started
if [ -n "$have_udc" ]; then
setup_usb_acm_configfs
else
start_unudhcpd
fi
# mount pstore, if possible
+2 -2
View File
@@ -1,6 +1,6 @@
maintainer="Oliver Smith <ollieparanoid@postmarketos.org>"
pkgname=postmarketos-release-upgrade
pkgver=1.12.1
pkgver=1.12.2
pkgrel=0
pkgdesc="Upgrade from one pmOS release to the next one"
url="https://gitlab.postmarketos.org/postmarketOS/postmarketos-release-upgrade/"
@@ -16,5 +16,5 @@ package() {
}
sha512sums="
e880fd4ab391977334d54b92fb26e791de97fff294797f7065d2b3d897a2dbb605a80b8df39bae07945dd42914a0aaa7dc980ea62746ef3f2c0ee8090f2f615c postmarketos-release-upgrade-1.12.1.tar.bz2
419d9e73ae80679d4d867807ac5e095b6964c637be15421e76dbba6e155ad477f652ba67859d9903c0cc53a9c46ba9ce86f888cbd36ebd45a078eeaa9e30a894 postmarketos-release-upgrade-1.12.2.tar.bz2
"
+2 -4
View File
@@ -30,6 +30,7 @@ _pmb_recommends="
cosmic-player
cosmic-store
cosmic-term
cups
firefox-esr
flatpak
gnome-keyring
@@ -53,6 +54,7 @@ replaces="
cosmic-applets
cosmic-bg
"
install="$pkgname-openrc.post-install $pkgname-openrc.post-upgrade"
package() {
install -Dm644 wallpaper.conf \
@@ -65,10 +67,6 @@ package() {
openrc() {
install_if="$pkgname=$pkgver-r$pkgrel openrc"
install="
$subpkgname.post-install
$subpkgname.post-upgrade
"
depends="
bluez-openrc
cosmic-greeter-openrc
+14 -8
View File
@@ -1,6 +1,6 @@
maintainer="Clayton Craft <clayton@craftyguy.net>"
pkgname=postmarketos-usb-moded
pkgver=4
pkgver=9
pkgrel=0
pkgdesc="Meta package for configuring usb-moded on postmarketOS"
url="https://postmarketos.org"
@@ -8,7 +8,7 @@ arch="noarch"
license="GPL-3.0-or-later"
depends="
umtprd
usb-moded
usb-signaller
usb-moded-notify
"
subpackages="
@@ -30,13 +30,16 @@ _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="
etc/init.d/usb-moded-developer-mode.initd
etc/init.d/usb-moded-tethering-mode.initd
etc/init.d/usb-moded-mtp-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
"
@@ -116,12 +119,15 @@ d373201040a911663fd74123e9ef35e43dedfd375eeefe8ca949a3e24737d457a4693e836b1c5ad6
3d4e20f9e8e357030ce5f5c73367aef31cebecce48a9b1ff7915731335a83715e0679812959ac9ee41f88447a8636177244c0b9c5109cd8a227caecb9931ed9e rootfs-etc-usb-moded-dyn-modes-tethering_mode_systemd.ini
af41dc4ceb7255dbb88273916306c6e7e66c879bb67523c9571f9e812c9b36ab00ea666ade49369cd5846b4552a53add58cd1aea574a496bf53ddd3fbc630922 rootfs-etc-usb-moded-dyn-modes-mtp_ffs_mode_systemd.ini
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
885d47e027657584a4e690c8304f5583ee35bee42d2b502dff5e350fb896d606d5ff3fb9a5900f3851427edc7835f2f7332d8cd7cb4591babdd27c5f2ae7f508 rootfs-usr-lib-systemd-system-usb-moded-developer-mode.service
05c4170355c8fcbc96e82df2433daff73d015ef462e1cb3f8f7c0aa08310e018be117f166fa5839fbeb8586b515fbcbf144529be8e8755d8c3a21b54718b07ed 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
5cc40b1a0c86904d824f8f03e3f44900aaf407c5c462902f4f58cd58c603be1c5919651b91320983e21da42f5891e29df504bf4f1bddef64fedc68c2accdccbc rootfs-usr-bin-usb-moded-tethering-mode
0981a7cfc53d887997b5342a9add41784ffdfe011cac8510aa78620776ab9a7bf24d4e62d30eb6d2852d52a3ea060c1de074fcea9f4fe017d888b06871e911d0 rootfs-etc-init.d-usb-moded-developer-mode.initd
1662006de519b7b45c2d817be974b43d732d166f71c6782e7d136770aadddcc2ea820fcece21bf95e68f578c9ae7ba88867981fff726feab61cdc36efdf5ec6e rootfs-etc-init.d-usb-moded-tethering-mode.initd
b8a4d9c8d1e2cde8d6b31bbb3e61d37c05cf2aa1e04cb25c24308839d045205e0604b103d2d60f9834782dcc64ab346cfe8f97797d4d0c86f54e4cfceb6af679 rootfs-etc-init.d-usb-moded-mtp-mode.initd
f5d45b6c6a4954cab82289fe76fdce2d0480a534d2752b139cc497556f805d32d780cc28a24e4f5c90b1413091c8663b3cb51037b96e57f02be4bee5fab0a45f rootfs-usr-bin-usb-moded-developer-mode
af509646af99bc0fcd36d098330acf070f2eaa9780986c483194c2428fcb6390a2a1d5b941d5d63bac3f68d868f6ccf517f5c4cecb7fab1404c42341c55ce14e rootfs-usr-bin-usb-moded-tethering-mode
cada62ef2f5a63543b4150abfcb5f07dec40ceb8b1f977f6288468e4d161f0e9f07ce7fa08d33f214a805fecead1a857047af23a4f6bb3fb41c631df8992b53e rootfs-usr-bin-usb-moded-mtp-mode
ca4b82b0cccbbb498b8898c4e360142136c46687e97bce85553dc1793bf8ae2e0f509c2a1acdf96b08dc7c6b69f098b56181f9033ad669cabbf5a159ad8efbaa rootfs-usr-lib-systemd-system-generators-umtprd-config-generator
"
@@ -4,6 +4,10 @@ description="USB Moded Developer Mode"
command="usb-moded-developer-mode"
command_args="up"
depends() {
need net
}
stop() {
usb-moded-developer-mode down
}
@@ -0,0 +1,9 @@
#!/sbin/openrc-run
description="USB Moded MTP Mode"
command="usb-moded-mtp-mode"
command_args="up"
stop() {
usb-moded-mtp-mode down
}
@@ -4,6 +4,10 @@ description="USB Moded Tethering Mode"
command="usb-moded-tethering-mode"
command_args="up"
depends() {
need net
}
stop() {
usb-moded-tethering-mode down
}
@@ -2,12 +2,36 @@
# Enable/disable developer USB mode by delegating network operations to NetworkManager
# Dynamically generate NetworkManager connection because it is only available in the right USB mode
#
# Copyright (c) Dylan Van Assche (2025)
IFACE=usb0
# Copyright (c) Dylan Van Assche (2025-2026)
CONFIGFS="/sys/kernel/config/usb_gadget"
IFACE=$(cat "$CONFIGFS"/usb-signaller-developer/functions/ncm.*/ifname 2>/dev/null)
IFACE=${IFACE:-"usb0"}
IP_ADDRESS_SERVER=172.16.42.1
IP_ADDRESS_CLIENT=172.16.42.2
CONNECTION_NAME="USB Developer Mode"
CONNECTION_NAME=$(cat "$CONFIGFS"/usb-signaller-developer/configs/*/strings/0x409/configuration 2>/dev/null)
CONNECTION_NAME=${CONNECTION_NAME:-"Developer Mode"}
set -e
_start_unudhcpd() {
if [ -d "/run/systemd" ]; then
systemctl start unudhcpd@"$1"
elif [ -d "/etc/rc.conf" ]; then
rc-service unudhcpd."$1" start
else
echo "Cannot start unudhpcd!"
fi
}
_stop_unudhcpd() {
if [ -d "/run/systemd" ]; then
systemctl stop unudhcpd@"$1"
elif [ -d "/etc/rc.conf" ]; then
rc-service unudhcpd."$1" stop
else
echo "Cannot stop unudhpcd!"
fi
}
up() {
# Bring interface and NetworkManager connection up
@@ -16,12 +40,12 @@ up() {
nmcli connection up "$CONNECTION_NAME"
# Start DHCP server
unudhcpd -i "$IFACE" -s "$IP_ADDRESS_SERVER" -c "$IP_ADDRESS_CLIENT" &
_start_unudhcpd "$IFACE"
}
down() {
# Stop DHCP server
killall -9 unudhcpd
_stop_unudhcpd "$IFACE"
# Bring NetworkManager connection down
nmcli connection down "$CONNECTION_NAME"
@@ -44,4 +68,3 @@ case $1 in
exit 0
;;
esac
@@ -0,0 +1,44 @@
#!/bin/sh
# Enable/disable MTP USB mode by delegating FunctionFS operations to uMTP-responder
#
# Copyright (c) Dylan Van Assche (2026)
TIMEOUT=10s
set -e
up() {
echo "Starting MTP responder"
if [ -d "/run/systemd" ]; then
systemctl start umtprd
elif [ -f "/etc/rc.conf" ]; then
rc-service umtprd start
else
echo "Unsupported init system"
exit 1
fi
# 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
@@ -2,10 +2,14 @@
# Enable/disable tethering USB mode by delegating network operations to NetworkManager.
# Dynamically generate NetworkManager connection because it is only available in the right USB mode.
#
# Copyright (c) Dylan Van Assche (2025)
# Copyright (c) Dylan Van Assche (2025-2026)
CONFIGFS="/sys/kernel/config/usb_gadget"
IFACE=$(cat "$CONFIGFS"/usb-signaller-tethering/functions/ncm.*/ifname 2>/dev/null)
IFACE=${IFACE:-"usb0"}
CONNECTION_NAME=$(cat "$CONFIGFS"/usb-signaller-tethering/configs/*/strings/0x409/configuration 2>/dev/null)
CONNECTION_NAME=${CONNECTION_NAME:-"Tethering Mode"}
IFACE=usb0
CONNECTION_NAME="USB Tethering Mode"
set -e
up() {
# Bring interface and NetworkManager connection up
@@ -19,6 +23,9 @@ down() {
nmcli connection down "$CONNECTION_NAME"
nmcli connection delete "$CONNECTION_NAME"
# NetworkManager leaves IP forwarding ON, set it back to disabled
echo 0 > /proc/sys/net/ipv4/ip_forward
# NetworkManager brings the interface up automatically,
# but doesn't remove it when bringing down.
ifconfig "$IFACE" down
@@ -36,4 +43,3 @@ case $1 in
exit 0
;;
esac
@@ -1,5 +1,7 @@
[Unit]
Description=USB Moded Developer Mode
Wants=network.target
After=network.target
[Service]
Type=oneshot
@@ -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
@@ -1,5 +1,7 @@
[Unit]
Description=USB Moded Tethering Mode
Wants=network.target
After=network.target
[Service]
Type=oneshot