Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OpenRGB compatibility #101

Open
EvanMulawski opened this issue Sep 14, 2023 · 26 comments
Open

OpenRGB compatibility #101

EvanMulawski opened this issue Sep 14, 2023 · 26 comments
Assignees
Labels
external Requires work in other products synchronization-interop Related to interoperability with other software

Comments

@EvanMulawski
Copy link
Owner

EvanMulawski commented Sep 14, 2023

OpenRGB needs to implement the well-known Corsair mutex that provides compatibility with other software. This was added for Commander CORE devices in commit 6c8da3a0.

I have opened a merge request that improves it and updates existing Corsair RGB controllers to use it.

If you want to use OpenRGB with the CorsairLink Fan Control plugin, please upvote and comment on the merge request!


Now Available

See the comment below.

@EvanMulawski EvanMulawski added synchronization-interop Related to interoperability with other software external Requires work in other products labels Sep 14, 2023
@EvanMulawski EvanMulawski self-assigned this Sep 14, 2023
@EvanMulawski EvanMulawski pinned this issue Sep 14, 2023
@chjohans
Copy link

Any idea on the progress on this over at OpenRGB?

And if this is implemented, will the shared mutex be used for "Commander Pro" devices as well? I only see COmmander Core and Lightning Node specifically mentioned.

@EvanMulawski
Copy link
Owner Author

@chjohans No idea on the status and no response from the developer. The "Lighting Node" implementation handles the Commander PRO devices (0c10 and 1d00).

@chjohans
Copy link

chjohans commented Oct 29, 2023

Ok, thanks @EvanMulawski ! Too bad, he gets compatibility with plenty of COrsair devices served on a silver platter and he doesn't even bother to respond. Thanks again for creating this plugin, I finally have proper fan control for my Corsair devices! :)

@chjohans
Copy link

chjohans commented Nov 6, 2023

@EvanMulawski I see that you forked OpenRGB over at GitLab, and I assume you must have built a version for Windows with your Corsair mutex implemented in order to test. While I'm waiting for @CalcProgrammer1 to hopefully accept your merge request, do you happent to have a x64 binary with this available?

@chjohans
Copy link

chjohans commented Nov 6, 2023

@EvanMulawski I see that the developer finally responded again over at GitLab, he wants some more changes though. Hopefully, this will be doable in the not-too-distant future. :)

@chjohans
Copy link

chjohans commented Nov 8, 2023

@EvanMulawski Thanks for your effort with OpenRGB, I see that you already responded to the devs request over at GitLab. Looking forward to having the shared mutex in OpenRGB! I'll go buy you a coffee now! :)

@Fr0stX76
Copy link

Your commit has been merged! Thanks for the hard work you putted into this. Guess its time for me to dust off my corsair guears...

@EvanMulawski
Copy link
Owner Author

As OpenRGB 1.0 has not been released yet, the compatible Windows 64-bit build is linked below. Builds for master produced by pipelines after #1068292631 have compatibility.

OpenRGB_Windows_64_f6723975.zip

Merge commit

@Zeromoon95
Copy link

Ran into issues with my Corsair H100i Pro XT when using Hardware Sync Plugin using a temperature setting on my CPU block.

Tried using a build that posted above but it gets stuck when detecting Corsair Hydro H100i Pro XT.

Help would be appreciated

CorsairLink.log
log.txt

@EvanMulawski
Copy link
Owner Author

@Zeromoon95 Does this issue occur if OpenRGB is not running?

@Zeromoon95
Copy link

@EvanMulawski It doesn't, I think but it doesn't run the plugin that syncs the temps.

I manage to update to the newer build you provided. But still getting issues.

Not sure if the errors are different, but here from here using the latest build:
CorsairLink.log
log.txt

@EvanMulawski
Copy link
Owner Author

@Zeromoon95 That is a different error - the data being read from the device is garbage/unusable (which explains the checksum error) and this indicates the device is in a bad state and needs to be rebooted. iCUE performs a device reboot when this issue occurs (and it's on the roadmap for this plugin - see #80).

@Zeromoon95
Copy link

Well, So far I haven't gotten anymore errors since disabling the Hardware Sync Plugin so it might have been the effect from that.

@Fr0stX76
Copy link

Tte Hardware Sync Plugin of OpenRGB, depending on the effect chosen and the FPS, will flood the device with data sent. The new interlock in theory should prevent this, for reasonnable r/w using it (ex hwinfo pooling at 1000ms + fan control corsairlink 1000ms + some open rgb profile change).

Now using an effect with Tte Hardware Sync Plugin of OpenRGB with 60fps frequency might be too much for it.

Maybe try lowering the fps of the effect?

@Zeromoon95
Copy link

Tte Hardware Sync Plugin of OpenRGB, depending on the effect chosen and the FPS, will flood the device with data sent. The new interlock in theory should prevent this, for reasonnable r/w using it (ex hwinfo pooling at 1000ms + fan control corsairlink 1000ms + some open rgb profile change).

Now using an effect with Tte Hardware Sync Plugin of OpenRGB with 60fps frequency might be too much for it.

Maybe try lowering the fps of the effect?

I did, went to 1 fps and it's working fine so far.

@Fr0stX76
Copy link

@Zeromoon95 to be clear, I'm not saying it is the issue, just that it is a possibility. My theory is that when the device receive a significant amount of data in a short period, the communication bus somehow "trip" and thus the device need to be rebooted. The fact that Icue is rebooting it kinda indicate that Corsair is aware of this issue.

I would suggest increasing the FPS of the OpenRGB effect until you reach the "trip" point and then stay below. 30FPS in my tests kinda look decent. Plus lower effect FPS = less CPU usage. Some of those use a lot of CPU power depending on your setup, and I suspect the mutex (lock) might be adding a bit more.

I would be curious to know if the device would still "trip" and stop responding if you did not use anything but OpenRGB with the Hardware Sync Plugin. I would see if using an effect at 60FPS with only OpenRGB (as is not use FanControl.CorsairLink, HWinfo or SIV at all for this test), if the device woul still "trip". If it did not, then that would indicate that the issue is with OpenRGB effects, ruling out other software listed above.

@Zeromoon95
Copy link

@Zeromoon95 to be clear, I'm not saying it is the issue, just that it is a possibility. My theory is that when the device receive a significant amount of data in a short period, the communication bus somehow "trip" and thus the device need to be rebooted. The fact that Icue is rebooting it kinda indicate that Corsair is aware of this issue.

I would suggest increasing the FPS of the OpenRGB effect until you reach the "trip" point and then stay below. 30FPS in my tests kinda look decent. Plus lower effect FPS = less CPU usage. Some of those use a lot of CPU power depending on your setup, and I suspect the mutex (lock) might be adding a bit more.

I would be curious to know if the device would still "trip" and stop responding if you did not use anything but OpenRGB with the Hardware Sync Plugin. I would see if using an effect at 60FPS with only OpenRGB (as is not use FanControl.CorsairLink, HWinfo or SIV at all for this test), if the device woul still "trip". If it did not, then that would indicate that the issue is with OpenRGB effects, ruling out other software listed above.

Staying in 1 only look fine, if I go any higher I get a lighting issue with an odd color on part of the lighting until I hard shutdown my computer to reset it.

Running with OpenRGB only worked fine as of 60 fps.

@Zeromoon95
Copy link

Oh it finally crashed the lighting died in black before I hard shutdown and booted again even on 1 fps. Guess I turning off Hardware Sync for now.

@TannerBragg
Copy link

As OpenRGB 1.0 has not been released yet, the compatible Windows 64-bit build is linked below. Builds for master produced by pipelines after #1068292631 have compatibility.

OpenRGB_Windows_64_f6723975.zip

Merge commit

@EvanMulawski Is there a build of OpenRGB that supports the Core Commander XT on the master branch? I attempted to use this build and it doesn't see the Commander XT device.

image

@EvanMulawski
Copy link
Owner Author

@TannerBragg It does not support the XT currently - there is an open issue for it. Since progress has stalled and I have the device, I will look into adding support and open a merge request if I get it working.

@TannerBragg
Copy link

TannerBragg commented Jul 17, 2024

@TannerBragg It does not support the XT currently - there is an open issue for it. Since progress has stalled and I have the device, I will look into adding support and open a merge request if I get it working.

@EvanMulawski You would be my absolute hero if you got this working.

I'm hopeful your mutex implementation with OpenRGB will not have this issue! 😄

@TannerBragg
Copy link

Hi @EvanMulawski

Does the Core Commander XT use the same messages as the Core Commander to control the RGB? Would it need to be a simple line added here to register the product id?

@EvanMulawski
Copy link
Owner Author

@TannerBragg I'm about to find out!

@TannerBragg
Copy link

@EvanMulawski I talked to DrNo on discord. His branch is close, but it has some issues crashing; however, it still doesn't set the RGB colors correctly.

https://gitlab.com/Dr_No/OpenRGB/-/tree/2339

https://discord.com/channels/699861463375937578/1041125371929710662

@TannerBragg
Copy link

@EvanMulawski did you have any luck?

@TannerBragg
Copy link

@EvanMulawski Just dropping a note here. I went up and down the OpenRGB controller attempting to get it to control the XT device properly. As far as I can tell, it is communicating, but QL fans that I have are not accepting color. The corsair pump I have does accept color, but I can't figure out how to get it to work. I hope you have better luck debugging it.

The code over there is a little awkward to follow. It's definitely not as pristine as your plugin is here.

🤞

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
external Requires work in other products synchronization-interop Related to interoperability with other software
Projects
None yet
Development

No branches or pull requests

5 participants