<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Anthias 2026.08.2 | Screenly</title><description>The web interface warns you when a Raspberry Pi isn't getting enough power, and when the storage it runs from is failing or full.</description><link>https://www.screenly.io/releases/anthias/2026.08.2/</link><language>en</language><atom:link href="https://www.screenly.io/releases/anthias/2026.08.2/rss.xml" rel="self" type="application/rss+xml"/><lastBuildDate>Mon, 17 Aug 2026 00:00:00 +0000</lastBuildDate><item><title>Anthias 2026.08.2: A warning on every page when a Raspberry Pi isn't getting enough power</title><link>https://www.screenly.io/releases/anthias/2026.08.2/under-voltage-warning/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.08.2/under-voltage-warning/</guid><pubDate>Mon, 17 Aug 2026 00:00:00 +0000</pubDate><category>release</category><description>&lt;p&gt;A Raspberry Pi on a weak power supply freezes, glitches and shows stray text along the edge of the screen, and nothing on the player said why. Left alone, a weak supply can also corrupt the memory card until the player stops starting up. From Anthias 2026.08.2, the web interface tells you when it&amp;#39;s happening, with a banner at the top of every page, the Schedule page included.&lt;/p&gt;
&lt;p&gt;The banner has 2 forms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;This player isn&amp;#39;t getting enough power&amp;quot; while the voltage is too low right now.&lt;/li&gt;
&lt;li&gt;&amp;quot;This player briefly lost power&amp;quot; when it dropped earlier and is steady again. It says how many times that happened since the player last restarted, and how long ago the last one was.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Under &amp;quot;What to do&amp;quot;, the first step is the official Raspberry Pi power supply for your model, which the banner calls the fix in almost every case. Then the cable that came with it, unplugging USB drives, hubs and keyboards powered by the player, and not running the player from a TV&amp;#39;s USB socket or a phone charger.&lt;/p&gt;
&lt;p&gt;You can&amp;#39;t dismiss the banner, since a weak supply keeps damaging the card while it&amp;#39;s ignored. It goes away once the player restarts with a supply that holds. When a storage warning shows as well, the power banner comes first, because a bad supply is one of the main reasons cards fail.&lt;/p&gt;
&lt;p&gt;System Info has a new &amp;quot;Power supply&amp;quot; card with the same verdict, how many drops there have been since the last restart, and when the first and most recent were.&lt;/p&gt;
&lt;h2 id="which-players-show-it"&gt;Which players show it&lt;/h2&gt;
&lt;p&gt;Raspberry Pi players: the Pi 2, Pi 3, Pi 4 and Pi 5 images, installed with the installer or through balena. Anthias reads the kernel&amp;#39;s &lt;code&gt;rpi_volt&lt;/code&gt; sensor under &lt;code&gt;/sys/class/hwmon&lt;/code&gt;, which works from inside the containers, so it needs no host agent. On x86 and other boards that have no such sensor, the &amp;quot;Power supply&amp;quot; card says &amp;quot;Not monitored&amp;quot;, and no banner appears.&lt;/p&gt;
&lt;p&gt;The kernel wakes Anthias whenever the reading changes, and every page load reads the sensor again, so the banner is current when you open the page. On current Raspberry Pi kernels, &lt;code&gt;vcgencmd get_throttled&lt;/code&gt; no longer keeps a record of earlier drops, so Anthias counts them itself. The count starts over at every reboot.&lt;/p&gt;
&lt;h2 id="for-developers"&gt;For developers&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;/api/v2/info&lt;/code&gt; has a new &lt;code&gt;under_voltage&lt;/code&gt; object with &lt;code&gt;supported&lt;/code&gt;, &lt;code&gt;active&lt;/code&gt;, &lt;code&gt;seen_since_boot&lt;/code&gt;, &lt;code&gt;first_seen&lt;/code&gt;, &lt;code&gt;last_seen&lt;/code&gt; and &lt;code&gt;count&lt;/code&gt;. Check &lt;code&gt;supported&lt;/code&gt; first: when it&amp;#39;s &lt;code&gt;false&lt;/code&gt;, the device has no sensor and the other fields carry no information. &lt;code&gt;bin/collect_debug.sh&lt;/code&gt; saves the &lt;code&gt;/api/v2/info&lt;/code&gt; response in the bundle as &lt;code&gt;api-info.json&lt;/code&gt;, and also reads the sensor and the kernel&amp;#39;s under-voltage messages directly, for a player too broken to answer.&lt;/p&gt;</description></item><item><title>Anthias 2026.08.2: The web interface warns when a player's storage is failing or full</title><link>https://www.screenly.io/releases/anthias/2026.08.2/storage-health-warnings/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.08.2/storage-health-warnings/</guid><pubDate>Mon, 17 Aug 2026 00:00:00 +0000</pubDate><category>release</category><description>&lt;p&gt;A memory card that is going bad rarely says so. The screen keeps playing what it already has, so nothing looks wrong from the front, while uploads, schedule changes and settings quietly stop sticking. From Anthias 2026.08.2, the player checks the storage it runs from and shows a banner at the top of every page of the web interface when something is wrong. Like the power warning, you can&amp;#39;t dismiss it, and when both show, it sits under the power one.&lt;/p&gt;
&lt;p&gt;The banner names the problem, because each one has a different fix:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;This player has run out of space&amp;quot;: the storage is full. This one isn&amp;#39;t a hardware fault, and the advice is to delete content you no longer need from the Schedule page. Videos are usually what filled it.&lt;/li&gt;
&lt;li&gt;&amp;quot;This player has stopped saving changes&amp;quot;: the storage has switched to read-only. The screen keeps playing, but anything you change is lost at the next restart.&lt;/li&gt;
&lt;li&gt;&amp;quot;This player can&amp;#39;t save anything&amp;quot;: Anthias couldn&amp;#39;t save a small test file, or read back something different from what it wrote.&lt;/li&gt;
&lt;li&gt;&amp;quot;The memory card is returning errors&amp;quot;: storage errors since the player last restarted.&lt;/li&gt;
&lt;li&gt;&amp;quot;The memory card has recorded errors&amp;quot;: errors the filesystem logged earlier, which it keeps across reboots. Saving still works.&lt;/li&gt;
&lt;li&gt;&amp;quot;This player&amp;#39;s storage is wearing out&amp;quot;: built-in storage (eMMC) or an SSD reports that it&amp;#39;s near the end of its rated life, for example with 80 percent or more of its rated writes used. A plain SD card doesn&amp;#39;t report this.&lt;/li&gt;
&lt;li&gt;&amp;quot;The drive is developing bad spots&amp;quot;: an SSD or hard drive reports blocks that have gone bad.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The wording follows the hardware: &amp;quot;memory card&amp;quot; for an SD card, &amp;quot;built-in storage&amp;quot; for eMMC and &amp;quot;drive&amp;quot; for an SSD or hard drive. So does the advice. Every warning except a full disk says to take a backup from Settings while the storage can still be read, and to replace the card or drive. For an SD card it adds to buy an A1 or A2 card from a brand you recognize. Built-in eMMC is soldered to the board, so there the advice is to plan to replace the player.&lt;/p&gt;
&lt;p&gt;System Info has a new storage card next to the &amp;quot;Disk&amp;quot; card, with the same verdict, plus the details for a support conversation: the card&amp;#39;s maker, model and manufacture date, the filesystem&amp;#39;s error count, how much has been written to it, the result of the last write test and, on drives that report it, SMART health, bad blocks and wear.&lt;/p&gt;
&lt;h2 id="how-it-checks"&gt;How it checks&lt;/h2&gt;
&lt;p&gt;An SD card has no health register, so Anthias combines what the kernel does expose: the ext4 error counters stored in the filesystem, a test file it writes and reads back, and the wear registers on eMMC. It reads the counters every minute, and on every page load, and writes the test file every 15 minutes. A full disk shows up through that test, so the &amp;quot;run out of space&amp;quot; banner can take up to 15 minutes to appear. All of this works from inside the containers, so balena installs get the warnings too.&lt;/p&gt;
&lt;p&gt;On the x86, arm64 and Raspberry Pi 5 images, which can run from an SSD, the viewer also reads the drive&amp;#39;s SMART data with &lt;code&gt;smartctl&lt;/code&gt; once an hour. The viewer runs as an unprivileged user, so its image has a sudoers rule that lets that user run only &lt;code&gt;smartctl --json -H -A -i&lt;/code&gt; on a device under &lt;code&gt;/dev/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In Anthias 2026.08.2, a memory card whose product name isn&amp;#39;t valid UTF-8 stopped storage monitoring from starting at all. Anthias 2026.10.0 &lt;a href="https://www.screenly.io/releases/anthias/2026.10.0/fixes-and-improvements/"&gt;fixes that&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="for-developers"&gt;For developers&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;/api/v2/info&lt;/code&gt; has a new &lt;code&gt;storage&lt;/code&gt; object. Check &lt;code&gt;supported&lt;/code&gt; first, then branch on &lt;code&gt;status&lt;/code&gt;, one of &lt;code&gt;ok&lt;/code&gt;, &lt;code&gt;wear&lt;/code&gt;, &lt;code&gt;errors&lt;/code&gt;, &lt;code&gt;full&lt;/code&gt;, &lt;code&gt;failing&lt;/code&gt; or &lt;code&gt;unknown&lt;/code&gt;. &lt;code&gt;errors_count&lt;/code&gt; covers the life of the filesystem and survives reboots. &lt;code&gt;errors_new&lt;/code&gt; and the write test fields reset when the player reboots. &lt;code&gt;bin/collect_debug.sh&lt;/code&gt; adds a &lt;code&gt;storage.txt&lt;/code&gt; to the bundle with block devices, mount flags, the ext4 error counters, card identity, SMART output and the kernel&amp;#39;s storage errors.&lt;/p&gt;</description></item><item><title>Anthias 2026.08.2: Settings flags a player that skips SSL certificate checks, and other fixes</title><link>https://www.screenly.io/releases/anthias/2026.08.2/fixes-and-improvements/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.08.2/fixes-and-improvements/</guid><pubDate>Mon, 17 Aug 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;Notifications in the web interface show their success, error or info icon, and the Load Average card on System Info shows its icon when the load is steady. Both spaces were empty.&lt;/li&gt;
&lt;li&gt;In the Edit asset dialog for a web page, the &amp;quot;Auto-refresh interval (seconds)&amp;quot; and &amp;quot;Custom HTTP headers&amp;quot; labels no longer sit on top of their example text.&lt;/li&gt;
&lt;li&gt;In Settings &amp;gt; Import content, each platform&amp;#39;s import button sits beside its description instead of under it.&lt;/li&gt;
&lt;li&gt;The &amp;quot;Try again&amp;quot; and &amp;quot;Copy ffmpeg command&amp;quot; buttons in the asset dialog have a button style. They showed without one.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="improvements"&gt;Improvements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;When &amp;quot;Verify SSL certificates&amp;quot; is off, Settings shows a &amp;quot;Not secure&amp;quot; badge next to it, so a player that skips certificate checks is easy to spot. It appears as soon as you switch the setting off, before you save.&lt;/li&gt;
&lt;li&gt;The disk chart on System Info no longer shows used space in red. It uses the same colors as the memory chart, and a storage problem shows up in the new storage card instead.&lt;/li&gt;
&lt;li&gt;The import pages under Settings &amp;gt; Import content use the web interface&amp;#39;s own colors. Their progress bar was a blue used nowhere else.&lt;/li&gt;
&lt;li&gt;On a board with little memory, the &amp;quot;Low-RAM mode&amp;quot; note on System Info&amp;#39;s Memory card is in a darker amber that&amp;#39;s easier to read on white.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="for-contributors"&gt;For contributors&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The web interface&amp;#39;s colors, fonts and sizes are defined once, in &lt;code&gt;src/anthias_server/app/static/src/tailwind.css&lt;/code&gt;, with dark values in &lt;code&gt;css/theme-dark.css&lt;/code&gt; next to it. The older SCSS copy, which had been overriding them, is gone, and tests fail if one comes back.&lt;/li&gt;
&lt;li&gt;A design-system page at &lt;code&gt;/_design/&lt;/code&gt; shows every color and component, in light and dark. It exists only in development builds and tests (&lt;code&gt;DEBUG&lt;/code&gt; or &lt;code&gt;IS_TEST&lt;/code&gt;), so production images don&amp;#39;t have the route.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bin/shoot_pages.py&lt;/code&gt; screenshots the web interface pages in both themes and at several window sizes, without the Docker stack.&lt;/li&gt;
&lt;li&gt;The host agent lists network addresses through the kernel&amp;#39;s rtnetlink interface with the Python standard library. The &lt;code&gt;netifaces&lt;/code&gt; and &lt;code&gt;netifaces2&lt;/code&gt; packages are gone, and so is &lt;code&gt;python3-netifaces&lt;/code&gt; in the viewer image. &lt;code&gt;uv sync --group test&lt;/code&gt; works on a plain development machine, where &lt;code&gt;netifaces&lt;/code&gt; used to fail to build.&lt;/li&gt;
&lt;li&gt;The release and hardware-testing guides for coding agents in &lt;code&gt;.claude/skills&lt;/code&gt; add a burn-in run on the test boards before a release is published.&lt;/li&gt;
&lt;li&gt;Tests cover the power and storage checks, SMART parsing, the network address listing and the design-system page.&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>