tylerszabo/RGB-Fusion-Tool

Warn if other light-setting tools are running

Opened this issue · 5 comments

Attempt to detect if other tools (like RGBFusion) are running to avoid conflicts.

Process list: SelLed, MBLed, SelLedV2

I did happen to notice that after I shut down my system some LEDs were still on. I am wondering if the on board LEDs might be 5v as when the power is off none of my 12v LEDs attached to the header work. Though I do have 5v analog RGBs that I are connected to the cathodes of the RGB 12v header, while I plug the common anode into the 5v Digital header for power. These stay lit. I do know that the motherboard has 5v supplied to it via the PSU, even with the system is off.

I started to play with it and after a few times I got this again.

RGBFusionTool.exe -c red
Usage: RGBFusionTool.exe [OPTION]...
Set RGB Fusion motherboard LEDs

Options:
-v, --verbose
-c, --color, --static=VALUE
set static color
--cycle, --colorcycle[=SECONDS]
cycle colors, changing color every SECONDS
-b, --brightness=VALUE brightness (0-100)
-l, --list list zones
-z, --zone=VALUE set zone
-?, -h, --help show help and exit

Error: GLedApiDotNet.Raw.GLedAPIv1_0_0Exception: dllexp_SetLedData returned ERROR_INSUFFICIENT_BUFFER
at GLedApiDotNet.Raw.GLedAPIv1_0_0Wrapper.CheckReturn(String apiFunction, UInt32 result)
at GLedApiDotNet.Raw.GLedAPIv1_0_0Wrapper.SetLedData(IEnumerable`1 settings)
at GLedApiDotNet.RGBFusionMotherboard.MotherboardLedSettingsImpl.WriteToApi(GLedAPIv1_0_0Wrapper api)
at GLedApiDotNet.RGBFusionMotherboard.Set(Int32[] divisions)
at GLedApiDotNet.RGBFusionMotherboard.SetAll(LedSetting ledSetting)
at RGBFusionTool.RGBFusionMain.LazyMotherboard.SetAll(LedSetting ledSetting)
at RGBFusionTool.Application.Main(String[] args)

#killed SelLedV2 process in TM

ps | select-string -Pattern SelLed, MBLed, SelLedV2

#Started RGB Fusion via app manger

ps | select-string -Pattern SelLed, MBLed, SelLedV2
System.Diagnostics.Process (SelLedV2)

#LEDs not controllable via RGB Fusion, will kill main power to fix it.

I have been playing with it for the past couple of hours, and it looks like if the commands are executed about a ~1sec or less, then the buffer error comes up. I haven't had the issue with the lights not responding. If I give it enough time it is fine. At the same time I haven't launched the RGB Fusion UI, nor have I killed any processes.

I wrote a quick and dirty power shell script to test the proof of concept of using your *.exe to set the colors based on games. I am not a programmer, though a Linux admin. Please excuse my poor use of powershell. I am not even sure if it is recommended to use it in this way. I noticed that the CPU usage is very low, until it runs the exe to change the lights. I am going to add a few more things into it to improve it. As I do scripting primary, I don't use a repository. Should I do a fork of your tool and add the powershell script to it?

#Zones for Gigabyte Z370 Gaming 7
#0 = VRM
#1 = RAM
#2 = Chepset + Bar
#3 = PCIe
#4 = 12vRGBW Header
#5 = NA
#6 = NA
#7 = Digital LED ?
#8 = Digltal LED ?

$games = "Overwatch","FarCry5"
$path = $PSScriptRoot + "\RGBFusionTool.exe"
$c=0

while ($true) {
$x=0
$z=0
$y=0
ForEach ($check in $games) {
$process = get-process $check -ErrorAction SilentlyContinue

    if ($process -ne $null ) {
        write-host "Game Running, $check"
        if ($check -eq "Overwatch") {
            $colors = "orange","white","orange","blue","blue"
        } ElseIf ($check -eq "FarCry5") {
            $colors = "blue","white","red","white","blue"
        }

        if ($c -eq 0) {
            ForEach ($setColor in $colors) {
                write-host "changing color"
                & $path -c  $setColor -z $z
                $z+=1
                #Sleeping exec commands to quickly can overload the buffer
                sleep 1.25
            }
            $c=1
        }
    } Else {
        $y+=1
    }
    $x+=1
}

if ($x -eq $y ) {
    write-host "No games running"
    $c=0
}

write-host "Sleeping to check for app running"
sleep 3

}

I'm really excited that you've scripted with it - this is exactly why I wrote this tool. So it sounds like there's a race condition somewhere in Gigabytes API.

I've created issue #16 to track this issue; thanks for getting a repro for it, too.

Not sure if this should be on the 1.0 bar; removing for now.