<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Anthias 2026.05.2 | Screenly</title><description>Fixes for Raspberry Pi 4 and balena x86 players stuck on the boot splash, and for Raspberry Pi 2 and Pi 3 players with no screen attached. Players flashed from a disk image now get new releases on their own.</description><link>https://www.screenly.io/releases/anthias/2026.05.2/</link><language>en</language><atom:link href="https://www.screenly.io/releases/anthias/2026.05.2/rss.xml" rel="self" type="application/rss+xml"/><lastBuildDate>Sun, 31 May 2026 00:00:00 +0000</lastBuildDate><item><title>Anthias 2026.05.2: Raspberry Pi 4 and balena x86 players no longer get stuck on the boot splash</title><link>https://www.screenly.io/releases/anthias/2026.05.2/boot-splash-hangs-on-x86-and-raspberry-pi-4/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.05.2/boot-splash-hangs-on-x86-and-raspberry-pi-4/</guid><pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate><category>fix</category><description>&lt;p&gt;If your Raspberry Pi 4, or an x86 PC set up from the balena image, started up to the Anthias splash screen and never got as far as your content, Anthias 2026.05.2 fixes it. You only need to do something if you run your own balena fleet; the settings to check are below.&lt;/p&gt;
&lt;p&gt;The 2 boards had different causes.&lt;/p&gt;
&lt;h2 id="x86-on-balena"&gt;x86 on balena&lt;/h2&gt;
&lt;p&gt;On an x86 PC running the balena image, the screen stayed on the splash while the viewer&amp;#39;s logs filled with lines like &lt;code&gt;Could not make device fd drm master&lt;/code&gt; and &lt;code&gt;Swapchain for output 'DP-1' failed test&lt;/code&gt;. balenaOS leaves the boot splash (Plymouth) running, and on x86 it kept hold of the display. The viewer now closes the splash before it starts. Installs on Debian aren&amp;#39;t affected, since the splash has already closed there by the time the viewer starts.&lt;/p&gt;
&lt;p&gt;If you deploy to your own balena fleet from a compose file you maintain, the &lt;code&gt;anthias-viewer&lt;/code&gt; service needs 2 additions for this: the environment variable &lt;code&gt;DBUS_SYSTEM_BUS_ADDRESS=unix:path=/host/run/dbus/system_bus_socket&lt;/code&gt; and the label &lt;code&gt;io.balena.features.dbus: '1'&lt;/code&gt;. &lt;code&gt;docker-compose.balena.yml.tmpl&lt;/code&gt; in the repository has both.&lt;/p&gt;
&lt;h2 id="raspberry-pi-4"&gt;Raspberry Pi 4&lt;/h2&gt;
&lt;p&gt;In Anthias 2026.05.1, a Raspberry Pi 4 could stay on the splash for 2 reasons.&lt;/p&gt;
&lt;p&gt;On some boots, the viewer opened the graphics device that has no display attached (&lt;code&gt;/dev/dri/card1&lt;/code&gt; when the display was on &lt;code&gt;card0&lt;/code&gt;), found no screen, and never started. This happened on Raspberry Pi OS installs as well as on balena. The viewer now looks for the device with the display connector every time it starts, and logs its choice, for example &lt;code&gt;start_viewer: eglfs DRM device = /dev/dri/card0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;On the official Pi 4 balena fleet, the setting that loads the full KMS graphics driver was stored with literal quotes, as &lt;code&gt;&amp;quot;vc4-kms-v3d&amp;quot;&lt;/code&gt;. The firmware couldn&amp;#39;t read it, so the driver didn&amp;#39;t load and the viewer couldn&amp;#39;t start. The fleet setting is now &lt;code&gt;vc4-kms-v3d&lt;/code&gt;, without quotes, and devices on the fleet restart once to pick it up. If you run your own Pi 4 fleet, check that &lt;code&gt;BALENA_HOST_CONFIG_dtoverlay&lt;/code&gt; (or the older &lt;code&gt;RESIN_HOST_CONFIG_dtoverlay&lt;/code&gt;) is &lt;code&gt;vc4-kms-v3d&lt;/code&gt; with no quotes around it.&lt;/p&gt;</description></item><item><title>Anthias 2026.05.2: Upgraded devices no longer crash-loop on a permission error in anthias.conf</title><link>https://www.screenly.io/releases/anthias/2026.05.2/upgraded-devices-config-permission-crash-loop/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.05.2/upgraded-devices-config-permission-crash-loop/</guid><pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate><category>fix</category><description>&lt;p&gt;From Anthias 2026.05.2, a device upgraded from an older release starts the viewer normally. Before, some upgraded devices restarted the viewer in a loop, with this line in the logs:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PermissionError: [Errno 13] Permission denied: '/data/.anthias/anthias.conf'&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The viewer runs as an unprivileged &lt;code&gt;viewer&lt;/code&gt; user, and on those devices the configuration folder belonged to root. Now, every time the viewer container starts, it gives the &lt;code&gt;viewer&lt;/code&gt; user ownership of &lt;code&gt;/data/.anthias&lt;/code&gt; and everything in it. On a Raspberry Pi OS or Debian install, that folder is &lt;code&gt;~/.anthias&lt;/code&gt; on the device.&lt;/p&gt;
&lt;p&gt;You don&amp;#39;t need to do anything. The fix applies the first time the new release starts.&lt;/p&gt;</description></item><item><title>Anthias 2026.05.2: Raspberry Pi 2 and Pi 3 wait for a display instead of crash-looping</title><link>https://www.screenly.io/releases/anthias/2026.05.2/pi-2-and-pi-3-wait-for-a-display/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.05.2/pi-2-and-pi-3-wait-for-a-display/</guid><pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate><category>fix</category><description>&lt;p&gt;From Anthias 2026.05.2, a Raspberry Pi 2 or Pi 3 that boots without a working display waits for one, and starts the viewer by itself once a screen is connected or switched on, with no restart. That covers a panel that&amp;#39;s powered off, a TV switched on after the Pi, and a TV that&amp;#39;s slow to bring up HDMI.&lt;/p&gt;
&lt;p&gt;Before, the viewer couldn&amp;#39;t start in that situation. It logged &lt;code&gt;Unable to figure out framebuffer device&lt;/code&gt; and &lt;code&gt;no screens available&lt;/code&gt;, crashed with &lt;code&gt;malloc(): unaligned tcache chunk detected&lt;/code&gt;, and the container restarted in a loop.&lt;/p&gt;
&lt;p&gt;While it waits, the viewer logs &lt;code&gt;no framebuffer (/dev/fb0) yet&lt;/code&gt; once, then a reminder every minute.&lt;/p&gt;</description></item><item><title>Anthias 2026.05.2: Devices installed from a disk image now get updates over the air</title><link>https://www.screenly.io/releases/anthias/2026.05.2/disk-images-no-longer-pinned-to-a-release/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.05.2/disk-images-no-longer-pinned-to-a-release/</guid><pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate><category>improvement</category><description>&lt;p&gt;From Anthias 2026.05.2, a device flashed from a disk image gets new stable releases over the air, the same way a device added through balenaHub does. Before, it stayed on the version you downloaded, even after new releases came out, and the installation guide said so.&lt;/p&gt;
&lt;p&gt;The image still comes with the release it was built from already on it, so the device doesn&amp;#39;t have to download Anthias before it starts. Once it&amp;#39;s online, it follows the balena fleet for its board and installs each stable release as it&amp;#39;s published.&lt;/p&gt;
&lt;p&gt;The first boot needs a network connection. The image doesn&amp;#39;t carry the fleet&amp;#39;s boot settings, such as the graphics driver, so a new device starts on balenaOS defaults, fetches the fleet&amp;#39;s settings and restarts once into them.&lt;/p&gt;
&lt;p&gt;This applies to devices flashed from a 2026.05.2 image or newer. Devices on the official fleets that were flashed from an older image catch up too, from &lt;a href="https://www.screenly.io/releases/anthias/2026.06.3/fixes-and-improvements/"&gt;Anthias 2026.06.3&lt;/a&gt;, when an hourly job started clearing their pin. The answer to &amp;quot;How do I update Anthias?&amp;quot; in the FAQ and the disk image section of the installation guide now describe it.&lt;/p&gt;</description></item><item><title>Anthias 2026.05.2: Raspberry Pi 5 no longer fills its storage with core dumps, and other fixes</title><link>https://www.screenly.io/releases/anthias/2026.05.2/fixes-and-improvements/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.05.2/fixes-and-improvements/</guid><pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate><category>roundup</category><description>&lt;h2 id="fixes"&gt;Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;On a Raspberry Pi 5, the check that reads whether the display is on, which runs every 5 minutes, left a core dump of several megabytes each time. Enough of them could fill the storage and put Anthias services into a restart loop. Neither the check nor the &amp;quot;Turn display on&amp;quot; and &amp;quot;Turn display off&amp;quot; buttons leave core dumps now.&lt;/li&gt;
&lt;li&gt;The balena Releases page shows the real version of each Anthias release, such as &lt;code&gt;2026.5.2&lt;/code&gt;, instead of &lt;code&gt;0.0.0+revN&lt;/code&gt;. That holds for the official fleets and for fleets you deploy to with &lt;code&gt;bin/deploy_to_balena.sh&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="improvements"&gt;Improvements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Raspberry Pi 5 devices on the official balena fleet get &lt;code&gt;dtoverlay=vc4-kms-v3d,cma-512&lt;/code&gt;, the line &lt;code&gt;install.sh&lt;/code&gt; has written on a Pi 5 &lt;a href="https://www.screenly.io/releases/anthias/2026.05.1/quiet-boot-and-boot-config/"&gt;since Anthias 2026.05.1&lt;/a&gt;. The project&amp;#39;s board notes list it as required for 4K HEVC hardware decoding.&lt;/li&gt;
&lt;li&gt;The installation guide and a new FAQ entry cover the &amp;quot;Error writing to storage device&amp;quot; failure when flashing with Raspberry Pi Imager 2.0.2 through at least 2.0.7 on macOS. Update Raspberry Pi Imager past 2.0.7, or decompress the image with &lt;code&gt;zstd -d&lt;/code&gt; and flash the &lt;code&gt;.img&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The balena fleet guide uses &lt;code&gt;balena env set&lt;/code&gt; instead of &lt;code&gt;balena env add&lt;/code&gt; for the host configuration commands.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="for-contributors"&gt;For contributors&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;balena-host-config.json&lt;/code&gt; declares the &lt;code&gt;config.txt&lt;/code&gt; settings for each official balena fleet, and &lt;code&gt;docs/balena-fleet-host-config.md&lt;/code&gt; explains each one. On every release, the &amp;quot;Build Balena Disk Images&amp;quot; workflow sets them on the fleets and removes any other host configuration variable there, including legacy &lt;code&gt;RESIN_HOST_CONFIG_*&lt;/code&gt; ones. Fleets you run yourself aren&amp;#39;t touched.&lt;/li&gt;
&lt;li&gt;A new &amp;quot;Deploy to Balena (manual)&amp;quot; workflow redeploys an existing release to one fleet or all 5 without rebuilding disk images. It and the release workflow share &lt;code&gt;bin/balena_ota_deploy.sh&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;viewer&lt;/code&gt; user has a fixed UID and GID of 1000 and exists in both the server and viewer images, so it resolves to the same owner in every container that shares &lt;code&gt;/data&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uv.lock&lt;/code&gt; was regenerated to match the dev dependency pins in &lt;code&gt;pyproject.toml&lt;/code&gt;, which the &lt;code&gt;uv sync --frozen&lt;/code&gt; step in the image builds checks.&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>