balena-host-config.json
Rama master · réplica de lectura del repositorio original.
{
"//": [
"Declarative balena fleet host configuration (the config.txt knobs).",
"Source of truth for what .github/workflows/build-balena-disk-image.yaml",
"applies to each `screenly_ose/anthias-*` fleet: it upserts every entry",
"below under the canonical `BALENA_HOST_CONFIG_<key>` name and prunes any",
"config var not listed here (including legacy `RESIN_HOST_CONFIG_*`",
"duplicates), so this file is authoritative. Supervisor vars",
"(RESIN_SUPERVISOR_*) are platform settings, not config.txt, and are out",
"of scope. See docs/balena-fleet-host-config.md for the full audit.",
"",
"Reconciled from the live fleets on 2026-05-30. Corrections vs what was",
"live:",
" * pi4-64 dtoverlay was the malformed `\"vc4-kms-v3d\"` (literal quotes)",
" on the RESIN_ prefix; the quotes stopped the firmware loading the",
" overlay, so the board fell back to firmware-KMS and Qt eglfs_kms",
" (the viewer's renderer since #2905) could not start the display ->",
" boot-splash hang (issue #2947). Stored clean. Its dtparam was",
" `i2c_arm=on,spi=on,audio=on` (plus a bogus trailing `vc4-kms-v3d`).",
" That comma-joined multi-value never round-tripped through balena's",
" config.txt reconcile, so the pi4 supervisor thrashed boot-config and",
" reboot-looped fleet-wide (blocking the 2026.5.2 rollout). Set to",
" `audio=on` to match ansible/roles/system/templates/config.txt.j2",
" (the installer sets only `dtparam=audio=on`); i2c_arm/spi are unused",
" by the viewer. Single-value form is canary-verified to converge.",
" * pi2 / pi3 dtoverlay was on the legacy RESIN_ prefix -> standardized.",
" * pi3-64 is the 64-bit-OS variant of Pi 3 hardware (same BCM2837",
" SoC, balenaOS device-type raspberrypi3-64). config.txt is",
" arch-independent, so it mirrors the pi3 entry; the viewer runs the",
" arm64 Qt6/eglfs_kms image, which is why vc4-kms-v3d (full KMS) is",
" required exactly as on pi4-64.",
" * pi5 carried `gpu_mem=1024`, which a Pi 5 ignores entirely (BCM2712",
" has no firmware memory split; it is CMA-only) -> dropped. Added",
" `cma-512` to the overlay, which docs/board-enablement.md documents as",
" required for 4K HEVC hardware decode.",
"",
"Notes:",
" * rockpi4 (device type rockpi-4b-rk3399) and x86 are declared as {}:",
" config.txt is Raspberry-Pi-firmware-only, so those fleets have no",
" host config. The empty object is still required — the reconcile",
" step hard-fails on a missing board key to keep the prune from",
" wiping a fleet.",
" * gpu_mem is retained on Pi <=4: it still backs the VideoCore hardware",
" video decoders (bcm2835-codec / V4L2 M2M) used for playback.",
" * framebuffer_depth / framebuffer_ignore_alpha are legacy firmware-",
" framebuffer knobs that the full-KMS driver ignores. They are inert,",
" so they are kept as-is rather than churned on working boards."
],
"boards": {
"pi2": {
"dtoverlay": "vc4-kms-v3d",
"gpu_mem": "128",
"disable_overscan": "1",
"framebuffer_depth": "32",
"framebuffer_ignore_alpha": "1"
},
"pi3": {
"dtoverlay": "vc4-kms-v3d",
"gpu_mem": "128",
"disable_overscan": "1",
"framebuffer_depth": "32",
"framebuffer_ignore_alpha": "1"
},
"pi3-64": {
"dtoverlay": "vc4-kms-v3d",
"gpu_mem": "128",
"disable_overscan": "1",
"framebuffer_depth": "32",
"framebuffer_ignore_alpha": "1"
},
"pi4-64": {
"dtoverlay": "vc4-kms-v3d",
"dtparam": "audio=on",
"gpu_mem": "256",
"disable_overscan": "1",
"framebuffer_depth": "32",
"framebuffer_ignore_alpha": "1"
},
"pi5": {
"dtoverlay": "vc4-kms-v3d,cma-512"
},
"x86": {},
"rockpi4": {}
}
}