aports: extract vendor blobs before udev coldplug so first-boot audio fully works
The preset fix (6ecc1dc) makes the unit run, but multi-user is too late: the
sound card probes at ~21 s, hard-fails (-2, no retry) on the missing ACF, and
the extractor's amp rebind at ~60 s cannot re-form a card whose machine
driver already failed. Re-probing the machine driver does re-form it, but a
late-formed card has a dead capture path - the wcd9378 TX sequencer refuses
PS0 (act_ps 0x3) until the next boot. So rebinding after the fact can never
fully win; extraction has to happen before the drivers probe.
- fp6-vendor-blobs.service: DefaultDependencies=no, run after remount-fs and
before systemd-udev-trigger, so blobs exist before module coldplug.
multi-user stays a second Wants as a post-udev retry if the early run
failed (by-partlabel/make-dynpart-mappings fallbacks need udev).
- aw88261-acf.manifest: add 'rebind platform sound' so the fallback path at
least recovers playback the same boot (capture then heals on reboot).
- fp6-vendor-blobs.post-upgrade (pkgrel 1): systemctl preset + immediate
extract, so installs of the 2026-08-24 image (unit shipped disabled, no
version bump to deliver the preset) finally heal via plain apk upgrade.
- soc-fairphone-fp6-audio pkgrel 1: carries the manifest change.
Verified on the dev phone with the exact staged bytes (sha256-compared):
simulated fresh install (ACF removed, reboot) extracts at 13.3 s, coldplug
probes the amps at 15.1 s, card init at 20.9 s loads the ACF cleanly, and a
1 kHz speaker-to-mic loopback passes on that same first boot with zero TX
sequencer warnings; next boot takes the all-dests-present fast path in 25 ms.
Evidence: fp6 repo journal/blobs/, 2026-08-29.
Assisted-by: Claude:claude-fable-5
This commit is contained in:
parent
fbb0ed2a37
commit
01ee20ddba
5 changed files with 50 additions and 15 deletions
|
|
@ -14,13 +14,14 @@
|
|||
maintainer="Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>"
|
||||
pkgname=fp6-vendor-blobs
|
||||
pkgver=1
|
||||
pkgrel=0
|
||||
pkgrel=1
|
||||
pkgdesc="On-device extraction of vendor blobs from the stock Android partitions"
|
||||
url="https://forgejo.catcrafts.net/Catcrafts/fp6-img"
|
||||
arch="noarch"
|
||||
license="MIT"
|
||||
# fallback mapper for when the initramfs didn't map the dynamic partitions
|
||||
depends="make-dynpart-mappings"
|
||||
install="$pkgname.post-upgrade"
|
||||
options="!check"
|
||||
source="
|
||||
fp6-vendor-blobs-extract
|
||||
|
|
@ -35,8 +36,12 @@ package() {
|
|||
"$pkgdir"/usr/lib/systemd/system/fp6-vendor-blobs.service
|
||||
# enabled unconditionally: the unit is a fast no-op once every manifest
|
||||
# dest exists, and blobs appearing on first boot must not depend on a
|
||||
# manual systemctl enable
|
||||
mkdir -p "$pkgdir"/etc/systemd/system/multi-user.target.wants
|
||||
# manual systemctl enable. sysinit = the real (pre-coldplug) run;
|
||||
# multi-user = the post-udev retry if the early run failed (see unit)
|
||||
mkdir -p "$pkgdir"/etc/systemd/system/sysinit.target.wants \
|
||||
"$pkgdir"/etc/systemd/system/multi-user.target.wants
|
||||
ln -s /usr/lib/systemd/system/fp6-vendor-blobs.service \
|
||||
"$pkgdir"/etc/systemd/system/sysinit.target.wants/fp6-vendor-blobs.service
|
||||
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
|
||||
|
|
@ -51,6 +56,6 @@ package() {
|
|||
|
||||
sha512sums="
|
||||
a71b2c86f980734d0aae6e135b26272fe52ae5603050bea52f55f7e74c8bd98c62b6194047711248d4fef40851792adc47d77c40016d99a0d68ecd2459894b80 fp6-vendor-blobs-extract
|
||||
e2c03e5016f1848c57e6160ce432530b181ff5d34a5aaf1822f0ffa5fe71d16691657ada4a5789c4d4209e14e83f43aab072d01f644b07b93648f91e2a7bb0ca fp6-vendor-blobs.service
|
||||
b4c290095d9f39515378dfef08de720ce49324210342aa13c131dfce1103785e796e6f821f0c659671a4c44b46f466ce0e03f11f216fdcdee2a99db5e7970800 fp6-vendor-blobs.service
|
||||
9e79dd0aed13f11a71282aa24b2a26331e85c105e25ab0c0fed6189b8c300769a5f4308b18b91d9855868d658ad3a57c03e26c9b11bd27fd5e03f9a5decbbd6a fp6-vendor-blobs.preset
|
||||
"
|
||||
|
|
|
|||
Loading…
Reference in a new issue