From 6ecc1dc87b596c19aa93b42dfe31a72729f7af0c Mon Sep 17 00:00:00 2001 From: Jorijn van der Graaf Date: Fri, 28 Aug 2026 00:57:56 +0200 Subject: [PATCH 1/2] fp6-vendor-blobs: ship a systemd preset so the unit stays enabled The package installs a multi-user.target.wants symlink, but that alone does not survive image build: pmbootstrap runs systemctl preset-all, which removes manually-installed .wants links for any unit whose preset does not enable it. The 2026-08-24 image therefore shipped the service as 'disabled; preset: disabled' and it never ran, so aw88261_acf.bin was never extracted from the stock vendor partition and a fresh install came up with no sound card at all. Reproduced and verified on the dev phone: with no preset file installed, systemctl preset leaves the unit disabled; with it, the unit comes back enabled and stays enabled across a full preset-all. Investigation and evidence: fp6 repo journal/blobs/, 2026-08-28. Assisted-by: Claude:claude-fable-5 --- aports/device/fp6-vendor-blobs/APKBUILD | 9 +++++++++ aports/device/fp6-vendor-blobs/fp6-vendor-blobs.preset | 7 +++++++ 2 files changed, 16 insertions(+) create mode 100644 aports/device/fp6-vendor-blobs/fp6-vendor-blobs.preset diff --git a/aports/device/fp6-vendor-blobs/APKBUILD b/aports/device/fp6-vendor-blobs/APKBUILD index b1e6d74..d0d793c 100644 --- a/aports/device/fp6-vendor-blobs/APKBUILD +++ b/aports/device/fp6-vendor-blobs/APKBUILD @@ -25,6 +25,7 @@ options="!check" source=" fp6-vendor-blobs-extract fp6-vendor-blobs.service + fp6-vendor-blobs.preset " package() { @@ -38,10 +39,18 @@ package() { mkdir -p "$pkgdir"/etc/systemd/system/multi-user.target.wants ln -s /usr/lib/systemd/system/fp6-vendor-blobs.service \ "$pkgdir"/etc/systemd/system/multi-user.target.wants/fp6-vendor-blobs.service + # ...and a preset, because the symlink alone does NOT survive: image + # build runs `systemctl preset-all`, which removes .wants links for any + # unit not enabled by a preset. That is what shipped the 2026-08-24 + # image with the service `disabled; preset: disabled` -- no blob + # extracted, no sound card. See journal/blobs/ 2026-08-28. + install -Dm644 "$srcdir"/fp6-vendor-blobs.preset \ + "$pkgdir"/usr/lib/systemd/system-preset/50-fp6-vendor-blobs.preset mkdir -p "$pkgdir"/usr/share/fp6-vendor-blobs/manifest.d } sha512sums=" a71b2c86f980734d0aae6e135b26272fe52ae5603050bea52f55f7e74c8bd98c62b6194047711248d4fef40851792adc47d77c40016d99a0d68ecd2459894b80 fp6-vendor-blobs-extract e2c03e5016f1848c57e6160ce432530b181ff5d34a5aaf1822f0ffa5fe71d16691657ada4a5789c4d4209e14e83f43aab072d01f644b07b93648f91e2a7bb0ca fp6-vendor-blobs.service +9e79dd0aed13f11a71282aa24b2a26331e85c105e25ab0c0fed6189b8c300769a5f4308b18b91d9855868d658ad3a57c03e26c9b11bd27fd5e03f9a5decbbd6a fp6-vendor-blobs.preset " diff --git a/aports/device/fp6-vendor-blobs/fp6-vendor-blobs.preset b/aports/device/fp6-vendor-blobs/fp6-vendor-blobs.preset new file mode 100644 index 0000000..b935173 --- /dev/null +++ b/aports/device/fp6-vendor-blobs/fp6-vendor-blobs.preset @@ -0,0 +1,7 @@ +# The package also ships the multi-user.target.wants symlink, but a +# `systemctl preset-all` (pmbootstrap runs one while building the image) +# strips manually-installed .wants links for any unit whose preset does not +# enable it -- which left the service `disabled; preset: disabled` in the +# 2026-08-24 image and so no aw88261_acf.bin and no sound card on a fresh +# install. This preset is what makes the enable survive that. +enable fp6-vendor-blobs.service From d1a673940541c3f5b8fcbaf467254fe55e15132a Mon Sep 17 00:00:00 2001 From: Jorijn van der Graaf Date: Fri, 28 Aug 2026 00:59:45 +0200 Subject: [PATCH 2/2] readme change --- README.md | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index c42aa32..fdd08a3 100644 --- a/README.md +++ b/README.md @@ -14,10 +14,7 @@ Maintained by [Jorijn van der Graaf](https://catcrafts.net/about) Everything on the `combined-stable` branch: display, touch, wifi, cellular data, NFC (reader), speaker audio, microphone, IMU, magnetometer, barometer, -ambient light/proximity — plus VoLTE calls (both directions) through imsd. - -Verified on exactly one device / one carrier (KPN NL). Reports from other -carriers are very welcome. +ambient light/proximity plus VoLTE calls (both directions) through imsd. ## Flashing @@ -52,23 +49,4 @@ Find it in a stock-firmware capture or your carrier's IMS documentation, then `systemctl restart imsd` (the service is enabled at boot and waits for this file to exist). See the [imsd README](https://forgejo.catcrafts.net/Catcrafts/imsd) for the full -variable reference and carrier assumptions. - -## How it builds - -`build.sh` drives [pmbootstrap](https://gitlab.postmarketos.org/postmarketOS/pmbootstrap) -with the `aports/` overlay in this repository: - -- `device/linux-postmarketos-qcom-milos` — the pmaports kernel aport, - repointed at `combined-stable` with the exact kernel config the development FP6 runs. -- `modem/imsd` — imsd, packaged from source. Its `provides=81voltd` keeps the - conflicting modem-firmware IMS helper off the image (two IMS stacks cannot - share one PDN). -- `main/postmarketos-config-nftables` — adds the `-imsd` subpackage accepting - imsd's IPsec-protected SIP ports on the IMS PDN (auto-installed alongside - imsd). -- `device/catcrafts-fp6-repo` — subscribes the installed system to the - [Catcrafts apk registry](https://forgejo.catcrafts.net/Catcrafts/-/packages) - (signing key + `/etc/apk/repositories` entry). CI publishes every built - package there, so `apk upgrade` delivers kernel/imsd/GNSS updates between - image releases. \ No newline at end of file +variable reference and carrier assumptions. \ No newline at end of file