🌿 Hyperion goes green!
Resource consumption during builds has been drastically reduced behind the scenes by streamlining processes and encouraging reuse.
This release also involves significant refactoring of the core elements of the platform and the API.
This version comes with many bug fixes and a number of long-awaited new features and improvements.
You can download the executables from GitHub or even better via our official repositories for Debian, Ubuntu and Fedora.
Installation and update instructions can be found on the comprehensive instructions page. Just select the method you would like to use.
Note
This release supersedes versions 2.1 and 2.1.0, which had some critical issues. Many thanks to those who shared their findings, and we apologise for any inconvenience caused.
Change details
⚠️ Breaking Changes
- Rename "-v" & "--verbose" options to "-i" & "--info to not overlap with version information
JSON-API
- Standardized subscription update elements:
ledcolors-imagestream-update
,ledcolors-ledstream-update
, andlogmsg-update
now return data underdata
instead ofresult
. - Global configuration elements are now separated from instance-specific ones.
✨ Added
- Windows: Added a new grabber using DXGI DDA (Desktop Duplication API) for improved GPU-based performance. Thanks to @davidsansome (#1745, #1753)
- Support for bottom-up image handling using the MF grabber. Thanks to @Thinner77 (#1752)
- Support for FTDI chip-based LED devices (
WS2812
,SK6812
,APA102
). Thanks to @nurikk (#1746) - Support for 16-bit HD108 LEDs via SPI. Thanks to @FutureMan0 (#1826)
- Support for HomeAssistant devices (#1763)
- Support for Skydimo devices
- Support for new Nanoleaf device types
- Support for gaps in matrix layout (#1696)
- Support for NV12 format in Flat-Buffer image streams
- Support for SizeDecimation in Flat-Buffer inputs
- Support for temperature adjustment (#658)
- Configurable grabber inactivity detection interval (#1740)
- Dominant color processing across the full image, applied to all LEDs (#1853)
- Selectable source and target instances in the forwarder
- Import, export, and backup of Hyperion's configuration via UI, JSON-API, and CLI (
--importConfig
,--exportConfig
) (#804) - Option to force read-only mode at startup (
--readonlyMode
) - Effects: Limit update rate to 200 Hz
- Systray: Support for multiple instances
- UI:
- Validation to ensure key ports do not overlap across editors/pages
- Enhanced error dialog with additional details
- LED preview displays the associated instance name
- HTTP Server: Support for Cross-Origin Resource Sharing (CORS) (#1496)
- GitHub builds Added Windows 11 on arm64 platform
JSON-API
- New event subscriptions:
Suspend
,Resume
,Idle
,IdleResume
,Restart
,Quit
- Support for direct/multi-instance addressing within single requests (#809)
serverinfo
subcommands:getInfo
,subscribe
,unsubscribe
,getSubscriptions
,getSubscriptionCommands
- Query/save specific configuration items per instance
- Update frequency limits:
- Images: 25 Hz
- Raw LED colors: 40 Hz
- LED device data: 200 Hz
- Request instance data (e.g., image snapshots, LED colors). Thanks to @xIronic (#1839)
🔧 Changed
-
Instances no longer depend on the first instance; any can be created, started, stopped, or removed independently.
-
Security Fixes:
- Fixed Cross-Site Scripting (XSS) vulnerabilities (CVE-2024-4174, CVE-2024-4175)
- Added detailed logs for "Trust on first use" certificates, especially when a certificate can't be stored
-
Fixes:
- Broken links in README. Thanks to @blueicehaller (#1780)
- RGB24/BGR24 cleanup. Thanks to @Thinner77 (#1748, #1749)
- Clarifying comments in MF grabber. Thanks to @Thinner77 (#1754)
- Nanoleaf LED strip overlap error. Thanks to @geekykayaker (#1844)
- Philips Hue APIv2 support without Entertainment group (#1742)
hyperion-v4l2
screenshot failures (#1722)- Token dialog not closing
- Kodi color calibration and wizard refactor (#1674)
- Forwarding to custom targets (#1713)
- Screen capture error (#1824)
- Python 3.12 crash fixes (#1747)
- UI LED buffer/layout sync issues
- Last effect event not cleared in source overview
- Smoothing issues (#1863)
- Crash when switching display managers (XCB/X11 to Wayland)
- Effect not suspended when instance is stopped (#1586)
- Background effect incorrectly starts when instance is disabled
- Incorrect target directory built during effect export
- Removed stale
_logger
object - Windows: improper use of “/dev/null”
- Fragmented HTTP headers causing "incorrect HTTP headers" error (#1688)
- Misleading "Access Denied" message; disabled "Identify" for the same serial device type (#1737)
- WebUI unreachable via IPv6 (#1871)
- Align install_pr script working with default Qt6 builds & show authentication failures (#1871)
-
Web UI:
- Workaround that Content type is wrongly resoved (#1692)
- Sorted instance lists; active instances are now highlighted in dropdowns
-
Networking/UI:
-
Platform-Specific:
- macOS: Use
ScreenCaptureKit
on macOS 15+ - Standalone grabber no longer captures without a connected remote host
- macOS: Use
-
Layout:
- Removed maximum LED limit from matrix layout schema to match UI (#1804)
-
Refactors:
-
ImageResampler improvements. Thanks to @Thinner77 (#1744)
-
Corrected confusing
_noSignalDetected
logic. Thanks to @Thinner77 (#1731) -
Removed unused libraries for Amlogic. Thanks to @Portisch (#1725)
-
GrabberWrapper constructors (#1714)
-
Database access and validation/migration on startup
-
Forwarder cleanup
-
Flatbuffer client/connection handling
-
Decoupled effect definitions from instances
-
Decoupled WebServer from SSDP handler
-
Python effects: support parallel processing (Python 3.12)
-
Corrected threads' affinity
-
Use of smart pointers
-
UI code streamlining
-
Improved
install_pr
script -
Replaced exceptions by signaling errors in main program and standalone grabbers
-
Enhanced resilience and error handling
-
Build:
- Updated CompileHowto for macOS. Thanks to @Rastafabisch (#1757)
- Added missing
ENABLE_MDNS
. Thanks to @Links2004 (#1711) - Build system now uses pre-built dependencies to reduce resource usage
- Introduced CMakePresets and a CMakeUserPresets template
- GitHub Windows, Pull request artifacts are built with RelWithDebInfo (#1865 )
- Added Debian Trixie to PR-builds for early testing
-
JSON-API
- Consistent token authorization across sessions and single requests
- Improved error messages (e.g., JSON parsing, token issues)
- Random TAN generation per API request (from UI)
- Configuration requests no longer require a running instance
- Commands are ignored during shutdown
- Fixed IPv4-in-IPv6 handling for external connections
- Fixed admin authentication token validation (#1251)
- Fixed error on missing effects in builds
- Corrected mapping type for running instances
🗑️ Removed
JSON-API
- Removed the ability to disable local admin authorization
authorize-adminRequired
is now alwaystrue
- Removed:
session-updates
subscription - Deprecated:
serverinfo/subscribe
- Use
subscribe
/unsubscribe
subcommands instead
- Use
- Deprecated: DirectX grabber in favour of the new DXGI DDA grabber
- Removed "-c" console option on Windows. Hyperion can be started via terminal to get the required console output
Builds
- Removed builds for following operating system LTS or software component versions, as they are End-of-Life and do not receive maintenance nor security updates any longer
- Debian Buster
- Ubuntu Focal Fossa (20.04)
- Qt5