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:
parent
283996b507
commit
05cd1084b7
5 changed files with 40 additions and 2 deletions
|
|
@ -50,7 +50,8 @@ PCSCF=<your carrier's P-CSCF IPv6 address>
|
||||||
```
|
```
|
||||||
|
|
||||||
Find it in a stock-firmware capture or your carrier's IMS documentation, then
|
Find it in a stock-firmware capture or your carrier's IMS documentation, then
|
||||||
`systemctl restart imsd`. See the
|
`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
|
[imsd README](https://forgejo.catcrafts.net/Catcrafts/imsd) for the full
|
||||||
variable reference and carrier assumptions.
|
variable reference and carrier assumptions.
|
||||||
|
|
||||||
|
|
|
||||||
21
aports/device/fp6-no-suspend/APKBUILD
Normal file
21
aports/device/fp6-no-suspend/APKBUILD
Normal 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=""
|
||||||
1
aports/modem/imsd/80-imsd.preset
Normal file
1
aports/modem/imsd/80-imsd.preset
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
enable imsd.service
|
||||||
|
|
@ -31,6 +31,7 @@ _commit="REPLACED_BY_CI"
|
||||||
source="
|
source="
|
||||||
imsd-$_commit.tar.gz
|
imsd-$_commit.tar.gz
|
||||||
org.kde.modem.daemon.desktop
|
org.kde.modem.daemon.desktop
|
||||||
|
80-imsd.preset
|
||||||
"
|
"
|
||||||
builddir="$srcdir/$pkgname"
|
builddir="$srcdir/$pkgname"
|
||||||
|
|
||||||
|
|
@ -46,6 +47,18 @@ package() {
|
||||||
make install DESTDIR="$pkgdir"
|
make install DESTDIR="$pkgdir"
|
||||||
install -Dm644 "$srcdir"/org.kde.modem.daemon.desktop \
|
install -Dm644 "$srcdir"/org.kde.modem.daemon.desktop \
|
||||||
"$pkgdir"/etc/skel/.config/autostart/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() {
|
systemd() {
|
||||||
|
|
@ -57,4 +70,5 @@ systemd() {
|
||||||
sha512sums="
|
sha512sums="
|
||||||
REPLACED_BY_CI imsd-REPLACED_BY_CI.tar.gz
|
REPLACED_BY_CI imsd-REPLACED_BY_CI.tar.gz
|
||||||
REPLACED_BY_CI org.kde.modem.daemon.desktop
|
REPLACED_BY_CI org.kde.modem.daemon.desktop
|
||||||
|
REPLACED_BY_CI 80-imsd.preset
|
||||||
"
|
"
|
||||||
|
|
|
||||||
3
build.sh
3
build.sh
|
|
@ -100,6 +100,7 @@ mkdir -p "$WORK/pmaports/temp"
|
||||||
cp -r aports/device/linux-postmarketos-qcom-milos "$WORK/pmaports/device/testing/"
|
cp -r aports/device/linux-postmarketos-qcom-milos "$WORK/pmaports/device/testing/"
|
||||||
cp -r aports/device/soc-fairphone-fp6-audio "$WORK/pmaports/device/"
|
cp -r aports/device/soc-fairphone-fp6-audio "$WORK/pmaports/device/"
|
||||||
cp -r aports/device/callaudioshim "$WORK/pmaports/device/"
|
cp -r aports/device/callaudioshim "$WORK/pmaports/device/"
|
||||||
|
cp -r aports/device/fp6-no-suspend "$WORK/pmaports/device/"
|
||||||
cp -r aports/main/postmarketos-config-nftables "$WORK/pmaports/main/"
|
cp -r aports/main/postmarketos-config-nftables "$WORK/pmaports/main/"
|
||||||
cp -r aports/modem/imsd "$WORK/pmaports/modem/"
|
cp -r aports/modem/imsd "$WORK/pmaports/modem/"
|
||||||
# Alpine forks carrying the GNSS patches (libqmi !470 unreleased; MM !1463
|
# Alpine forks carrying the GNSS patches (libqmi !470 unreleased; MM !1463
|
||||||
|
|
@ -150,7 +151,7 @@ aports = $WORK/pmaports
|
||||||
device = fairphone-fp6
|
device = fairphone-fp6
|
||||||
ui = plasma-mobile
|
ui = plasma-mobile
|
||||||
systemd = always
|
systemd = always
|
||||||
extra_packages = soc-fairphone-fp6-audio,callaudioshim,imsd
|
extra_packages = soc-fairphone-fp6-audio,callaudioshim,imsd,fp6-no-suspend
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
pmbootstrap checksum linux-postmarketos-qcom-milos
|
pmbootstrap checksum linux-postmarketos-qcom-milos
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue