The HyperHDR v20 release was created with the participation of many users (thanks to everyone, especially to @AstaRom) and brings many important new features and fixes. More than several dozen thousand lines of code were changed, including almost the entire application base was rewritten using newer technologies, which then required several months of testing to make sure that it would not negatively affect stability. Thanks to the rebuilt LED rendering model, even more precise refreshing is achieved and the use of Smart Pointers gives us greater control over memory management. Software grabbers have been significantly improved, including hardware acceleration for Pipewire (Linux) and in particular a huge leap in performance and capabilities has occurred in the case of the DirectX grabber for Windows (native system HDR support without LUT and Pixel & Vertex Shader acceleration). At that time, a new HyperSerialPico project was also created, thanks to rp2040 PIO IO co-processor we received a driver offering even more precise timings for LED rendering than ESP32/Esp8266 and it allows the use of ready-made boards with a built-in level shifter: which significantly simplifies the construction of new HyperHDR setups regardless of the platform on which you host it.
Below is the full list of changes. Have fun!
New features:
- Windows/DirectX: use hardware acceleration (pixel & vertex shaders) for software capturing. Fixes issue #688 → #691
- Windows/DirectX: autodetect HDR mode.Fixes issue #690 → #691
- Pipewire DMA & EGL hardware support (Wayland/x11 grabber) #556
- Add video buffer memory caching to Pipewire grabber #691
- Automatic database backup before applying structure changes when installing new version, json backups are saved in standard HyperHDR configuration home directory #691
- Linux: audio stream auto-resume on EPIPE error #691
- Ability to change MQTT Topic. Fixes issue #619 → #691
- MQTT: auto-resume. Fixes issue #570 → #691
- MQTT ability to execute multiply commands in one request. Fixes issue #642 → #691
- Each MQTT subcommand will return full response in the overall result at HyperHDR/JsonAPI/response #691
- Colorized logs #640
- New device discovery service #605
- Add new effect: Rainbow Waves #607
- MQTT: hostname address resolver. Thanks @lougovsk #586
- New JsonAPI method to calculate average color of selected instance #611
- Add automatic LUT downloader & installer #568
- Allow LUT calibration when no USB grabber is present #518
- New JSON API method to update smoothing parameters #352
LED devices:
- Smoothing clock is integrated directly within led driver: no more two separated & unsynchronized clocks for smoothing and led driver, also much more precise refresh times. Discussed here → #691
- Add support for Raspberry Pi Pico (Rp2040) HyperSerialPico #560
- HyperHDR driver for WLED has been switched to WLED Audio-Reactive-Led-Strip (WARLS) protocol removing old 490 LEDs limit https://github.com/Aircoookie/WLED/wiki/UDP-Realtime-Control → #691
- Yeelight: Wizard now supports more models, workaround for music-mode reset, auto-resume support #750 Thanks @ratawhisk
- Force HyperSerial detection #732 Thanks @alex-013
- New features: disable LEDs/components on startup #737
- Support for Pico (rp2040) boards using HyperSPI #691
- Fix over 500LEDs limit for HyperSPI when RPi5 is used #691
- Add support for HD108 led strip, 16/48bits colors #527
- Live update WLED/udpraw LEDs number #564
- ArtNet LED Controller: add toggle to prevent pixel color data split across two artnet universes. Fixes issue #657 → #691
- Workaround for critical Rpi udev bug affecting serial ports #583
Core:
- Refactoring. Migration to C++ Smart Pointers. Move almost all main objects management under control of modern C++ smart pointers, fully control complicated life-cycle and ownership of HyperHDR components #691
- New interface: removed ancient Font Awesome 4 (so 2017...) Migrate to SVG: Bootstrap Icons and Google Material Icons/Symbols #605
- New features: stop processing when user has locked the system #737
- Remove folders nesting #363
- Improved headers including for faster compilation #691
- Pause the USB grabber when all LEDs are off to reduce load #608
- Use optional system libs for compiling #541
- Do not use TurboJPEG for RGB during calibration #508
- Make bonjour use logging utilities. Thanks @nurikk #529
- glibc requirements for DEB installer #402
Platform support:
- SD images are available again and are based on Debian Bullseye, so they will not fit RPi 5: use the official Raspberry Pi installer for this board. It is explained here: link1
- Add native build for Apple M1 / M2 / M3 (arm64) architecture #755
- Add Ubuntu support to HyperHDR and Github Pages APT repository #522
- Update build scripts and include Ubuntu 24.04 LTS
- Upgrade Fedora 38 to 39, Ubuntu 23.04 to 23.10 #667
- Add Arch Linux support #520
Updates:
- Update language file's. Thanks @AstaRom #505
- Upgrade Bootstrap to 5.2.3 / improved 'video live preview' on smartphones #336
- Update Github actions/checkout@v3 #403
- Update Github actions/download@v3 #372
- Update mbedtls to 3.4.0 #589
- Update flatbuffers to v23.5.26 #596
- Update language file's. Thanks @AstaRom #617
- switch libCEC to mainstream since version 6.x is widely available now #691
Bug fixing:
- Windows/DirectX: fix overexposed HDR stream with pixel shader. Fixes issue #689 → #691
- Fix: Fedora uses xz as the package name, not xz-utils #771 Thanks @hsmalley
- Fix LUT loading bug to reduce memory usage by 96MB #766
- Fix typo in LED strip name #670 Thanks @fluchfux
- Fix background music effect #761
- Fix typo #762 Thanks @laurens94
- Fix macOS build #638 #671 #672
- Fix Linux DBus sleep/wakeup handler
- Fix pipewire grabber for non-contiguous DMA memory & EGL #711 Thanks @Mic92
- Fixes for v20beta1 #705
- Fix logging tab that can be empty when opened and add button to copy logs #691
- Fix verbose command line option #723
- Fixed the LUT calibration page by removing potential scrollbars that could interfere with the final result #691
- Stability improvements & bug fixing #605
- Fix QT5.15 issue when building on Windows #605
- Remove depraciated ::set-output from Github Action #390
- V4L: allow setting of V4L device input, fixes #537. Thanks @Thinner77 #540
- JSON API security vulnerability #691
- Improved installers script #691
- Address CodeQL findings #691
- Fix chrome/edge fullscreen detection #519