<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Anthias 2026.05.1 | Screenly</title><description>Smoother video on the Raspberry Pi 4, a Screen rotation setting, experimental TV power controls and a page that copies your content to Screenly. Videos your board can't play are now refused at upload, and running the installer again replaces lines you added to config.txt.</description><link>https://www.screenly.io/releases/anthias/2026.05.1/</link><language>en</language><atom:link href="https://www.screenly.io/releases/anthias/2026.05.1/rss.xml" rel="self" type="application/rss+xml"/><lastBuildDate>Thu, 28 May 2026 00:00:00 +0000</lastBuildDate><item><title>Anthias 2026.05.1: Smoother video on Raspberry Pi 4, and uploads are checked against what your board can decode</title><link>https://www.screenly.io/releases/anthias/2026.05.1/video-decode-and-codec-check/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.05.1/video-decode-and-codec-check/</guid><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><category>improvement</category><description>&lt;p&gt;If you show video on a Raspberry Pi 4, it plays more smoothly from Anthias 2026.05.1. On every board, check your video files: a video your board can&amp;#39;t decode is now refused when you add it, including H.264 on a Raspberry Pi 5, and you convert it on your own computer with a command Anthias gives you.&lt;/p&gt;
&lt;p&gt;From this release, video on a Raspberry Pi 4, a Raspberry Pi 5, x86 and generic arm64 boards plays inside the viewer itself, instead of in a separate &lt;code&gt;mpv&lt;/code&gt; player that shared the screen with it. In the project&amp;#39;s own testing, a 1080p60 H.264 video on a Raspberry Pi 4 went from dropping most of its frames to dropping none. The Raspberry Pi 2 and 3 keep using VLC.&lt;/p&gt;
&lt;p&gt;On a Raspberry Pi 4 the viewer now runs at 1920x1080, also on a 4K display, so web pages and images show at 1080p there too.&lt;/p&gt;
&lt;h2 id="uploads-are-checked-not-re-encoded"&gt;Uploads are checked, not re-encoded&lt;/h2&gt;
&lt;p&gt;Anthias 2026.05.0 re-encoded a video on the device when its codec wasn&amp;#39;t one the board played directly, which could keep a small board busy for a long time. Anthias 2026.05.1 never re-encodes anything. When you add a video, it reads the codec and accepts the file only if your board can decode it:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Board&lt;/th&gt;
&lt;th&gt;Codecs accepted&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Raspberry Pi 2 and 3&lt;/td&gt;
&lt;td&gt;H.264&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Raspberry Pi 4&lt;/td&gt;
&lt;td&gt;H.264 and HEVC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Raspberry Pi 5&lt;/td&gt;
&lt;td&gt;HEVC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;x86&lt;/td&gt;
&lt;td&gt;H.264 and HEVC&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The Raspberry Pi 5 has no H.264 decoder Anthias can use, which is why it takes HEVC only. For 4K on a Raspberry Pi 4, the project&amp;#39;s board notes recommend HEVC, since 4K H.264 is more than that board&amp;#39;s decoder keeps up with. Other 64-bit ARM boards are covered in &lt;a href="https://www.screenly.io/releases/anthias/2026.05.1/generic-arm64-armbian/"&gt;the generic arm64 entry&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A video that doesn&amp;#39;t pass shows a &amp;quot;Failed&amp;quot; label in the content list. Click it and the &amp;quot;Processing failed&amp;quot; dialog says which codec was refused and which ones your board supports. It also shows an &lt;code&gt;ffmpeg&lt;/code&gt; command with your file name filled in, and a &amp;quot;Copy command&amp;quot; button, so you can re-encode the file on your own computer and upload the result.&lt;/p&gt;
&lt;p&gt;The check applies to uploads in the web interface and through the API, and to videos Anthias downloads, from YouTube or from a URL posted to the API.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If this affects you:&lt;/strong&gt; on a Raspberry Pi 5, an H.264 video, which Anthias 2026.05.0 played as it was, is now refused. On every board, a video in a codec outside the table (VP9 or MPEG-4, for example), which 2026.05.0 re-encoded for you, is now refused, and so is HEVC on a Raspberry Pi 2 or 3. Re-encode those files to a codec in the table before you upload them. On a Raspberry Pi 5, &lt;a href="https://www.screenly.io/releases/anthias/2026.07.0/pi5-h264-video/"&gt;Anthias 2026.07.0&lt;/a&gt; accepts H.264 again.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Anthias 2026.05.1: Posting a video URL to the API now downloads the file</title><link>https://www.screenly.io/releases/anthias/2026.05.1/api-downloads-video-urls/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.05.1/api-downloads-video-urls/</guid><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><category>improvement</category><description>&lt;p&gt;If a script or integration of yours adds videos to Anthias through the API by URL, those videos now download to the player and play from there, so the player needs disk space for each one. Videos added in the web interface aren&amp;#39;t affected.&lt;/p&gt;
&lt;p&gt;When you create an asset through the API with &lt;code&gt;mimetype&lt;/code&gt; set to &lt;code&gt;video&lt;/code&gt; and an &lt;code&gt;http://&lt;/code&gt; or &lt;code&gt;https://&lt;/code&gt; URL that points at a single video file, Anthias now downloads the file to the device and plays it from there. The asset shows as &amp;quot;Processing&amp;quot; until the download and the &lt;a href="https://www.screenly.io/releases/anthias/2026.05.1/video-decode-and-codec-check/"&gt;codec check&lt;/a&gt; finish. Before, Anthias stored the URL and played it from the origin server every time, so playback depended on that server being reachable.&lt;/p&gt;
&lt;p&gt;This applies to API v1.2 and v2. v1 and v1.1 keep storing the URL as it is.&lt;/p&gt;
&lt;h2 id="what-counts-as-a-downloadable-video"&gt;What counts as a downloadable video&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;URLs that end in &lt;code&gt;.mp4&lt;/code&gt;, &lt;code&gt;.webm&lt;/code&gt;, &lt;code&gt;.mov&lt;/code&gt;, &lt;code&gt;.mkv&lt;/code&gt;, &lt;code&gt;.avi&lt;/code&gt;, &lt;code&gt;.m4v&lt;/code&gt; or &lt;code&gt;.ogv&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;URLs with no file extension, when the server answers a &lt;code&gt;HEAD&lt;/code&gt; request with a &lt;code&gt;video/*&lt;/code&gt; content type. If the server doesn&amp;#39;t answer that way, the URL is kept as a stream, as before.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Live streams stay as they were and play from the origin: &lt;code&gt;rtsp://&lt;/code&gt;, &lt;code&gt;rtmp://&lt;/code&gt;, &lt;code&gt;srt://&lt;/code&gt;, &lt;code&gt;udp://&lt;/code&gt; and &lt;code&gt;mms://&lt;/code&gt; URLs, and HLS, DASH and Smooth Streaming manifests (&lt;code&gt;.m3u8&lt;/code&gt;, &lt;code&gt;.mpd&lt;/code&gt;, &lt;code&gt;.m3u&lt;/code&gt;, &lt;code&gt;.ism&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;A download is capped at 5 GiB and 15 minutes. If it fails, because the server returns an error, the response isn&amp;#39;t a video, or the file is too large, the asset shows &amp;quot;Failed&amp;quot; with the reason.&lt;/p&gt;
&lt;p&gt;The &amp;quot;From URL&amp;quot; tab in the web interface is unchanged and still stores the URL without downloading it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If this affects you:&lt;/strong&gt; if you post video URLs to API v1.2 or v2, the device now needs enough free disk space for each file, and a video in a codec your board can&amp;#39;t decode is refused. If you want a URL to keep playing from its origin, use a streaming URL or API v1 or v1.1.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Anthias 2026.05.1: Experimental HDMI-CEC controls turn the display on and off</title><link>https://www.screenly.io/releases/anthias/2026.05.1/hdmi-cec-display-power/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.05.1/hdmi-cec-display-power/</guid><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><category>release</category><description>&lt;p&gt;If the screen is a TV, you can now switch it on or off from Anthias&amp;#39;s Settings page. The controls are experimental, and on a Raspberry Pi 2, 3 or 4 they only work from &lt;a href="https://www.screenly.io/releases/anthias/2026.08.1/hdmi-cec-rewrite/"&gt;Anthias 2026.08.1&lt;/a&gt;, which fixes them.&lt;/p&gt;
&lt;p&gt;Settings has a new &amp;quot;Display power&amp;quot; section, marked Experimental, with &amp;quot;Turn display on&amp;quot; and &amp;quot;Turn display off&amp;quot; buttons. They send the command to the connected display over HDMI-CEC, and a message tells you whether the command was sent. The section only appears when the device has a CEC adapter: &lt;code&gt;/dev/cec0&lt;/code&gt; on a Raspberry Pi 5, x86 or arm64 board, or &lt;code&gt;/dev/vchiq&lt;/code&gt; on the older Raspberry Pi models. On a Raspberry Pi 2, 3 or 4 the controls couldn&amp;#39;t work in this release: System info showed &amp;quot;CEC error&amp;quot; and the buttons failed.&lt;/p&gt;
&lt;p&gt;Whether the TV obeys is up to the TV. A command the display doesn&amp;#39;t answer within 10 seconds comes back as an error.&lt;/p&gt;
&lt;h2 id="raspberry-pi-5"&gt;Raspberry Pi 5&lt;/h2&gt;
&lt;p&gt;On a Raspberry Pi 5 the CEC device wasn&amp;#39;t passed into the Anthias containers, so the &amp;quot;Display Power (CEC)&amp;quot; card on the System info page read &amp;quot;CEC error&amp;quot;. Upgrading to Anthias 2026.05.1 passes &lt;code&gt;/dev/cec0&lt;/code&gt; and &lt;code&gt;/dev/cec1&lt;/code&gt; through, and that&amp;#39;s also what makes the new buttons appear there. On x86 and arm64 boards the upgrade passes &lt;code&gt;/dev/cec0&lt;/code&gt; through when the board has one.&lt;/p&gt;
&lt;h2 id="for-developers"&gt;For developers&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;POST /api/v2/display/on&lt;/code&gt; and &lt;code&gt;POST /api/v2/display/off&lt;/code&gt; do the same thing. They return 200 when the command was sent, 502 when the display or adapter refused it or didn&amp;#39;t respond, and 503 when the device has no CEC adapter.&lt;/p&gt;</description></item><item><title>Anthias 2026.05.1: Anthias copies your content to Screenly from Settings</title><link>https://www.screenly.io/releases/anthias/2026.05.1/copy-content-to-screenly/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.05.1/copy-content-to-screenly/</guid><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><category>release</category><description>&lt;p&gt;If you&amp;#39;re moving from Anthias to Screenly, the cloud-managed product from the same team, you no longer need a script to bring your content along. Settings now has a &amp;quot;Migrate to Screenly&amp;quot; section, and its &amp;quot;Start migration&amp;quot; button takes you through the move:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Sign up or sign in to Screenly, from the link on the page.&lt;/li&gt;
&lt;li&gt;Create an API token in Screenly (the page tells you where: Settings &amp;gt; Security &amp;gt; API Tokens), and paste it in. Anthias checks the token before going further, and doesn&amp;#39;t store it on the device.&lt;/li&gt;
&lt;li&gt;Choose which content to copy. Everything starts selected.&lt;/li&gt;
&lt;li&gt;Start the migration and watch the progress bar. Each file that fails shows its own error without stopping the rest, and a retry button runs the failed ones again.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Files that live on the player, such as images and videos, are uploaded from the device to Screenly. Content that is a URL, such as a web page or a stream, is sent as a link. Everything lands in a group called &amp;quot;Migrated from Anthias&amp;quot;. Nothing already in your Screenly account changes. Anthias doesn&amp;#39;t check for copies, though, so running the migration twice uploads the content twice.&lt;/p&gt;
&lt;p&gt;The page uses Screenly API v4.1 and replaces the &lt;code&gt;tools/migrate_assets_to_screenly.py&lt;/code&gt; script, which is removed in this release.&lt;/p&gt;</description></item><item><title>Anthias 2026.05.1: Anthias installs on Armbian and other 64-bit ARM boards, as best effort</title><link>https://www.screenly.io/releases/anthias/2026.05.1/generic-arm64-armbian/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.05.1/generic-arm64-armbian/</guid><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><category>release</category><description>&lt;p&gt;If you have a Rock Pi, Orange Pi or Banana Pi in a drawer, you can now run Anthias on it, as best effort. Images and web pages work on any of these boards, and video works on the Rock Pi 4.&lt;/p&gt;
&lt;p&gt;Before, &lt;code&gt;install.sh&lt;/code&gt; stopped with &amp;quot;Unsupported Raspberry Pi model&amp;quot; on anything that wasn&amp;#39;t a Raspberry Pi or an x86 PC. From Anthias 2026.05.1 it treats any other 64-bit ARM (&lt;code&gt;aarch64&lt;/code&gt;) board as a generic &lt;code&gt;arm64&lt;/code&gt; device, skips the Raspberry Pi boot changes (&lt;code&gt;config.txt&lt;/code&gt;, &lt;code&gt;cmdline.txt&lt;/code&gt;), and installs the same web interface, scheduler and viewer. The boards named in the project&amp;#39;s README as tested are the Rock Pi 4, Rock 5, Orange Pi 5 and Banana Pi M5.&lt;/p&gt;
&lt;h2 id="what-to-know-before-you-try-it"&gt;What to know before you try it&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Use the Debian-based Armbian image for your board (Bookworm or Trixie). The installer sets up Docker from Docker&amp;#39;s Debian repository, so an Ubuntu-based Armbian image fails at the first &lt;code&gt;apt update&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;On a generic &lt;code&gt;arm64&lt;/code&gt; board, Anthias refuses video uploads, because it can&amp;#39;t tell which codecs the board handles. Images and web pages work.&lt;/li&gt;
&lt;li&gt;The Rock Pi 4 is the 1 board Anthias recognizes by name. It accepts H.264 and HEVC uploads there, and decodes them in software. In the project&amp;#39;s testing, 1080p H.264 dropped about 1 frame every 14 seconds, while 1080p HEVC dropped about a fifth of its frames.&lt;/li&gt;
&lt;li&gt;Audio goes to the system&amp;#39;s &lt;code&gt;default&lt;/code&gt; ALSA device. If your HDMI output needs something else, set it in &lt;code&gt;~/.asoundrc&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The Anthias boot splash usually doesn&amp;#39;t show on these boards, so the kernel&amp;#39;s boot messages stay on screen until the viewer starts.&lt;/li&gt;
&lt;li&gt;Wired network interfaces named &lt;code&gt;end0&lt;/code&gt;, common on Armbian, are recognized, so the splash screen shows the board&amp;#39;s IP address.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Anthias 2026.05.1: A Screen rotation setting turns x86 displays to portrait</title><link>https://www.screenly.io/releases/anthias/2026.05.1/screen-rotation-setting/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.05.1/screen-rotation-setting/</guid><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><category>release</category><description>&lt;p&gt;People have asked for a portrait setting since 2021. Settings now has a &amp;quot;Screen rotation&amp;quot; dropdown with 4 choices:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Landscape (0°)&lt;/li&gt;
&lt;li&gt;Portrait (90°)&lt;/li&gt;
&lt;li&gt;Landscape, inverted (180°)&lt;/li&gt;
&lt;li&gt;Portrait, inverted (270°)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On an x86 player, pick one and save, and the whole display turns: web pages, images and video. There&amp;#39;s no reboot and nothing to set in the compositor.&lt;/p&gt;
&lt;p&gt;On Raspberry Pi boards, Anthias 2026.05.1 doesn&amp;#39;t fully apply the setting yet. On a Raspberry Pi 2, 3 or 4, video turns but web pages and images stay upright, and on a Raspberry Pi 5 or a generic arm64 board nothing turns. Keep rotating those displays the way you do today. The Pi 4 turns everything from &lt;a href="https://www.screenly.io/releases/anthias/2026.06.1/screen-rotation-works-on-raspberry-pi-4/"&gt;Anthias 2026.06.1&lt;/a&gt;, the Pi 5 and generic arm64 boards from &lt;a href="https://www.screenly.io/releases/anthias/2026.07.0/screen-rotation-pi5/"&gt;2026.07.0&lt;/a&gt;, and the Pi 2 and Pi 3 from &lt;a href="https://www.screenly.io/releases/anthias/2026.07.3/screen-rotation-the-same-on-every-board/"&gt;2026.07.3&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/device_settings&lt;/code&gt; has a new &lt;code&gt;screen_rotation&lt;/code&gt; field, with the values &lt;code&gt;0&lt;/code&gt;, &lt;code&gt;90&lt;/code&gt;, &lt;code&gt;180&lt;/code&gt; and &lt;code&gt;270&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Anthias 2026.05.1: Boards with 1 GB of RAM run in a low-memory mode</title><link>https://www.screenly.io/releases/anthias/2026.05.1/low-ram-mode-for-1-gb-boards/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.05.1/low-ram-mode-for-1-gb-boards/</guid><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><category>improvement</category><description>&lt;p&gt;A board with 1 GB of RAM has little room for the viewer, a web page and a large video at the same time. From Anthias 2026.05.1, a board with less than 1.5 GiB runs in a low-memory mode. That covers every Raspberry Pi 2 and 3, and the 1 GB versions of the Raspberry Pi 4 and the Rock Pi 4. The mode makes 2 changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The viewer doesn&amp;#39;t load the next web page ahead of time. Each page loads when its turn comes, so you see a brief black screen between web pages.&lt;/li&gt;
&lt;li&gt;A video with more pixels than 1920x1080 is refused at upload, even when its codec is fine. The &amp;quot;Failed&amp;quot; message explains the limit, and the &lt;code&gt;ffmpeg&lt;/code&gt; command it shows scales the file down to fit.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Memory card on the System info page shows a &amp;quot;Low-RAM mode&amp;quot; note when the mode is on. Boards with 2 GB or more are unaffected.&lt;/p&gt;
&lt;h2 id="for-developers"&gt;For developers&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;memory&lt;/code&gt; object in &lt;code&gt;/api/v2/info&lt;/code&gt; has a new &lt;code&gt;low_ram&lt;/code&gt; field, &lt;code&gt;true&lt;/code&gt; when the mode is on.&lt;/p&gt;</description></item><item><title>Anthias 2026.05.1: Players boot quietly, and the installer now overwrites config.txt</title><link>https://www.screenly.io/releases/anthias/2026.05.1/quiet-boot-and-boot-config/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.05.1/quiet-boot-and-boot-config/</guid><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><category>improvement</category><description>&lt;p&gt;From Anthias 2026.05.1, a Raspberry Pi boots to the Anthias splash without a rainbow screen, scrolling text or a login prompt first, and an x86 player skips the scrolling text too. If you&amp;#39;ve added your own lines to &lt;code&gt;config.txt&lt;/code&gt; on a Raspberry Pi, such as an overlay for a HAT or a forced display mode, copy them somewhere before you run the installer to upgrade, because it now rewrites that file.&lt;/p&gt;
&lt;p&gt;A player in a lobby shouldn&amp;#39;t show a rainbow screen, scrolling kernel messages or a login prompt before the content starts. The installer sets a Raspberry Pi up for a quiet boot: the firmware&amp;#39;s rainbow splash is off, the kernel prints nothing to the screen, and there&amp;#39;s no login prompt on the first console. On x86, the installer adds the &lt;code&gt;quiet&lt;/code&gt; and &lt;code&gt;splash&lt;/code&gt; options to GRUB, so the Anthias splash shows instead of kernel text.&lt;/p&gt;
&lt;h2 id="configtxt-and-cmdlinetxt"&gt;config.txt and cmdline.txt&lt;/h2&gt;
&lt;p&gt;On a Raspberry Pi, the installer now writes &lt;code&gt;config.txt&lt;/code&gt; and &lt;code&gt;cmdline.txt&lt;/code&gt; in the boot partition (&lt;code&gt;/boot/firmware&lt;/code&gt; on Raspberry Pi OS Bookworm and Trixie) from a template, every time it runs. Before, it changed individual lines in &lt;code&gt;config.txt&lt;/code&gt; and left the rest alone.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lines you added to &lt;code&gt;config.txt&lt;/code&gt; are replaced. A custom &lt;code&gt;dtoverlay&lt;/code&gt;, &lt;code&gt;hdmi_group&lt;/code&gt; or overscan line won&amp;#39;t survive the next run.&lt;/li&gt;
&lt;li&gt;The template sets &lt;code&gt;disable_overscan=1&lt;/code&gt;, &lt;code&gt;display_auto_detect=1&lt;/code&gt; and &lt;code&gt;dtparam=audio=on&lt;/code&gt;. On a Raspberry Pi 5 it also sets &lt;code&gt;dtoverlay=vc4-kms-v3d,cma-512&lt;/code&gt;, which 4K HEVC playback needs.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cmdline.txt&lt;/code&gt; is built from the &lt;code&gt;cmdline.txt.orig&lt;/code&gt; copy the installer saved on its first run. Only the &lt;code&gt;root=&lt;/code&gt; entry and any &lt;code&gt;cfg80211.&lt;/code&gt; options (the Wi-Fi country setting from &lt;code&gt;raspi-config&lt;/code&gt;) are kept from it. Other options in that file are dropped.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If this affects you:&lt;/strong&gt; if you&amp;#39;ve added your own lines to &lt;code&gt;config.txt&lt;/code&gt; or &lt;code&gt;cmdline.txt.orig&lt;/code&gt;, such as an overlay for a HAT or a forced display mode, copy them somewhere before you run &lt;code&gt;install.sh&lt;/code&gt; to upgrade. Once it runs, they&amp;#39;re gone, and adding them back by hand only lasts until the next time it runs.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Anthias 2026.05.1: Forms in the web interface work behind an HTTPS proxy</title><link>https://www.screenly.io/releases/anthias/2026.05.1/proxy-and-https-form-errors/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.05.1/proxy-and-https-form-errors/</guid><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><category>fix</category><description>&lt;p&gt;If you reach Anthias through something that adds HTTPS in front of it, such as a Caddy sidecar, a Cloudflare Tunnel or Tailscale Serve, sign-in, uploads and saving settings could fail with a 403 page saying &amp;quot;Your session expired&amp;quot;, and uploads with &amp;quot;Upload failed&amp;quot;. From Anthias 2026.05.1 those requests go through without any change on your side, as long as the browser and Anthias agree on the host name. The same goes for a browser that keeps using HTTPS after you turned SSL off.&lt;/p&gt;
&lt;h2 id="when-the-proxy-changes-the-host-name"&gt;When the proxy changes the host name&lt;/h2&gt;
&lt;p&gt;Some proxies, such as IIS ARR, send Anthias a different host name than the one in your browser, and then the request is still refused. The simplest fix is to have the proxy pass the original &lt;code&gt;Host&lt;/code&gt; header through: &lt;code&gt;proxy_set_header Host $host;&lt;/code&gt; in nginx, &lt;code&gt;ProxyPreserveHost On&lt;/code&gt; in Apache, or &lt;code&gt;preserveHostHeader=&amp;quot;true&amp;quot;&lt;/code&gt; in IIS ARR. Caddy and Traefik do this by default.&lt;/p&gt;
&lt;p&gt;If you can&amp;#39;t change the proxy, Anthias also reads a &lt;code&gt;CSRF_TRUSTED_ORIGINS&lt;/code&gt; environment variable in the &lt;code&gt;anthias-server&lt;/code&gt; container. Set it to the address people use, for example &lt;code&gt;https://signage.example.com&lt;/code&gt;, and separate several addresses with commas. It is empty by default.&lt;/p&gt;</description></item><item><title>Anthias 2026.05.1: Free disk space in the info API now reads 15.0 GB instead of 15G</title><link>https://www.screenly.io/releases/anthias/2026.05.1/info-api-free-space-format/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.05.1/info-api-free-space-format/</guid><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><category>improvement</category><description>&lt;p&gt;If a script or monitoring tool of yours reads free disk space from the Anthias API, it needs a small change, because the figure now reads like &lt;code&gt;15.0 GB&lt;/code&gt; instead of &lt;code&gt;15G&lt;/code&gt;. Otherwise, you&amp;#39;ll only notice the new form on the System info page.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;free_space&lt;/code&gt; in the response of &lt;code&gt;/api/v1/info&lt;/code&gt; and &lt;code&gt;/api/v2/info&lt;/code&gt; used to be a short string such as &lt;code&gt;15G&lt;/code&gt;. From Anthias 2026.05.1 it is a number with 1 decimal, a non-breaking space and a full unit, such as &lt;code&gt;15.0 GB&lt;/code&gt;. The units are &lt;code&gt;KB&lt;/code&gt;, &lt;code&gt;MB&lt;/code&gt;, &lt;code&gt;GB&lt;/code&gt; and &lt;code&gt;TB&lt;/code&gt;. The disk figures on the System info page are written the same way.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If this affects you:&lt;/strong&gt; anything that parses &lt;code&gt;free_space&lt;/code&gt; from the info API, such as a monitoring script, needs to accept the new form, including the non-breaking space between the number and the unit.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Anthias 2026.05.1: Removed content leaves the screen right away, and other fixes</title><link>https://www.screenly.io/releases/anthias/2026.05.1/fixes-and-improvements/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.05.1/fixes-and-improvements/</guid><pubDate>Thu, 28 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;Deleting or turning off content that is on screen takes effect right away. Before, an image set to show for an hour stayed up until the hour ended, which people had reported since 2025.&lt;/li&gt;
&lt;li&gt;Deleting content in the web interface also deletes its file from &lt;code&gt;~/anthias_assets&lt;/code&gt;. Before, the content disappeared from the list and the file kept using disk space.&lt;/li&gt;
&lt;li&gt;With audio set to HDMI on a Raspberry Pi 4 or 5, sound plays through the HDMI port that has a display connected, and the first port when both do. Before, it always used the first port.&lt;/li&gt;
&lt;li&gt;Videos uploaded through API v1 and v1.1 now go through the same codec check as other uploads. Before, such a video never became playable and could sit on &amp;quot;Processing&amp;quot; indefinitely.&lt;/li&gt;
&lt;li&gt;Content that has shown &amp;quot;Processing&amp;quot; for more than an hour, for example after a restart in the middle of a job, is retried automatically.&lt;/li&gt;
&lt;li&gt;Asking the API for content that doesn&amp;#39;t exist returns a 404 instead of a 500 error.&lt;/li&gt;
&lt;li&gt;On fresh installs of Anthias 2026.05.0, the host agent service failed to start, so the device&amp;#39;s IP address wasn&amp;#39;t detected and &lt;code&gt;/api/v2/info&lt;/code&gt; took more than a minute to answer. Installing or upgrading to 2026.05.1 fixes it.&lt;/li&gt;
&lt;li&gt;Upgrading an install that dates from before the Anthias rename no longer fails on a leftover &lt;code&gt;srly-ose-redis&lt;/code&gt; container holding port 6379.&lt;/li&gt;
&lt;li&gt;On x86, scheduled background tasks, such as clearing out leftover upload files, no longer stop at random.&lt;/li&gt;
&lt;li&gt;The Anthias icon shows in Raspberry Pi Imager.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="improvements"&gt;Improvements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Web pages in the viewer are requested in the device&amp;#39;s language, so sites with several languages show the right one. Anthias reads the language from &lt;code&gt;/etc/default/locale&lt;/code&gt; (which &lt;code&gt;raspi-config&lt;/code&gt; and &lt;code&gt;update-locale&lt;/code&gt; write) when you install or upgrade, so a change applies after the next upgrade. On balena, set a &lt;code&gt;LANG&lt;/code&gt; device variable.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;install.sh&lt;/code&gt; shows a menu of the 10 most recent releases, with &amp;quot;latest&amp;quot; (the tip of &lt;code&gt;master&lt;/code&gt;, which is now the testing channel) and &amp;quot;other&amp;quot; for typing a tag. Its prompts use whiptail instead of gum, and it stops with a clear message if you run it as root, with &lt;code&gt;sh&lt;/code&gt; instead of &lt;code&gt;bash&lt;/code&gt;, or without network access.&lt;/li&gt;
&lt;li&gt;The boot splash fills a 4K display. Before, it showed as a 1080p picture in the middle of a black screen.&lt;/li&gt;
&lt;li&gt;Video downloads from a URL and the Screenly migration identify themselves with a &lt;code&gt;User-Agent&lt;/code&gt; of &lt;code&gt;Anthias/&amp;lt;release&amp;gt; (+https://anthias.screenly.io)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The splash screen no longer falls back to an IP address saved at install time, which could be out of date once the network changed. It shows &amp;quot;Detecting network…&amp;quot; until it has the current address.&lt;/li&gt;
&lt;li&gt;Security fixes in the web interface and the API, and Django 5.2.14 and Pillow 12.2.0, which include security fixes of their own. Upgrading is recommended.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="upgrade-notes"&gt;Upgrade notes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The viewer&amp;#39;s browser stores its data in a new place, and the old data isn&amp;#39;t copied. After upgrading, web pages start with an empty browser profile, so a page that relied on a sign-in saved in the viewer needs signing in again.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="for-contributors"&gt;For contributors&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Pushes to &lt;code&gt;master&lt;/code&gt; now publish container images only, as the testing channel. Balena deploys and disk images are built when a GitHub release is published, with balena-cli 25, and &lt;code&gt;rpi-imager.json&lt;/code&gt; is attached to each release.&lt;/li&gt;
&lt;li&gt;The WebView is built as a stage of the viewer image, instead of in a release workflow of its own.&lt;/li&gt;
&lt;li&gt;The viewer binary is now &lt;code&gt;AnthiasViewer&lt;/code&gt; and its D-Bus service is &lt;code&gt;anthias.viewer&lt;/code&gt;. The Qt source moved from &lt;code&gt;webview/&lt;/code&gt; to &lt;code&gt;src/anthias_webview/&lt;/code&gt;. The viewer reads the active playlist and its settings from &lt;code&gt;/api/v2/viewer/playlist&lt;/code&gt; and &lt;code&gt;/api/v2/viewer/settings&lt;/code&gt;, which only accept a token the viewer holds.&lt;/li&gt;
&lt;li&gt;Video on Raspberry Pi 4, Raspberry Pi 5, x86 and arm64 no longer goes through an &lt;code&gt;mpv&lt;/code&gt; process. Playback uses QtMultimedia inside the viewer, with the Raspberry Pi &lt;code&gt;libav&lt;/code&gt; packages pinned in &lt;code&gt;docker/_rpt1-ffmpeg-pin.j2&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs/board-enablement.md&lt;/code&gt; describes a repeatable playback test, and &lt;code&gt;bin/generate_board_enablement_testbed.sh&lt;/code&gt; builds the 8-clip set it uses (H.264 and HEVC, 1080p and 4K, 30 and 60 fps).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bin/test_webview_cpp.sh&lt;/code&gt; runs the viewer&amp;#39;s C++ tests.&lt;/li&gt;
&lt;li&gt;The installer adds &lt;code&gt;docker-buildx-plugin&lt;/code&gt; on every board, so building the images on the device works.&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;marketing-screenshots&lt;/code&gt; workflow, run by hand, captures screenshots from the Playwright integration suite for a slider on the Anthias website. FAQ entries on the website have links you can share, and the README points to the website for supported hardware.&lt;/li&gt;
&lt;li&gt;New tests cover remote video downloads, the Screenly migration, the CSRF origin check, board detection and the viewer&amp;#39;s video player.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dependencies updated.&lt;/p&gt;</description></item></channel></rss>