Replies: 32 comments 7 replies
-
Hi
That's by design, only when HyperHDR is run as a GUI application it's able to display a systray (BTW the systray has changed recently and it's using ayatana-appindicator3/gtk3 so you are welcome to test it). It would be very undesirable and dangerous if daemon services had access to the user's desktop. |
Beta Was this translation helpful? Give feedback.
-
Sure, are you planning to release a new version soon? The current systray has a problem: the effects section is not scrollable, causing it to take up more than the entire screen height. I'm not sure if this issue is due to the systray itself or a misconfiguration with GTK, as I'm not using a preconfigured desktop environment. Additionally, I noticed that the music effects do not work properly. The lights start when I play something, but they continue even after the music has stopped. It seems like HyperHDR is sending too much data to the LEDs. If I pause the music for a few seconds and then resume, after some time the LEDs turn off briefly and then they too resume their activity.
Regarding daemon services accessing the user's desktop, why would this be undesirable and dangerous? Can you explain or provide a resource? The recent xz bug has made me more curious about security and best practices. |
Beta Was this translation helpful? Give feedback.
-
The old taskbar is powered by QT and has some of their "magic" in it. They probably also use GTK or something similar at some stage (BTW Systray API in Linux is a mess and they are just starting to talk about unification between Plasma/Gnome, meanwhile GTK4 broke compatibility with ayatana-appindicator3). I'm not saying the new one is better (but it has a new feature like instance selection), but it uses a different low-level API that we can control to some extent.
I don't think music effects have a very high render rate, but it's probably higher than Pipewire (rather low capturing rate only when the screen has changed). But that's probably too much for the 115200 baud Adalight device. Generally, it is recommended to use one of our projects, e.g. HyperSerialPico, which reaches easily around 4Mb. For your device and for example 250 RGB LEDs (RGBW requires even more bandwidth) is: 250 * 3 (bytes) * (8 bits) = 6000 bits, so 115200/6000 ~ 19 FPS is a super optimal assumption, but ex Arduino (one very slow core) takes some time to render the received frame, so 19FPS will never be achievable in such conditions. Here you have this arrangement of "holes" in which Arduino receives data and prepare buffer ("black" section on the screenshot) to emulate Neopixel protocol which is kind of tricky and then starts to render the frame ("white" section), regardless of the full saturation of communication with the PC (and here Arduino uses even higher speed of 500 000 bauds): from https://github.com/awawa-dev/HyperSerialEsp8266 |
Beta Was this translation helpful? Give feedback.
-
Yes, I should probably upgrade my current setup (old ATmega328p with ws2812b) for something more performant and maybe switch to a strip with white channel, since I can calibrate all I want but when the brightness is down it looks off again. Today I had some spare time so I read a lot of resources in here. I was wondering, what are the benefits of driving your leds @100hz (like in the case of 300leds in parallel mode with HyperSerialPico firmware) if the capturing source is usually @24Hz or @60Hz? The only scenario I can think is when you play videogames, but if you're playing high framerate videogames I guess you're attention is not on the LEDs. |
Beta Was this translation helpful? Give feedback.
-
Yes, video source is usually 24Hz. But there is another extremely important issue: smoothing. This component of HyperHDR that creates a smooth transition between frames. It generates much more intermediate frames, so you need about 3 to 4 times higher framerate on the output than the source framerate. |
Beta Was this translation helpful? Give feedback.
-
Depending on the UART, there is a chance that this ATmega328p will be able to reach 500,000 baud. It should be enough for a musical effect and a small setup. You can try updating the Arduino sketch first. |
Beta Was this translation helpful? Give feedback.
-
Right know I'm recording at 30fps, and smoothing is on @25hz and 50ms time (it's low because I like the update to be quite snappy).
Yea mine won't go over 115200, I've already tried. |
Beta Was this translation helpful? Give feedback.
-
So it does down-sampling and still transitions smoothly depending on the smoothing time. Unfortunately, sound effects completely ignore the default smoothing unit (they have their own fast "smoothing" implemented depending on the effect, but with no output rate control) because we want to get the most responsive response to the music possible. |
Beta Was this translation helpful? Give feedback.
-
By the way, the output of sound effects is around ~20 Hz, so probably PipeWire's capture-to-output also has insufficient bandwidth (but PipeWire only sends the captured frame when the screen has changed and the capture application has handled the previous frame). Try to enable continues output in the smoothing then probably Pipewire to LED processing will start to lag. |
Beta Was this translation helpful? Give feedback.
-
Since it does down-sampling, does it make sense to lower the capturing screen refresh rate? Or may it introduce lag? I tried with 20fps and don't notice much of a difference. Anyway even with continuous output turned on, there isn't lag. So it's weird that sound effect lags @20hz |
Beta Was this translation helpful? Give feedback.
-
In light source tab, set output to LED debug (file), just remember set refresh rate to 0 (if smoothing is disabled) and enable timestamps there. You will see the real output. |
Beta Was this translation helpful? Give feedback.
-
I'm sorry, where is the "light source" tab? And the logs says dropped=0 |
Beta Was this translation helpful? Give feedback.
-
AKA LED hardware, 3th from the top |
Beta Was this translation helpful? Give feedback.
-
Here's a few timestamps, how can I interpret the numbers?
|
Beta Was this translation helpful? Give feedback.
-
+40.2 => 40ms so around 25fps |
Beta Was this translation helpful? Give feedback.
-
I was going to but yesterday I updated the system and now I got this error
Sorry, this thread is becoming a mess (even though there are info that I think could be useful to others in respect to how HyperHDR works). For the music effect issue I'll file another bug report. |
Beta Was this translation helpful? Give feedback.
-
I installed the new version
In Arch, the hostname program provided by inetutils does not have the
Why are you using printf here and echo here?
|
Beta Was this translation helpful? Give feedback.
-
Regarding the systray, I have the same issue where I cannot scroll through all the effects Moreover, some icons are missing. Do I need to install a specific icon theme? |
Beta Was this translation helpful? Give feedback.
-
Regarding the dependency issue, now it's fixed. With v20, after the latest arch updates, I had to manually load libcurl to make hyperhdr start By the way, why do you ship your own version of the libraries if the linker use the OS ones by default? Only for troubleshooting when something breaks? |
Beta Was this translation helpful? Give feedback.
-
The new version gives me issue. It looks like the application doesn't restore the "allow recording" token. I have to manually go to Advanced-->Misc-->Screen capturing to make it work again. |
Beta Was this translation helpful? Give feedback.
-
Anyway, these are the logs for the "music effect"
The issue persist, there is still lag. When I stop the music, the LEDs keep playing for a long time. |
Beta Was this translation helpful? Give feedback.
-
Until the colorful output of the installer was added, it wouldn't matter. Even now, most users use color-capable terminals. So you're the first user to have this problem, but the solution to fix it should be simple.
we cannot manually load icons into the GTK menu, we can only indicate paths there. HyperHDR generates them in the home directory if it has permissions: icons folder in .hyperhdr https://github.com/awawa-dev/HyperHDR/blob/aa2007952bbce996ac2b2afaadfe527c558f93f2/sources/hyperhdr/SystrayHandler.cpp#L179C35-L179C42 Did you run the application installed from setup or from the archive?
to workaround a Linux Dependency hell which is much worse than in the old days on Windows. Thanks to this you can run HyperHDR, e.g. on the minimal Debian docker without installing whole sets of packages. External dependencies are detected by cmake when building, and some hidden ones, e.g. OpenSSL for QT Network, must be added manually.
this is browser capturing mechanism
please set the output to the file as I explained before to see what's happening |
Beta Was this translation helpful? Give feedback.
-
I do use a color-capable terminal, but on arch the command echo (not the shell builtin, but /usr/bin/echo) does not interpret colors unless you give the
I installed the arch artifact from the link you provided (
Yea I know but until I do this, the LEDs are "locked" to the colors of the screen the moment I opened the application. They do not update. This was not the case with v20 |
Beta Was this translation helpful? Give feedback.
-
somethings wrong must have happened and these icons were not created from svg templates. Could you run the app from the command line to see if there is an error in the log output? |
Beta Was this translation helpful? Give feedback.
-
hyperhdr_logfile.txt If the number after the timestamp is the ms value, I saw values lower than 5, that means more that 200fps! |
Beta Was this translation helpful? Give feedback.
-
yes, something is wrong here. Could make a backup of your current configuration (with LED driver set to the debug file)? |
Beta Was this translation helpful? Give feedback.
-
Hi. Another small thing to add to the original post on minor issues on Arch Linux HyperHDR installed the systemd (instance template) unit under But on Arch Linux, that path is reserved for system administrators |
Beta Was this translation helpful? Give feedback.
-
replaced with echo was replaced with printf
fixed
On my Endeavour OS (Arch + Gnome) I cannot reproduce it.
that's not excatly true. It's the internal sound smoothing that kicks in but you never have +5ms for each frame in the sequence. The equalizer effect had wrong time set 5ms so may happend +5ms (smoothing) +5ms (smoothing) + 30(new sound frame). But it's fixed now and it was never meant for LED output, only for preview.now (with new smoothing enabled): +17ms (smoothing) +17ms (smoothing) + 17(new sound frame). without smoothing. +50(new sound frame). The sound capture device provides us 20Hz input, specialized smoothing can triple it to 60Hz. Still beyond your LED driver capabilities but now you can disable it: Note the the processing smoothing component must be enabled in HyperHDR to make the sound internal smoothing works.
fixed Installers: https://github.com/awawa-dev/HyperHDR/actions/runs/9291618015/attempts/1 |
Beta Was this translation helpful? Give feedback.
-
Just installed the new version.
My bad, on "Software Screen Captured" I had "Pipewire System Dialog selection" selected instead of "Automatic". Now it works without the "workaround" of Advanced-->Misc-->Screen capturing Remaining issues:
|
Beta Was this translation helpful? Give feedback.
-
👌
Well I can live with that. Besides, If I really want one of the missing effects, I can select them through the "Remote Control" page. Thank you for maintaining this application. |
Beta Was this translation helpful? Give feedback.
-
Steps to reproduce
During the installation process, there was an issue with the
hostname
command, and the output had some weird characters, proabably due to some colors not rendering properly in the terminal.Moreover, the system tray icon is not showing when using the systemd unit (but is shown if I run hyperhdr from terminal)
System
HyperHDR 20 - Arch Linux (6.6 lts kernel); coming from v19
Beta Was this translation helpful? Give feedback.
All reactions