jmarucha / FanControl.Liquidctl

Get access to the pump and temperature sensors of your AIO in FanControl
GNU General Public License v3.0
39 stars 16 forks source link

Plugin not working with Corsair H100i v2 due to version naming #16

Open FIBSensei opened 1 year ago

FIBSensei commented 1 year ago

Hello, I'm trying to use your plugin with my Corsair H100i v2. To me the problems seems to be the version naming. In the error log it throws the following error:

Newtonsoft.Json.JsonReaderException: Could not convert string to double: 2.8.0.0. Path '[0].status[3].value', line 1, position 294. bei Newtonsoft.Json.JsonReader.ReadDoubleString(String s) bei Newtonsoft.Json.JsonTextReader.FinishReadQuotedNumber(ReadType readType) bei Newtonsoft.Json.JsonTextReader.ReadAsDouble() bei Newtonsoft.Json.JsonReader.ReadForType(JsonContract contract, Boolean hasConverter) bei Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id) bei Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) bei Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) bei Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList(IList list, JsonReader reader, JsonArrayContract contract, JsonProperty containerProperty, String id) bei Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, Object existingValue, String id) bei Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) bei Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target) bei Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id) bei Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) bei Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) bei Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList(IList list, JsonReader reader, JsonArrayContract contract, JsonProperty containerProperty, String id) bei Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, Object existingValue, String id) bei Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) bei Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent) bei Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType) bei Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings) bei Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings) bei FanControl.Liquidctl.LiquidctlCLIWrapper.ReadStatus() bei FanControl.Liquidctl.LiquidctlPlugin.Load(IPluginSensorsContainer _container) bei FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Open()

SuspiciousActivity commented 1 year ago

This seems like it's the same problem that @kromosomX (tagging you here because the other issue was closed) had here. You could give my fork a try if you want, the issue with the Firmware version should be fixed there as well now.

hmm-norah commented 1 year ago

@SuspiciousActivity I have the same Asetek as kromosomX but unfortunately your fork doesn't seem to avoid the crash, and I wonder if it's because the firmware version is being reported in a different place than FIBSensei (above). Without knowing if the fix works for FIBSensei though, I can't be sure.

I cloned your fork and have been looking around a bit to see if I can understand what's going on, but my knowledge is very basic. What I can do however, is post my json report as well as error message in case this helps narrow it down to a universal solution. If you end up taking a look and would like any more info, please let me know.

CLI:

C:\Program Files (x86)\Fan Control\Plugins>liquidctl -d 1 --json interactive
WARNING: python -m liquidctl.cli is deprecated, prefer python -m liquidctl
WARNING: -d/--device is deprecated, prefer --match or other selection options
status
{"status": "success", "data": [{"bus": "usb1", "address": 18, "description": "Asetek 690LC (assuming EVGA CLC)", "status": [{"key": "Liquid temperature", "value": 27.0, "unit": "°C"}, {"key": "Fan speed", "value": 720, "unit": "rpm"}, {"key": "Pump speed", "value": 2820, "unit": "rpm"}, {"key": "Firmware version", "value": "2.10.0.0", "unit": ""}]}]}

Formatted JSON:

{
    "status": "success",
    "data": [{
        "bus": "usb1",
        "address": 18,
        "description": "Asetek 690LC (assuming EVGA CLC)",
        "status": [{
            "key": "Liquid temperature",
            "value": 27.0,
            "unit": "°C"
        }, {
            "key": "Fan speed",
            "value": 720,
            "unit": "rpm"
        }, {
            "key": "Pump speed",
            "value": 2820,
            "unit": "rpm"
        }, {
            "key": "Firmware version",
            "value": "2.10.0.0",
            "unit": ""
        }]
    }]
}

Fan Control\log.txt

3/24/2023 5:17:47 PM: Newtonsoft.Json.JsonReaderException: Could not convert string to double: 2.10.0.0. Path '[1].status[3].value', line 1, position 590.
   at Newtonsoft.Json.JsonReader.ReadDoubleString(String s)
   at Newtonsoft.Json.JsonTextReader.FinishReadQuotedNumber(ReadType readType)
   at Newtonsoft.Json.JsonTextReader.ReadAsDouble()
   at Newtonsoft.Json.JsonReader.ReadForType(JsonContract contract, Boolean hasConverter)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList(IList list, JsonReader reader, JsonArrayContract contract, JsonProperty containerProperty, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, Object existingValue, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList(IList list, JsonReader reader, JsonArrayContract contract, JsonProperty containerProperty, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, Object existingValue, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
   at FanControl.Liquidctl.LiquidctlCLIWrapper.ReadStatus()
   at FanControl.Liquidctl.LiquidctlPlugin.Load(IPluginSensorsContainer _container)
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Open()
SuspiciousActivity commented 1 year ago

@hmm-norah did you also use the newest version of my fork of the plugin? Because that error cannot come from my fork anymore, I moved the code that tries to convert the firmware version to a number to another place. Could you check if the plugin dll in your plugins folder is the same as the one in my latest release? Also, did you restart FanControl after you copied my fork?

levvp commented 1 year ago

@SuspiciousActivity My NZXT fan controller works with liquidctl, supplied by your fork. For example, I can run "liquidctl status" and get a list of ans and their speeds. However, in FanControl I only get a message "LiquidctlPlugin could not initialize or has no sensors". Here is the log: FanControl Log

SuspiciousActivity commented 1 year ago

@levvp did you use my liquidctl.exe together with my FanControl.LiquidctlPlugin? My liquidctl.exe doesn't work with the original plugin, only with my fork. That's because its based on a newer version of liquidctl, which added support for some other stuff that the original plugin cannot handle, but mine can.

realgooseman commented 1 year ago

Hi @SuspiciousActivity

First of all thanks for your fork, I confirm that your v1.0.1 LiquidCtl plugin works for my Kraken Z53 pump control but doesn't seem to detect my NZXT RGB & Fan Controller. Also it works perfectly on startup but for some reason the plugin crashes and shows and error when the computer is coming out of sleep mode. Is it an error you're aware of ?

levvp commented 1 year ago

@SuspiciousActivity Just to make sure, I've just stopped FanControl, replaced the files in the "Plugins" folder again from the release ZIP file, then started FanControl again. Interestingly, now FanControl log shows no errors - only the line: 3/25/2023 5:19:51 PM: LiquidctlPlugin could not initialize or has no sensors.

SuspiciousActivity commented 1 year ago

@realgooseman I don't know of any error when coming out of sleep mode. Can you tell me what the error is? Does the log.txt file in FanControl's folder have some more information? ~Does your RGB & Fan Controller show up when you run liquidctl.exe list or liquidctl.exe status in the Plugins folder?~ (I've just realized the LiquidctlPlugin only monitors pump speeds and liquid temperatures, the Fan Controller should show up without the plugin, or FanControl just doesn't support it yet)

hmm-norah commented 1 year ago

In doing a complete reinstall to weed out having made a mistake like the non-forked dll being loaded I have updated to v152 which seems to be having its own issues. Once I figure that out I will report back, but I will likely need to make a new issue regarding v152 on the FanControl page.

I was building your fork myself, but I can't say confidently enough that I was closing it because I keep forgetting even now that it hides in the task bar. Launching the exe when it's already running just opens the already-running program, and it's completely possible that I was tricking myself into thinking it was a new launch.

realgooseman commented 1 year ago

@realgooseman I don't know of any error when coming out of sleep mode. Can you tell me what the error is? Does the log.txt file in FanControl's folder have some more information? ~Does your RGB & Fan Controller show up when you run liquidctl.exe list or liquidctl.exe status in the Plugins folder?~ (I've just realized the LiquidctlPlugin only monitors pump speeds and liquid temperatures, the Fan Controller should show up without the plugin, or FanControl just doesn't support it yet)

Here's how the plugin behaves in my particular case :

Here are the different pop-ups and errors I'm getting when it crashes :

1 2 3

Here is the log text for the error :

25/03/2023 23:09:38: Unhandled exception in FanControl v1.0.0.0 25/03/2023 23:09:38: System.ArgumentNullException: La valeur ne peut pas être null. Nom du paramètre : s à System.IO.StringReader..ctor(String s) à Newtonsoft.Json.Linq.JObject.Parse(String json, JsonLoadSettings settings) à FanControl.Liquidctl.LiquidctlCLIWrapper.ReadStatus(String address) à FanControl.Liquidctl.LiquidctlDevice.LoadJSON() à FanControl.Liquidctl.LiquidctlPlugin.Update() à FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Update() à System.Collections.Generic.List1.ForEach(Action1 action) à FanControl.Domain.ComputerAccessLayer.Update() à FanControl.Domain.ApplicationClock.DoActions() --- Fin de la trace de la pile à partir de l'emplacement précédent au niveau duquel l'exception a été levée --- à System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() à System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) à System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler) 25/03/2023 23:09:39: System.Exception: liquidctl returned non-zero exit code 1. Last stderr output: WARNING: python -m liquidctl.cli is deprecated, prefer python -m liquidctl OSError: [WinError 6] Descripteur non valide [4436] Failed to execute script 'cli' due to unhandled exception!

à FanControl.Liquidctl.LiquidctlCLIWrapper.LiquidctlCall(String arguments) à FanControl.Liquidctl.LiquidctlPlugin.Initialize() à FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Open() 25/03/2023 23:09:49: System.Exception: liquidctl returned non-zero exit code 1. Last stderr output: WARNING: python -m liquidctl.cli is deprecated, prefer python -m liquidctl OSError: [WinError 6] Descripteur non valide [8196] Failed to execute script 'cli' due to unhandled exception!

à FanControl.Liquidctl.LiquidctlCLIWrapper.LiquidctlCall(String arguments) à FanControl.Liquidctl.LiquidctlPlugin.Initialize() à FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Open() 25/03/2023 23:09:55: System.Exception: liquidctl returned non-zero exit code 1. Last stderr output: WARNING: python -m liquidctl.cli is deprecated, prefer python -m liquidctl OSError: [WinError 6] Descripteur non valide [4288] Failed to execute script 'cli' due to unhandled exception!

à FanControl.Liquidctl.LiquidctlCLIWrapper.LiquidctlCall(String arguments) à FanControl.Liquidctl.LiquidctlPlugin.Initialize() à FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Open() 25/03/2023 23:10:02: System.Exception: liquidctl returned non-zero exit code 1. Last stderr output: WARNING: python -m liquidctl.cli is deprecated, prefer python -m liquidctl OSError: [WinError 6] Descripteur non valide [12420] Failed to execute script 'cli' due to unhandled exception!

à FanControl.Liquidctl.LiquidctlCLIWrapper.LiquidctlCall(String arguments) à FanControl.Liquidctl.LiquidctlPlugin.Initialize() à FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Open() 25/03/2023 23:10:08: System.Exception: liquidctl returned non-zero exit code 1. Last stderr output: WARNING: python -m liquidctl.cli is deprecated, prefer python -m liquidctl OSError: [WinError 6] Descripteur non valide [13504] Failed to execute script 'cli' due to unhandled exception!

à FanControl.Liquidctl.LiquidctlCLIWrapper.LiquidctlCall(String arguments) à FanControl.Liquidctl.LiquidctlPlugin.Initialize() à FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Open() 25/03/2023 23:10:15: System.Exception: liquidctl returned non-zero exit code 1. Last stderr output: WARNING: python -m liquidctl.cli is deprecated, prefer python -m liquidctl OSError: [WinError 6] Descripteur non valide [7980] Failed to execute script 'cli' due to unhandled exception!

à FanControl.Liquidctl.LiquidctlCLIWrapper.LiquidctlCall(String arguments) à FanControl.Liquidctl.LiquidctlPlugin.Initialize() à FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Open() 25/03/2023 23:10:15: LiquidctlPlugin could not initialize or has no sensors.

If the error is not known, is there something I'm doing wrong ?

hmm-norah commented 1 year ago

This is the same error that I seem to be receiving as well once adding the files to the Plugins folder, FanControl runs perfectly for me until then. I recorded a video on a clean setup and verified that I am running the fork including the fork's liquidctl.exe. The only difference I can see between mine and realgooseman's is that I don't receive an error about restoring the configuration because I did not have one set up using the plugin to begin with.

https://streamable.com/td764k

log.txt

liquidctl output:

PS C:\Users\Norah\Desktop\fancontrol152net7\Plugins> .\liquidctl.exe --version
liquidctl v0.0.0-unknown (Windows-10-10.0.22621-SP0)
PS C:\Users\Norah\Desktop\fancontrol152net7\Plugins> .\liquidctl.exe -d 1 --json interactive
WARNING: python -m liquidctl.cli is deprecated, prefer python -m liquidctl
WARNING: -d/--device is deprecated, prefer --match or other selection options
status
{"status": "success", "data": [{"bus": "usb1", "address": 25, "description": "Asetek 690LC (assuming EVGA CLC)", "status": [{"key": "Liquid temperature", "value": 27.4, "unit": "°C"}, {"key": "Fan speed", "value": 720, "unit": "rpm"}, {"key": "Pump speed", "value": 2820, "unit": "rpm"}, {"key": "Firmware version", "value": "2.10.0.0", "unit": ""}]}]}
SuspiciousActivity commented 1 year ago

Alright @realgooseman and @hmm-norah I've made a new version of both the plugin and liquidctl (ZIP here). Hopefully it fixes something, if not, there should be some new output in the log.txt. To @levvp and @realgooseman, this plugin was never meant to support the NZXT Fan Controller, or any fan controller really. It only reads pump speeds and liquid temperatures. I don't have one, so I can't really talk about it a lot, but I thought FanControl itself would handle them. So if your fan controller is not there, FanControl just doesn't support it yet.

realgooseman commented 1 year ago

Alright @realgooseman and @hmm-norah I've made a new version of both the plugin and liquidctl (ZIP here). Hopefully it fixes something, if not, there should be some new output in the log.txt. To @levvp and @realgooseman, this plugin was never meant to support the NZXT Fan Controller, or any fan controller really. It only reads pump speeds and liquid temperatures. I don't have one, so I can't really talk about it a lot, but I thought FanControl itself would handle them. So if your fan controller is not there, FanControl just doesn't support it yet.

Just tried and it works like before but still shows similar errors when the pc boots out of sleep mode.

New log.txt here

hmm-norah commented 1 year ago

Looks to be loading now with a new error, GUI repeats error in a similar way to the video I attached further up.

log.txt

Interesting to see the message about python making its way into the log. I have a second device that shows up in liquidctl as well (has always been there but didn't think to mention it), not sure if that would help to pinpoint what's going on. Non-json status command:


PS C:\Users\Norah\Desktop\fancontrol152net7\Plugins> ./liquidctl.exe status
WARNING: python -m liquidctl.cli is deprecated, prefer python -m liquidctl
ASUS Aura LED Controller (experimental)
├── ARGB channels: 2
└──  RGB channels: 1

Asetek 690LC (assuming EVGA CLC)
├── Liquid temperature        24.9  °C
├── Fan speed                  660  rpm
├── Pump speed                2850  rpm
└── Firmware version      2.10.0.0

result of --json list and --json status

PS C:\Users\Norah\Desktop\fancontrol152net7\Plugins> ./liquidctl.exe --json list
WARNING: python -m liquidctl.cli is deprecated, prefer python -m liquidctl
[{"description": "ASUS Aura LED Controller", "vendor_id": 2821, "product_id": 6575, "release_number": 256, "serial_number": "9876543210", "bus": "hid", "address": "\\\\?\\HID#VID_0B05&PID_19AF&MI_02#7&382c88b3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}", "port": null, "driver": "AuraLed", "experimental": true}, {"description": "Asetek 690LC (assuming EVGA CLC)", "vendor_id": 9267, "product_id": 45568, "release_number": 256, "serial_number": "CCVI_1.0", "bus": "usb1", "address": 4, "port": [11], "driver": "Modern690Lc", "experimental": false}]
PS C:\Users\Norah\Desktop\fancontrol152net7\Plugins> ./liquidctl.exe --json status
WARNING: python -m liquidctl.cli is deprecated, prefer python -m liquidctl
[{"bus": "hid", "address": "\\\\?\\HID#VID_0B05&PID_19AF&MI_02#7&382c88b3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}", "description": "ASUS Aura LED Controller", "status": [{"key": "ARGB channels: 2", "value": "", "unit": ""}, {"key": " RGB channels: 1", "value": "", "unit": ""}]}, {"bus": "usb1", "address": 4, "description": "Asetek 690LC (assuming EVGA CLC)", "status": [{"key": "Liquid temperature", "value": 24.9, "unit": "°C"}, {"key": "Fan speed", "value": 660, "unit": "rpm"}, {"key": "Pump speed", "value": 2850, "unit": "rpm"}, {"key": "Firmware version", "value": "2.10.0.0", "unit": ""}]}]
SuspiciousActivity commented 1 year ago

@hmm-norah I believe the error in your log.txt ERROR: no device matches available drivers and selection criteria comes from the fact that your device is connected using the bus type usb, not hid. If you run liquidctl --address 4 status does the same error come up? If so, could you try liquidctl --bus usb1 --address 4 status as well as liquidctl --usb-port 4 status and see if one of those works? I am also not sure if the 4 is correct, in your last response the json output says "bus": "usb1", "address": 4, in the one before where you tried the interactive mode it says "bus": "usb1", "address": 25, so maybe replace the 4 with whatever address it currently shows.

SuspiciousActivity commented 1 year ago

@realgooseman Can you give this liquidctl version for the plugin a try? It should give more output in the log.txt.

realgooseman commented 1 year ago

@realgooseman Can you give this liquidctl version for the plugin a try? It should give more output in the log.txt.

Thanks for following up, just tried with the 1.0.1.1 debug version and same errors as before after leaving sleep mode.

New log.txt here

SuspiciousActivity commented 1 year ago

@realgooseman Can you give this liquidctl version for the plugin a try? It should give more output in the log.txt.

Thanks for following up, just tried with the 1.0.1.1 debug version and same errors as before after leaving sleep mode.

New log.txt here

Could you open up command prompt in the Plugins folder and run the following: liquidctl.exe list --json --debug Then after leaving sleep mode: liquidctl.exe status --json --debug and liquidctl.exe list --json --debug again, and post the output of all of them?

hmm-norah commented 1 year ago

update using the original info below I have gotten this to work by hardcoding usb1 in the command arguments LiduidctlCLIWrapper.cs:61

process.StartInfo.Arguments = $"--json --bus usb1 interactive";

DDM_Ou8jfoc8V2 image

granted, this is just taking a hacksaw to your code and isn't a workable solution as a release, but I hope this helps narrow the problem down end update

Instead of address it looks like port gives the needed number. I couldn't get anything to show using --address from 0 to 25. Sample of commands starting from the verbose list, then usb1, then usb-port.

./liquidctl list -v

Device #0: ASUS Aura LED Controller (experimental)
├── Vendor ID: 0x0b05
├── Product ID: 0x19af
├── Release number: 0x0100
├── Serial number: 9876543210
├── Bus: hid
├── Address: \\?\HID#VID_0B05&PID_19AF&MI_02#7&382c88b3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
└── Driver: AuraLed

Device #1: Asetek 690LC (assuming EVGA CLC)
├── Vendor ID: 0x2433
├── Product ID: 0xb200
├── Release number: 0x0100
├── Serial number: CCVI_1.0
├── Bus: usb1
├── Address: 4
├── Port: 11
└── Driver: Modern690Lc

./liquidctl.exe --bus usb1 status:

Asetek 690LC (assuming EVGA CLC)
├── Liquid temperature        21.0  °C
├── Fan speed                  480  rpm
├── Pump speed                2820  rpm
└── Firmware version      2.10.0.0

./liquidctl.exe --bus usb1 --json status:

[{"bus": "usb1", "address": 4, "description": "Asetek 690LC (assuming EVGA CLC)", "status": [{"key": "Liquid temperature", "value": 24.3, "unit": "°C"}, {"key": "Fan speed", "value": 600, "unit": "rpm"}, {"key": "Pump speed", "value": 2820, "unit": "rpm"}, {"key": "Firmware version", "value": "2.10.0.0", "unit": ""}]}]

./liquidctl.exe --bus usb1 --json list:

[{"description": "Asetek 690LC (assuming EVGA CLC)", "vendor_id": 9267, "product_id": 45568, "release_number": 256, "serial_number": "CCVI_1.0", "bus": "usb1", "address": 4, "port": [11], "driver": "Modern690Lc", "experimental": false}]

./liquidctl.exe --usb-port 11 status:

Asetek 690LC (assuming EVGA CLC)
├── Liquid temperature        20.9  °C
├── Fan speed                  480  rpm
├── Pump speed                2850  rpm
└── Firmware version      2.10.0.0

./liquidctl.exe --usb-port 11 --json status:

[{"bus": "usb1", "address": 4, "description": "Asetek 690LC (assuming EVGA CLC)", "status": [{"key": "Liquid temperature", "value": 24.2, "unit": "°C"}, {"key": "Fan speed", "value": 600, "unit": "rpm"}, {"key": "Pump speed", "value": 2820, "unit": "rpm"}, {"key": "Firmware version", "value": "2.10.0.0", "unit": ""}]}]

./liquidctl.exe --usb-port 11 --json list:

[{"description": "Asetek 690LC (assuming EVGA CLC)", "vendor_id": 9267, "product_id": 45568, "release_number": 256, "serial_number": "CCVI_1.0", "bus": "usb1", "address": 4, "port": [11], "driver": "Modern690Lc", "experimental": false}]

No devices found:

PS C:\Users\Norah\Desktop\fancontrol152net7\Plugins> ./liquidctl --address 4 status
ERROR: no device matches available drivers and selection criteria
PS C:\Users\Norah\Desktop\fancontrol152net7\Plugins> ./liquidctl --address 11 status
ERROR: no device matches available drivers and selection criteria
PS C:\Users\Norah\Desktop\fancontrol152net7\Plugins> ./liquidctl --address 25 status
ERROR: no device matches available drivers and selection criteria
PS C:\Users\Norah\Desktop\fancontrol152net7\Plugins> ./liquidctl --bus usb1 --address 11 status
ERROR: no device matches available drivers and selection criteria
PS C:\Users\Norah\Desktop\fancontrol152net7\Plugins> ./liquidctl --bus usb1 --address 25 status
ERROR: no device matches available drivers and selection criteria
PS C:\Users\Norah\Desktop\fancontrol152net7\Plugins> ./liquidctl --bus usb1 --address 4 status
ERROR: no device matches available drivers and selection criteria
SuspiciousActivity commented 1 year ago

@hmm-norah That was very helpful, thanks! New version (plugin and liquidctl need an update)

hmm-norah commented 1 year ago

New version looks to be working perfectly for my use case! (monitoring liquid temp and moving the radiator fans to a header on the motherboard instead of the AIO.)

Thank you so much for figuring out what was up, especially since the EVGA-branded Asetek seems to be much less common than the NZXT ones. I cannot begin to explain how bad the EVGA software is.

realgooseman commented 1 year ago

@realgooseman Can you give this liquidctl version for the plugin a try? It should give more output in the log.txt.

Thanks for following up, just tried with the 1.0.1.1 debug version and same errors as before after leaving sleep mode. New log.txt here

Could you open up command prompt in the Plugins folder and run the following: liquidctl.exe list --json --debug Then after leaving sleep mode: liquidctl.exe status --json --debug and liquidctl.exe list --json --debug again, and post the output of all of them?

I tried v1.0.3 and still same problems when leaving sleep mode, and for some reason the commands don't do anything in the plugin's path + liquidctl opens for a sec then closes when I click on it.

Tried installing Python + libusb but nothing changes. But as I'm not so experienced in coding, I don't know what I'm doing wrong lol.

New log.txt here

SuspiciousActivity commented 1 year ago

@realgooseman What do you mean by "the commands don't do anything"? Liquidctl is a command line program, when you double click it, you can't see much. You need to start it from a command prompt. Please go into the Plugin folder, where the liquidctl.exe and the plugin dll are. Click in the file path bar at the top, and enter cmd and press enter. A command prompt should pop up. You should be able to enter the commands there. For example, liquidctl.exe list --json --debug should show a lot of text, with a list of supported devices at the bottom. If that works, please do the steps I said earlier again:

Could you open up command prompt in the Plugins folder and run the following: liquidctl.exe list --json --debug Then after leaving sleep mode: liquidctl.exe status --json --debug and liquidctl.exe list --json --debug again, and post the output of all of them?

realgooseman commented 1 year ago

Hi @SuspiciousActivity

When going to the Plugins folder and entering the cmd command from that path, this window pops up for one second then closes. entering the list command doesn't show anything either. Is it missing something to run properly ?

cmd liquidctl

SuspiciousActivity commented 1 year ago

@realgooseman I think you are still running the command directly, let me show you how to do it:

  1. Go in the Plugin folder
  2. Type cmd at the top, like in this image: Screenshot_1
  3. Press Enter, the command prompt opens up: Screenshot_2
  4. There you can put all of those commands, and the window won't hide after a second.

And yes it will basically show what you posted in your image, but more of that. I need the output of all of the 3 commands:

  1. When it's working: liquidctl.exe list --json --debug
  2. Let it go to sleep mode and wake it up
  3. When the errors come up, ignore all of them and run liquidctl.exe status --json --debug and liquidctl.exe list --json --debug
  4. Show me what all of those commands output
realgooseman commented 1 year ago

@realgooseman I think you are still running the command directly, let me show you how to do it:

  1. Go in the Plugin folder
  2. Type cmd at the top, like in this image: Screenshot_1
  3. Press Enter, the command prompt opens up: Screenshot_2
  4. There you can put all of those commands, and the window won't hide after a second.

And yes it will basically show what you posted in your image, but more of that. I need the output of all of the 3 commands:

  1. When it's working: liquidctl.exe list --json --debug
  2. Let it go to sleep mode and wake it up
  3. When the errors come up, ignore all of them and run liquidctl.exe status --json --debug and liquidctl.exe list --json --debug
  4. Show me what all of those commands output

Well, that's exactly what I did. When entering the command in cmd it then pops up a liquidctl window showing my previous screenshot and closes one second after.

Is it maybe missing a KrakenZ3 driver ? As I uninstalled NZXT CAM

SuspiciousActivity commented 1 year ago

@realgooseman huh that's really weird. And liquidctl supplies its own driver for all the devices. I have literally no idea why it acts like that. Another question: why did you install FanControl in the Start Menu? (I doubt it has something to do with that, just wondering)

realgooseman commented 1 year ago

@realgooseman huh that's really weird. And liquidctl supplies its own driver for all the devices. I have literally no idea why it acts like that. Another question: why did you install FanControl in the Start Menu? (I doubt it has something to do with that, just wondering)

Yes, very weird indeed. And I installed FanControl in start menu because I had task schedule issues on startup launch when it was in the default C:/Program Files path. But i'll try it in the default path to see if there's any difference now.

Also maybe worth mentioning, I use a USB header 9pin splitter in my case as I don't have enough USB pin slots on my motherboard. Maybe that's the reason why it causes some problems ? But ultimately the plugin does work but just not when leaving sleep mode so idk if that's the real reason.

Trae132 commented 1 year ago

@SuspiciousActivity Hey I am using your version of fan control.liquidctl to control my kraken in remo0's fan control and its brilliant love it so much more than having to use CAM however im having an issue where my Asus motherboard rgb lights turn off as soon as fan control launches when the liquidctl plugin is enabled. Is there any way I can disable that function?

I didnt see an issue thread on your page for the version you made and apparently you cant direct msg people on here so hoping this is tha appropriate way to reach out to you.