image completeness: fp6-no-suspend + imsd boot enablement

Two device-critical pieces previously applied only by the dev restore
script: masked sleep targets (idle-suspend resets the WCN combo firmware
and kills wifi ~40min - a device defect, not personalization) and imsd
enabled at boot, gated on /etc/imsd.env existing so unconfigured systems
don't boot a failing unit. A stranger now needs exactly: flash, wifi via
UI, write imsd.env, restart imsd.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Jorijn van der Graaf 2026-08-08 23:46:01 +02:00
commit 05cd1084b7
5 changed files with 40 additions and 2 deletions

View file

@ -0,0 +1,21 @@
# The FP6's wifi and BT share the WCN combo chip; systemd idle-suspend (and
# BT-off) resets the shared firmware and kills wifi for ~40 minutes. Mask
# the sleep targets declaratively - shipped as /dev/null symlinks, the same
# state 'systemctl mask' produces.
maintainer="Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>"
pkgname=fp6-no-suspend
pkgver=1
pkgrel=0
pkgdesc="Mask systemd sleep targets (suspend kills wifi on the FP6)"
url="https://forgejo.catcrafts.net/Catcrafts/fp6-img"
arch="noarch"
license="MIT"
options="!check"
package() {
for t in sleep suspend hibernate hybrid-sleep; do
mkdir -p "$pkgdir/etc/systemd/system"
ln -s /dev/null "$pkgdir/etc/systemd/system/$t.target"
done
}
sha512sums=""

View file

@ -0,0 +1 @@
enable imsd.service

View file

@ -31,6 +31,7 @@ _commit="REPLACED_BY_CI"
source="
imsd-$_commit.tar.gz
org.kde.modem.daemon.desktop
80-imsd.preset
"
builddir="$srcdir/$pkgname"
@ -46,6 +47,18 @@ package() {
make install DESTDIR="$pkgdir"
install -Dm644 "$srcdir"/org.kde.modem.daemon.desktop \
"$pkgdir"/etc/skel/.config/autostart/org.kde.modem.daemon.desktop
# enabled by preset: the unit is a no-op until /etc/imsd.env exists, and
# VoLTE surviving reboots must not depend on a manual systemctl enable
install -Dm644 "$srcdir"/80-imsd.preset \
"$pkgdir"/usr/lib/systemd/system-preset/80-imsd.preset
mkdir -p "$pkgdir"/etc/systemd/system/multi-user.target.wants
ln -s /usr/lib/systemd/system/imsd.service \
"$pkgdir"/etc/systemd/system/multi-user.target.wants/imsd.service
# ...but only actually start once the carrier config exists, so
# unconfigured systems don't boot into a failing unit
mkdir -p "$pkgdir"/usr/lib/systemd/system/imsd.service.d
printf '[Unit]\nConditionPathExists=/etc/imsd.env\n' \
> "$pkgdir"/usr/lib/systemd/system/imsd.service.d/10-require-config.conf
}
systemd() {
@ -57,4 +70,5 @@ systemd() {
sha512sums="
REPLACED_BY_CI imsd-REPLACED_BY_CI.tar.gz
REPLACED_BY_CI org.kde.modem.daemon.desktop
REPLACED_BY_CI 80-imsd.preset
"