Highlights ✨
A stability and maintenance release hardening the balena fleets and the
upgrade path after the 2026.05.1 HW-decode overhaul. No new user-facing
features — all fixes.
Bug Fixes 🐞
- balena x86 — frozen on boot splash — quit Plymouth before
cage
starts so the viewer actually gets DRM master. Previously Plymouth held
DRM master on x86 (libseat: Could not make device fd drm master), every
atomic commit was rejected, and the screen stayed on the splash while the
logs flooded withSwapchain for output 'DP-1' failed test(#2955) - balena Pi 4 — no display — repair the full-KMS graphics overlay and
manage fleetconfig.txtas IAC (balena-host-config.json), fixing a
malformeddtoverlay="vc4-kms-v3d"that stopped the eglfs renderer from
starting (#2947, #2949) - Headless / slow-HDMI boards — crash loop — the linuxfb viewer (pi2/pi3)
now waits for/dev/fb0instead of aborting with heap corruption when no
display is connected at boot; it self-heals on hotplug (#2959) - Pi 5 — CEC probe core dumps — stop the HDMI-CEC diagnostics probe from
dumping cores (which could fill the SD card and crash-loop services) (#2957) - Upgraded devices — viewer crash loop —
chownthe config directory so
upgraded devices stop crash-looping on aPermissionErrorwriting
anthias.conf(#2953) - Deterministic file ownership — pin the viewer UID/GID across all images
so bind-mounted config/asset ownership is stable across rebuilds (#2958) - balena Releases page — stamp the real CalVer version into
balena.yml
so releases show2026.5.xinstead of0.0.0+revN(#2952)
Docs 📚
- Document the rpi-imager 2.0.x macOS write-error when flashing images, and
the workaround (#2948, #2950)
Upgrade Notes 🧭
- No action required. Devices upgrading from an older build pick up the
config-dirchownand the pinned viewer UID/GID automatically, which
resolves theanthias.confPermissionErrorcrash loop on first boot of
the new release (#2953, #2958). - balena Pi 4 fleets have their
config.txtreconciled from
balena-host-config.jsonat deploy time; any hand-edited dashboard
config vars outside that file are pruned (#2947).
What's Changed
Other Changes 🔧
- docs: rpi-imager macOS "Error writing to storage device" guidance (#2948) by @vpetersson in #2950
- fix(balena): repair Pi 4 graphics overlay + manage fleet host config as IAC (#2947) by @vpetersson in #2949
- fix(viewer): chown the config dir so upgraded devices don't crash-loop by @vpetersson in #2953
- chore(deps): regenerate uv.lock to match dev-dependency pin bumps by @vpetersson in #2956
- fix(diagnostics): stop CEC probe from dumping cores on Pi 5 by @vpetersson in #2957
- fix(docker): pin viewer UID/GID across all images for deterministic ownership by @vpetersson in #2958
- fix(viewer): wait for /dev/fb0 instead of crash-looping when headless by @vpetersson in #2959
- fix(balena): quit Plymouth before cage so x86 viewer gets DRM master by @vpetersson in #2955
- fix(balena): stamp real release version into balena.yml by @vpetersson in #2952
- chore(release): bump to 2026.05.2 by @vpetersson in #2960
Full Changelog: v2026.05.1...v2026.05.2