- Shell 85.6%
- Python 14.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Alpine's community/libqmi is at upstream 1c972b8a (2026-10-05), 23 commits past the 30f3e998 this fork pinned "just past the !470 merge", with the qmi-glib 1.39.1 the GNSS patches in modemmanager need. No patch was left; the fork's one remaining addition, the FP6-tuned build (-march/-mtune, whose gain was never measured), goes with it. build.sh loses its tarball, checksum and build steps. The registry still serves the fork (1.39.1_git20260808-r100 and -r101), and that version outranks Alpine's 1.38.0_git* line, so with the aport alone installed phones keep the fork and a fresh image takes it back at its first 'apk upgrade': the fork's packages are deleted from the registry with this push. Fresh images then install Alpine's libqmi and keep it. Installed phones keep the fork until 'apk upgrade -a' downgrades them to Alpine's or Alpine's version passes 1.39.1; the new modemmanager works on either (verified on the FP6 with both). pmbootstrap keeps a local package repository in its work dir and consults it before every other repository. Whether that dir survives from one CI run to the next is not established (run 60 rebuilt libqmi, modemmanager and libcamera at the versions run 58 had built, which says it did not), but nothing guarantees it either way, so build.sh deletes any libqmi/qmi-utils apks found there before building, re-indexes the repository from the files present and fails the run if any are left; the publish step skips libqmi-*/qmi-utils-* as the backstop. pmbootstrap's 'zap --pkgs-local-mismatch' cannot do this: with systemd selected it looks at packages/systemd-edge, not at the packages/edge the builds land in. |
||
| .forgejo/workflows | ||
| aports | ||
| .gitignore | ||
| apk-resign.py | ||
| build.sh | ||
| check-aports.sh | ||
| install.sh | ||
| README.md | ||
| registry-fetch.py | ||
fp6-img
Flashable postmarketOS images for the
Fairphone 6/6+, built nightly from the
Catcrafts milos-linux
combined-stable kernel branch, with
imsd (userspace VoLTE)
preinstalled.
Maintained by Jorijn van der Graaf (TheMightyCat) at Catcrafts.
What works
Everything on the combined-stable branch: display, touch, wifi, cellular
data, NFC (reader), speaker audio, microphone, IMU, magnetometer, barometer,
ambient light/proximity, fingerprint unlock through
fingerprintd, plus
VoLTE calls (both directions) through imsd.
Flashing
Download fp6-img.tar.xz from the latest release and unlock the bootloader
(Fairphone's official process).
Install: with the phone in fastboot mode,
tar xf fp6-img.tar.xz
cd fp6-img
./install.sh
Two images are published per release, same kernel and packages, different
shell: fp6-img.tar.xz boots Plasma Mobile (calls through Plasma
Dialer), fp6-img-phosh.tar.xz boots Phosh (calls through GNOME Calls,
via imsd's imsd-ofono backend). Pick one; the install steps are identical.
install.sh erases dtbo, flashes the rootfs, RAM-boots the kernel, writes the boot partition from
inside Linux where the bootloader's NV-wipe cannot see it, then reads the modem
NV back and reports the result. The bootloader never writes boot.
Default login: user / 147147 (same as official postmarketOS images).
Never re-lock the bootloader with a custom image installed.
VoLTE configuration
imsd is installed but needs your carrier's P-CSCF address:
# /etc/imsd.env
PCSCF=<your carrier's P-CSCF IPv6 address>
Find it via android adb using adb shell dumpsys telephony.registry, then
systemctl restart imsd (the service is enabled at boot and waits for this
file to exist). See the
imsd README for the full
variable reference and carrier assumptions.