CorsairOfficial / cue-sdk

Corsair iCUE SDK
https://corsairofficial.github.io/cue-sdk/
223 stars 25 forks source link

LEDs eventually always freeze using SDK. #32

Open blomgrenskold opened 1 year ago

blomgrenskold commented 1 year ago

Greetings, I've been hard at work trying to figure out why when I'm using the open source project Artemis 2 (which in turn is using cue-sdk 4) it always ends up freezing my Corsair LEDs. It generally takes 2-5 hours and with a 100% chance of happening at least relatively close to those estimations.

I can start with my build: ROG Strix z790 E-Gaming i9 13900k Zotac RTX 4090 Trinity OC Edition 4x Corsair Dominator 16GB 6000 MHz (64GB total) Corsair Elite H150i LCD AIO 1200 W PSU ThermalTake View 71 case 1x LL140 Corsair fan

The AIO and the LL140 fan is plugged in to the included Commander Core controller I received with the AIO. Up until today I've made sure to plug the included usb header splitter directly into the motherboard. Starting today I'm testing having them plugged in to my NZXT internal usb hub which now contains all 4 of my usb header connections.

Getting to the issue!

Using iCue alone seems to work fine in terms of nothing freezing or such, however I decided to install Open RGB (instead of Armoury Crate) for my ASUS motherboard and install Artemis 2 for the increased options of making dynamic effects and later hopefully game integrations. The issue is that using Artemis it seems to play fine until eventually after a few hours the LEDs freeze. I've tried debugging to the best of my abilities and have been in touch with the Artemis crew.

image

It looks like the thread they use for updating the LEDs gets forever stuck in the cue sdk once CorsairSetLedColors() has been called. Out of all my sessions it only ever seems to be the "Commander CORE" device that it gets stuck with (hence my recent desperate test of switching the usb headers for it). In my everlong quest of finding a good repro it has been incredibly hard to find anything relatable to this freezing event. Artemis has sometimes managed to print out exception logs saying "DeviceNotFound" as I believe a CorsairError but it eventually gets stuck anyway but might give you a better idea of what could possibly lead to some times returning "DeviceNotFound" before getting stuck while other times just getting stuck without the error returned.

Event viewer in Windows shows nothing consistent happening during a freeze (sometimes I can see a power state change in what could be close to the issue happening but other times none at all). I've set my Power Management settings to High Performance (using Windows 11 Pro), have disabled Sleep and have set my monitors to turn off after 1 hour. In device manager I've unticked every single device's "Allow Windows to turn off this device to save power". I've examined countless iCue and Artemis logs with only the aforementioned occasional "DeviceNotFound" exception as the only log indicating something has gone wrong at all.

I will add that I've noticed a few more people popping up with the same freezing issues (in Artemis) which I think I heard is most likely connected to the move to the new cue sdk 4.

If you could take a look or grant your thoughts that would be greatly appreciated. I am also willing (and hopefully able ^^) to help provide you with any thing I can that might be of use. I've ran out of options and there's not much more the Artemis devs can do unless there are some prerequisites of calling CorsairSetLedColors() continuously that they/I don't know about.

Thank you in advance and for getting through my wall of text!

blomgrenskold commented 1 year ago

Speaking to an OpenRGB developer he mentioned there's been a new revision of the Commander Core (with a different HWID) which I thought I could highlight as something likely connected to this issue.

Hopefully it could give you a good place to start!

blomgrenskold commented 1 year ago

My bad, butterfingers on the phone 😅

VecaChaton commented 1 year ago

Same problem here, since updating to the new CUE SDK 4, the LEDs on my Corsair devices freeze after a few hours when using the Artemis 2 open source project. I had no problems before this update.

Here is my setup: ASUS Z390-E Gaming I7 9700K ASUS Dual GeForce GTX 1070 4 GSkill Trident Z 8GB (32GB total) Corsair K100 OPX Keyboard Corsair MM700 Mouse Pad Corsair Nightsword Mouse Antec 750W power supply

Tetevemasque commented 1 year ago

Same problem with my RAM sticks Corsair Vengeance RGB PRO SL.

I use Artemis 2 for animate the leds, and since the last iCue update, the leds freezes randomly until I relaunch Artemis. If I attempt to reload the Corsair plugin only, Artemis crashes

diogotr7 commented 1 year ago

I tried to diagnose this and didn't find much. In short, some time after the updating starts, calls to CorsairSetLedColors stop returning. Reproduction steps:

TLDR: Updates freeze after a while, locking + unlocking windows causes the CorsairSetLedColors call to return with NotConnected once, but then it freezes again.

@intrueder would you like a reproducible sample application for this? I'm using a simple RGB.NET console app that i can post somewhere if it would help.

diogotr7 commented 1 year ago

Here's the project I'm using for debugging purposes: https://github.com/diogotr7/RGB.NET/tree/feature/corsair-sandbox

The iCUE SDK binary will need to be included in an x64 folder next to the csproj separately.

Aytackydln commented 1 year ago

Sdk also stops sending CorsairEvent for device connections and disconnections when this happens

diogotr7 commented 1 year ago

I can still reproduce this on iCUE 5.2.128, with a Lighting Node Core and 4 8-led fans.

@intrueder is there a sample app we can test with that would narrow down the scope of this issue?