All checks were successful
image / image (push) Successful in 1h39m0s
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
29 lines
1.4 KiB
Desktop File
29 lines
1.4 KiB
Desktop File
[Unit]
|
|
Description=Extract vendor blobs from the stock Android partitions
|
|
# Must run BEFORE udev coldplug loads the consuming drivers: a sound card
|
|
# that probes without its firmware hard-fails (-2, never retried), and while
|
|
# a later re-probe of the machine driver re-forms the card, that late-formed
|
|
# card has a dead capture path (wcd9378 TX sequencer refuses PS0 - fp6 repo
|
|
# journal/blobs/ 2026-08-29). Only extraction-before-probe yields a fully
|
|
# working card, so this runs pre-coldplug; the manifest rebind lines remain
|
|
# as the fallback for consumers that probed anyway (playback recovers same
|
|
# boot, capture needs the next boot) and for on-device re-extraction after a
|
|
# package upgrade.
|
|
# The dynamic-partition mappings come from the initramfs (device nodes exist
|
|
# pre-udev) and the dests live on the rootfs, so remount-fs ordering is
|
|
# enough. multi-user is a deliberate second Wants: if the early run failed
|
|
# (e.g. no mappings pre-udev), the multi-user start job retries it after
|
|
# udev, where the by-partlabel/make-dynpart-mappings fallbacks work.
|
|
DefaultDependencies=no
|
|
After=systemd-remount-fs.service
|
|
Before=systemd-udev-trigger.service sysinit.target shutdown.target
|
|
Conflicts=shutdown.target
|
|
RequiresMountsFor=/usr/lib/firmware
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
RemainAfterExit=yes
|
|
ExecStart=/usr/lib/fp6-vendor-blobs/extract
|
|
|
|
[Install]
|
|
WantedBy=sysinit.target multi-user.target
|