Git Product home page Git Product logo

fancontrol.liquidctl's People

Contributors

jmarucha avatar koli0842 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

fancontrol.liquidctl's Issues

[H115i] Plugin not working

Hello,

I am trying to use this plugin with the following reference: Corsair Hydro H115i Pro
FanControl doesn't work when using this plugin with the following issue:

16/10/2022 22:57:19: Newtonsoft.Json.JsonReaderException: Could not convert string to double: balanced. Path '[0].status[3].value', line 1, position 290.
   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()
16/10/2022 22:57:22: Newtonsoft.Json.JsonReaderException: Could not convert string to double: balanced. Path '[0].status[3].value', line 1, position 290.
   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()

When trying to debug a bit, I have the following JSON output:

[{"bus": "usb2", "address": 2, "description": "Corsair Hydro H115i Pro", "status": [{"key": "Liquid temperature", "value": 28.3, "unit": "°C"}, {"key": "Fan 1 speed", "value": 935, "unit": "rpm"}, {"key": "Fan 2 speed", "value": 924, "unit": "rpm"}, {"key": "Pump mode", "value": "balanced", "unit": ""}, {"key": "Pump speed", "value": 2040, "unit": "rpm"}, {"key": "Firmware version", "value": "1.0.4.0", "unit": ""}]}]

So when getting the value asked, here is the result:

.\liquidctl.exe --json status | jq -r .[0].status[3].value
balanced

I don't know this related, but the wrapper seems to look for Pump duty which is not what the output is.

Kind regards,
JM

Plugin will not run on Corsair iCUE H115i ELITE CAPELLIX using an iCUE Commander Core

Hi there,

I've downloaded release v0.1.1, and copied the following dll and .exe into the "Plugins" folder of FanControl v1.0.0.0.

I'm running a Corsair iCUE H115i ELITE CAPELLIX Liquid CPU Cooler, which has the following plugged into an iCUE Commander Core:

When trying to start FanControl, the plugin will cause the fans LEDs to flicker, and then I get a generic "An Unexpected Error has occurred" message, prompting me to check the logs.

Here's the contents of log.txt, trimmed to the point where I used your plugin:

17/12/2022 19:36:03: System.NullReferenceException: Object reference not set to an instance of an object.
   at FanControl.Liquidctl.LiquidctlDevice.UpdateFromJSON(LiquidctlStatusJSON output)
   at FanControl.Liquidctl.LiquidctlDevice.LoadJSON()
   at FanControl.Liquidctl.LiquidctlPlugin.Update()
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Update()
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Open()
17/12/2022 19:36:05: System.NullReferenceException: Object reference not set to an instance of an object.
   at FanControl.Liquidctl.LiquidctlDevice.UpdateFromJSON(LiquidctlStatusJSON output)
   at FanControl.Liquidctl.LiquidctlDevice.LoadJSON()
   at FanControl.Liquidctl.LiquidctlPlugin.Update()
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Update()
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Open()
17/12/2022 19:36:05: LiquidctlPlugin could not initialize or has no sensors.
17/12/2022 19:36:07: Unhandled exception in FanControl v1.0.0.0
17/12/2022 19:36:07: System.NullReferenceException: Object reference not set to an instance of an object.
   at FanControl.Liquidctl.LiquidctlDevice.UpdateFromJSON(LiquidctlStatusJSON output)
   at FanControl.Liquidctl.LiquidctlDevice.LoadJSON()
   at FanControl.Liquidctl.LiquidctlPlugin.Update()
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Update()
   at System.Collections.Generic.List`1.ForEach(Action`1 action)
   at FanControl.Domain.ComputerAccessLayer.Update()
   at FanControl.Domain.ApplicationClock.DoActions()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
17/12/2022 19:36:07: Unhandled exception in FanControl v1.0.0.0
17/12/2022 19:36:07: System.NullReferenceException: Object reference not set to an instance of an object.
   at FanControl.Liquidctl.LiquidctlDevice.UpdateFromJSON(LiquidctlStatusJSON output)
   at FanControl.Liquidctl.LiquidctlDevice.LoadJSON()
   at FanControl.Liquidctl.LiquidctlPlugin.Update()
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Update()
   at System.Collections.Generic.List`1.ForEach(Action`1 action)
   at FanControl.Domain.ComputerAccessLayer.Update()
   at FanControl.Domain.ApplicationClock.DoActions()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
17/12/2022 19:36:08: Unhandled exception in FanControl v1.0.0.0
17/12/2022 19:36:08: System.NullReferenceException: Object reference not set to an instance of an object.
   at FanControl.Liquidctl.LiquidctlDevice.UpdateFromJSON(LiquidctlStatusJSON output)
   at FanControl.Liquidctl.LiquidctlDevice.LoadJSON()
   at FanControl.Liquidctl.LiquidctlPlugin.Update()
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Update()
   at System.Collections.Generic.List`1.ForEach(Action`1 action)
   at FanControl.Domain.ComputerAccessLayer.Update()
   at FanControl.Domain.ApplicationClock.DoActions()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
17/12/2022 19:36:09: Unhandled exception in FanControl v1.0.0.0
17/12/2022 19:36:09: System.NullReferenceException: Object reference not set to an instance of an object.
   at FanControl.Liquidctl.LiquidctlDevice.UpdateFromJSON(LiquidctlStatusJSON output)
   at FanControl.Liquidctl.LiquidctlDevice.LoadJSON()
   at FanControl.Liquidctl.LiquidctlPlugin.Update()
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Update()
   at System.Collections.Generic.List`1.ForEach(Action`1 action)
   at FanControl.Domain.ComputerAccessLayer.Update()
   at FanControl.Domain.ApplicationClock.DoActions()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
17/12/2022 19:36:11: Unhandled exception in FanControl v1.0.0.0
17/12/2022 19:36:11: System.NullReferenceException: Object reference not set to an instance of an object.
   at FanControl.Liquidctl.LiquidctlDevice.UpdateFromJSON(LiquidctlStatusJSON output)
   at FanControl.Liquidctl.LiquidctlDevice.LoadJSON()
   at FanControl.Liquidctl.LiquidctlPlugin.Update()
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Update()
   at System.Collections.Generic.List`1.ForEach(Action`1 action)
   at FanControl.Domain.ComputerAccessLayer.Update()
   at FanControl.Domain.ApplicationClock.DoActions()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
17/12/2022 19:36:11: Unhandled exception in FanControl v1.0.0.0
17/12/2022 19:36:11: System.NullReferenceException: Object reference not set to an instance of an object.
   at FanControl.Liquidctl.LiquidctlDevice.UpdateFromJSON(LiquidctlStatusJSON output)
   at FanControl.Liquidctl.LiquidctlDevice.LoadJSON()
   at FanControl.Liquidctl.LiquidctlPlugin.Update()
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Update()
   at System.Collections.Generic.List`1.ForEach(Action`1 action)
   at FanControl.Domain.ComputerAccessLayer.Update()
   at FanControl.Domain.ApplicationClock.DoActions()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
17/12/2022 19:36:12: Unhandled exception in FanControl v1.0.0.0
17/12/2022 19:36:12: System.NullReferenceException: Object reference not set to an instance of an object.
   at FanControl.Liquidctl.LiquidctlDevice.UpdateFromJSON(LiquidctlStatusJSON output)
   at FanControl.Liquidctl.LiquidctlDevice.LoadJSON()
   at FanControl.Liquidctl.LiquidctlPlugin.Update()
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Update()
   at System.Collections.Generic.List`1.ForEach(Action`1 action)
   at FanControl.Domain.ComputerAccessLayer.Update()
   at FanControl.Domain.ApplicationClock.DoActions()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
17/12/2022 19:36:14: Unhandled exception in FanControl v1.0.0.0
17/12/2022 19:36:14: System.NullReferenceException: Object reference not set to an instance of an object.
   at FanControl.Liquidctl.LiquidctlDevice.UpdateFromJSON(LiquidctlStatusJSON output)
   at FanControl.Liquidctl.LiquidctlDevice.LoadJSON()
   at FanControl.Liquidctl.LiquidctlPlugin.Update()
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Update()
   at System.Collections.Generic.List`1.ForEach(Action`1 action)
   at FanControl.Domain.ComputerAccessLayer.Update()
   at FanControl.Domain.ApplicationClock.DoActions()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
17/12/2022 19:36:14: Unhandled exception in FanControl v1.0.0.0
17/12/2022 19:36:14: System.NullReferenceException: Object reference not set to an instance of an object.
   at FanControl.Liquidctl.LiquidctlDevice.UpdateFromJSON(LiquidctlStatusJSON output)
   at FanControl.Liquidctl.LiquidctlDevice.LoadJSON()
   at FanControl.Liquidctl.LiquidctlPlugin.Update()
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Update()
   at System.Collections.Generic.List`1.ForEach(Action`1 action)
   at FanControl.Domain.ComputerAccessLayer.Update()
   at FanControl.Domain.ApplicationClock.DoActions()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
17/12/2022 19:36:16: Unhandled exception in FanControl v1.0.0.0
17/12/2022 19:36:16: System.NullReferenceException: Object reference not set to an instance of an object.
   at FanControl.Liquidctl.LiquidctlDevice.UpdateFromJSON(LiquidctlStatusJSON output)
   at FanControl.Liquidctl.LiquidctlDevice.LoadJSON()
   at FanControl.Liquidctl.LiquidctlPlugin.Update()
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Update()
   at System.Collections.Generic.List`1.ForEach(Action`1 action)
   at FanControl.Domain.ComputerAccessLayer.Update()
   at FanControl.Domain.ApplicationClock.DoActions()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

Any ideas or feedback would be much appreciated. Thanks!

Plugin will not initialize Possible fix

Hi all,

Checking the log.txt shows thats:

ERROR: unexpected OS error with Asetek 690LC (assuming EVGA CLC): USBTimeoutError(10060, 'Operation timed out')

   at FanControl.Liquidctl.LiquidctlCLIWrapper.LiquidctlCall(String arguments)
   at FanControl.Liquidctl.LiquidctlCLIWrapper.ReadStatus()
   at FanControl.Liquidctl.LiquidctlPlugin.Load(IPluginSensorsContainer _container)
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Open()
2024-05-25 4:04:59 AM: System.Exception: liquidctl returned non-zero exit code 1. Last stderr output:
WARNING: python -m liquidctl.cli is deprecated, prefer python -m liquidctl
ERROR: unexpected OS error with Asetek 690LC (assuming EVGA CLC): USBTimeoutError(10060, 'Operation timed out')

   at FanControl.Liquidctl.LiquidctlCLIWrapper.LiquidctlCall(String arguments)
   at FanControl.Liquidctl.LiquidctlCLIWrapper.ReadStatus()
   at FanControl.Liquidctl.LiquidctlPlugin.Load(IPluginSensorsContainer _container)
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Open()
2024-05-25 4:05:00 AM: LiquidctlPlugin could not initialize or has no sensors.

to fix this I think we must use:
python -m liquidctl --legacy-690lc -m "NZXT"
or
liquidctl --legacy-690lc -m "NZXT"

I don't have VS to rebuild

GL ~

LiquidctlPlugin could not initialize or has no sensors

(I posted this in Fan Control issues but have a feeling Remo0 is going to refer it here since its plugin based.)
This happens almost every time I start my windows 10 pc. Refreshing sensors just results in same error. The only way I fix it is in task manager end process on fan control and liquidctl and relaunch fan control then it works eventually. Any idea why it does this and how to prevent it? I should add when it bugs like this Fan Control has option to refresh which results in same or cintinue which closes the error window and the program all works except no pump control or data, liquid temp works though.

Is there a log.txt file next to FanControl.exe with recent date entries?

(repeats this same thing over and over)
4/24/2023 12:02:58 AM: 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] The handle is invalid.
[18156] Failed to execute script 'cli' due to unhandled exception!

at FanControl.Liquidctl.LiquidctlCLIWrapper.LiquidctlCall(String arguments)
at FanControl.Liquidctl.LiquidctlPlugin.Initialize()
at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Open()
4/24/2023 12:03:04 AM: 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] The handle is invalid.
[4860] Failed to execute script 'cli' due to unhandled exception!

at FanControl.Liquidctl.LiquidctlCLIWrapper.LiquidctlCall(String arguments)
at FanControl.Liquidctl.LiquidctlPlugin.Initialize()
at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Open()
4/24/2023 12:03:10 AM: 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] The handle is invalid.
[9188] Failed to execute script 'cli' due to unhandled exception!

at FanControl.Liquidctl.LiquidctlCLIWrapper.LiquidctlCall(String arguments)
at FanControl.Liquidctl.LiquidctlPlugin.Initialize()
at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Open()
4/24/2023 12:03:10 AM: LiquidctlPlugin could not initialize or has no sensors.
4/24/2023 12:04:21 AM: 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] The handle is invalid.
[10836] Failed to execute script 'cli' due to unhandled exception!

at FanControl.Liquidctl.LiquidctlCLIWrapper.LiquidctlCall(String arguments)
at FanControl.Liquidctl.LiquidctlPlugin.Initialize()
at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Open()

Relevant hardware specs and setup
Suspicousactivity's fork
Asus strix z790
i9 13900k

Corsair Hydro H150i Pro - Cannot Initialize

Not entirely sure of the cause of this. Driver is replaced and it works fine via the command line, but trying to use this plugin throws the following error.

13/06/2022 02:50:48: Newtonsoft.Json.JsonReaderException: Could not convert string to double: Hardware. Path '[0].status[4].value', line 1, position 436.
   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()
13/06/2022 02:50:48: LiquidctlPlugin could not initialize. See the error log for more details.```

LiquidctlPlugin could not initialize or has no sensors

Hi @jmarucha

First of all, is this plugin still maintained or not ?

If it's still maintained, I got an error when loading the plugin in FanControl.
I want to control my NZXT fans/cooler with FanControl instead of CAM, but when I extract the plugin files to the "Plugins" folder in the FanControl directory. The app shows a "LiquidctlPlugin could not initialize or has no sensors" error on launch.
I closed all services that might interfere with the plugin, and disabled Smart Fan Control in BIOS.

I don't know if this error is known or being worked on, but here are my computer specs :

MB : MSI X470 Gaming Plus
RAM : Trident Z RGB 8x2gb 3200mhz
CPU : AMD Ryzen 7 2700x
GPU : NVIDIA GeForce GTX 1070 Ti
AIO Cooler : NZXT Kraken Z53
FANS : all plugged in a NZXT RGB & Fan Controller hub

My question is, am I doing something wrong or is the plugin currently broken for my NZXT devices ?

Plugin will not initialize

I ran the initialize all command before running FanControl.exe and trying to start the plugin

11/8/2023 3:10:42 AM: Newtonsoft.Json.JsonReaderException: Could not convert string to double: PWM. Path '[0].status[0].value', line 1, position 210.
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()

H100i V2 only shows Pump RPM. No Fans RPM, Fan Control or Pump control

Im using the @SuspiciousActivity fork, everything loads. But FanControl only shows me the Pump RPM. I'm missing the Fan FPM and both controls for some reason.

image

Running liquidctl.exe status shows me the pump and fan rpm just fine. I can also set the fan/pump speed fine using .\liquidctl.exe -m h100i set fan speed 100.

Am i missing something? or has this just not been implemented yet?

Device #2: Corsair Hydro H100i v2
├── Vendor ID: 0x1b1c
├── Product ID: 0x0c09
├── Release number: 0x0100
├── Serial number: 7289_2.0
├── Bus: usb3
├── Address: 7
├── Port: 19.2
└── Driver: Hydro690Lc

Can I upgrade only liquidctl.exe?

I have an NZXT Controller hub that apparently is not recognized by this plugin.
Executing the included liquidctl.exe with liquidctl.exe list --debug also showed nothing (and a version number 0.0.0-unknown?), so I went to the liquidctl repository and downloaded and build the latest revision, which then did show two recognized units:

  • NZXT RGB & Fan Controller (3+6 channels)
  • NZXT Kraken 2023 Elite (broken)

I actually wanted to control the Fan Controller, so it should be fine, however the plugin still doesn't recognize anything in Fan Control after having replaced the liquidctl.exe with the newly built one.
Do I need to compile the whole project again, or does the code of the DLL itself also need to be updated to support anything new that has been added to liquidtctl?

Plugin not working with Corsair H100i v2 due to version naming

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()

NZXT Kraken X72 - Lack of Pump Duty causes unhandled exception and no UI in Fan Control

With a system with a NZXT Kraken X72, there is no pump duty in the status return. Just pump speed, fan speed and liquid temperature. This appears to cause an unhandled exception in FanControl.Liquidctl and exceptions in FanControl trying to construct UI elements.

In LiquidctlDevice.cs, the constructor that takes the JSON output, hasPumpDuty and hasPumpSpeed are being set based off of the other strings' key value.

        hasPumpSpeed = output.status.Exists(entry => entry.key == "Pump duty" && !(entry.value is null));
        if (hasPumpSpeed)
            pumpDuty = new PumpDuty(output);

        hasPumpDuty = output.status.Exists(entry => entry.key == "Pump speed" && !(entry.value is null));
        if (hasPumpDuty)
            pumpSpeed = new PumpSpeed(output);

should be:

        hasPumpDuty = output.status.Exists(entry => entry.key == "Pump duty" && !(entry.value is null));
        if (hasPumpDuty)
            pumpDuty = new PumpDuty(output);

        hasPumpSpeed = output.status.Exists(entry => entry.key == "Pump speed" && !(entry.value is null));
        if (hasPumpSpeed)
            pumpSpeed = new PumpSpeed(output);

With this change, FanControl loads successfully with the UI available and the X72's pump speed and temperature sensor data is available.

An unexpected error has occured and has been added to the log file. Kraken x62

Fan Control version 132
0.1.1 version of this plugin

21.10.2022 20:04:18: Unhandled exception in FanControl v1.0.0.0
21.10.2022 20:04:18: System.NullReferenceException: Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu.
   w FanControl.Liquidctl.LiquidctlDevice.UpdateFromJSON(LiquidctlStatusJSON output)
   w FanControl.Liquidctl.LiquidctlDevice.LoadJSON()
   w FanControl.Liquidctl.LiquidctlPlugin.Update()
   w FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Update() w C:\Users\Remi\source\repos\FanControl\FanControl.Library\Domain\BackendProviders\Plugin\PluginBackendProvider.cs:wiersz 71
   w System.Collections.Generic.List`1.ForEach(Action`1 action)
   w FanControl.Domain.ComputerAccessLayer.Update() w C:\Users\Remi\source\repos\FanControl\FanControl.Library\Domain\ComputerAccessLayer.cs:wiersz 212
   w FanControl.Domain.ApplicationClock.DoActions() w C:\Users\Remi\source\repos\FanControl\FanControl.Library\Domain\ApplicationClock.cs:wiersz 68
--- Koniec śladu stosu z poprzedniej lokalizacji, w której wystąpił wyjątek ---
   w System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   w System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   w System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

Am I losing my mind here?

When I used the liquidctl plugin for the first time and ever since, it turns off the rgb on my motherboard. Is this a thing and is there a way I can disable the rgb controlling of the plugin? I made no other changes of any kind, once I launched fan control with liquidctl plugin enabled now the lights by the back i/o turn off as soon as fan control launches.

I love being able to control fans using liquid temp so ill actually just deal with this over not using it but id love to turn off this if its even possible.

FanControl is not launching with this plugin

Hey, I have been using liquidctl for some time to manage my NZXT Kraken x52 but I can't seem to find a working plugin for FanControl, when I am launching FanControl it just hangs and never really starts, have to terminate it manually in Task Manager. Any idea why is this happening...

Running the Liquidctl plugin for FanControl causes Elgato FaceCam to disconnect and reconnect sporadically when camera is idle

FYI, this is a repost from a bug I posted on the FanControl issues board. Troubleshooting there isolated the issue to this plugin.

Describe the bug
Running FanControl with the liquidctl plugin installed and running causes my Elgato FaceCam to disconnect and reconnect sporadically when it's idle, causing Windows to make the "device disconnected/device reconnected chimes". I'm running Windows 11 Pro.

When the camera is in use (OBS on, etc), it doesn't happen. I've confirmed that when FanControl is off, it doesn't happen. I'm using FanControl v.139, Elgato Cam Hub software is 1.5.0.801 and the camera firmware is v4.06. The only plugin I'm using with FanControl is the Liquidctl Plugin to pull liquid temps from my Kraken Z53. When I run FanControl with the liquidctl plugin disabled, it doesn't happen.

If it helps, when I use the current version of liquidctl to update the screen on my Kraken radiator, I don't have a similar problem.

Is there a log.txt file next to FanControl.exe with recent date entries?
The recent date entries are due to me removing and reinstalling the Kraken drivers, because I thought it was the culprit. Here's a representative entry, just in case.

`

at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
12/11/2022 5:00:24 PM: Unhandled exception in FanControl v1.0.0.0
12/11/2022 5:00:24 PM: System.Exception: liquidctl returned non-zero exit code 1. Last stderr output:
WARNING: python -m liquidctl.cli is deprecated, prefer python -m liquidctl
ERROR: unexpected OS error with NZXT Kraken Z (Z53, Z63 or Z73): OSError('read error')

at FanControl.Liquidctl.LiquidctlCLIWrapper.LiquidctlCall(String arguments)
at FanControl.Liquidctl.LiquidctlCLIWrapper.ReadStatus(String address)
at FanControl.Liquidctl.LiquidctlDevice.LoadJSON()
at FanControl.Liquidctl.LiquidctlPlugin.Update()
at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Update()
at System.Collections.Generic.List1.ForEach(Action1 action)
at FanControl.Domain.ComputerAccessLayer.Update()
at FanControl.Domain.ApplicationClock.DoActions()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

`

Relevant hardware specs and setup
Motherboard is a ROG Maximum Z790 Apex, there are Fractal RGB Aspect fans plugged into the motherboard headers, and the cooler/AIO is a NZXT Kraken Z53 with nothing else plugged into it.

Corsair Hydro H115i Platinum Support

From what it looks like the H115i is currently not supported.

But I'm willing to work with you to get it to support you if you are available.

Thanks!

Can't see the fan speed controls

Is this only to add the option to monitor liquid temps and adjusting the pump speeds?

or am I missing to see the option for fan controls as well?

Can't get plugin to recognize in Fan Control.

Good evening, This isn't a problem with the code, but I may require kit gloves on this and I didn't find anywhere else that explained the process. I extracted the zip file into the plugins section of my Fan Control folder. How do I go about creating .exe, and the references mentioned to get Fan Control to recognize the plugin?

High CPU Usage (Antimalware Service Executable)

I have wondered for a few weeks why my CPU Usage is relatively high in idle.
Today I found out hat it does occur because of the liquidctl plugin for FanControl.

I do experience about 9-14% CPU usage from the Antimalware Service Executable (MsMpEng.exe) process when the plugin is enabled.
image

Compared to 0-0.5% CPU usage from the Antimalware Service Executable (MsMpEng.exe) process when the plugin is disabled.
image

In my case when the plugin is enabled:

  • the CPU also runs about 5°C hotter (due to not being able to throttle down when in idle),
  • the CPU clock is about 3 times higher,
  • the CPU power usage is on average 2 times higher.

From what I read, the other liquidctl plugin for FanControl (https://github.com/chenseanxy/FanControl.LiquidCtl) seems to addressed this issue by using Python.NET. Atleast that is what is mentioned in the README.md. I did not test the other plugin, though.

Due to having the goal to keep the computer quieter and cooler, I did disable the plugin for now, because it does not really benefit having it turned on in the current state because of this behaviour.

I do appreciate the work that was put into the plugin a lot.
I own a Kraken X61, which did not work out of the box, therefore I tinkered with it and liquidctl to get it working.

Is this issue something you recognized too?

Corsair Hydro H115i Pro XT not working due to lack of pump channel

Control for my Corsair Hydro H115i Pro XT does not work because the pump speed is not settable directly, which the plugin tries to do in PumpDuty.Reset().

Instead, the pump mode can be set to one of three modes. How this is done is documented here: https://github.com/liquidctl/liquidctl/blob/main/docs/corsair-platinum-pro-xt-guide.md

Note that this is a different issue with a different model than what is documented here: #9

Here is the log:

10/21/2022 8:42:20 AM: System.Exception: liquidctl returned non-zero exit code 1. Last stderr output:
WARNING: python -m liquidctl.cli is deprecated, prefer python -m liquidctl
ERROR: unexpected error with Corsair Hydro H115i Pro XT: ValueError("unknown channel, should be one of: 'fan', 'fan1', 'fan2'")

   at FanControl.Liquidctl.LiquidctlCLIWrapper.LiquidctlCall(String arguments)
   at FanControl.Liquidctl.LiquidctlDevice.PumpDuty.Reset()
   at FanControl.Domain.Control..ctor(IControlSensor control, IControlConfig controlConfig, IFanCurveRepository fanCurveRepository, ISensorRepository sensorRepository) in C:\Users\Remi\source\repos\FanControl\FanControl.Library\Domain\Control.cs:line 39
   at FanControl.ViewModels.ControlViewModel..ctor(IControlSensor controlSensor, ObservableCollection`1 fanCurves, ObservableCollection`1 fanSensors, IApplicationClock applicationClock, Func`1 selectMatchingFan, Func`2 automaticSelectMatchingFan, Func`2 automaticStartDetectionFan, Func`2 automaticStopDetectionSingleFan, Func`2 showForceApplyDialog) in C:\Users\Remi\source\repos\FanControl\FanControl.App\ViewModels\ControlViewModel.cs:line 72
   at FanControl.ViewModels.MainWindowViewModel.<LoadSensors>b__140_4(IControlSensor cs) in C:\Users\Remi\source\repos\FanControl\FanControl.App\ViewModels\MainWindowViewModel.cs:line 617
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at FanControl.MVVM.Extentions.AddRange[T](ObservableCollection`1 observableCollection, IEnumerable`1 items) in C:\Users\Remi\source\repos\FanControl\FanControl.Library\MVVM\Extentions.cs:line 11
   at FanControl.ViewModels.MainWindowViewModel.<ComputerAccessLayer_Refreshed>b__143_0() in C:\Users\Remi\source\repos\FanControl\FanControl.App\ViewModels\MainWindowViewModel.cs:line 653
   at System.Windows.Threading.DispatcherOperation.InvokeDelegateCore()
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Windows.Threading.DispatcherOperation.Wait(TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherOperation operation, CancellationToken cancellationToken, TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.Invoke(Action callback, DispatcherPriority priority, CancellationToken cancellationToken, TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.Invoke(Action callback)
   at System.Action.Invoke()
   at FanControl.Domain.ComputerAccessLayer.Refresh() in C:\Users\Remi\source\repos\FanControl\FanControl.Library\Domain\ComputerAccessLayer.cs:line 45
   at System.Threading.Tasks.Task`1.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at FanControl.ViewModels.Commands.SaveAndRefreshCommand.<<Execute>b__5_0>d.MoveNext() in C:\Users\Remi\source\repos\FanControl\FanControl.App\ViewModels\Commands\SaveAndRefreshCommand.cs:line 38
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at FanControl.Domain.DialogService.<>c__DisplayClass13_0`1.<<ProgressDialog>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

Constant hard drive writes? (8 to 15MB/s)

Has anyone else noticed a constant 8 to 15MB/s write interval when Liquidctl is installed?

I went back and fourth between removing and installing the Liquidctl plugin and when it's removed drive activity goes to near zero. Install it and activity jumps back to ~11MB/s.

With today's NVMe drives 11MB/s is not much at all, but after a week of just idling that would add up to 6.65 Terabytes of writes! Is this constant write activity normal?

failed to load plug in

I get a message stating: "failed to load plugin fancontrol.liquidctl.dll. Make sure the plugin's dll is unlocked in its properties". super noob here, just wondering how one goes about unlocking the dll in its properties?

liquidctl error

Plugin Failing to Initialize yet Ramping up fans when FanControl refreshed

Newest release of FanControl/liquidctl/FanControl.Liquidctl

"LiquidctlPlugin could not initialize or has no sensors" error upon program start/refresh yet all case fans are obviously ramping up when a refresh is ordered.

Using Smart Device V2, Windows 11, Python 3.12, all environment variables set correctly, initialize command in CMD works properly displaying all devices connected to the Smart Device

Any Ideas?

High CPU usage (Root of the problem)

Follow up of High CPU Usage (Antimalware Service Executable)

The root of the issue is that liquidctl.exe is constantly being opened and closed, I think 2 times per second, maybe more, checking resource monitor its constantly writing to %LocalAppData%/Temp, folders named something like: _MEI154122, constantly modifying, deleting and creating thema gain and again, I added appdata folder to windows defender exclusions and it fixed the Antimalware Service Executable (MsMpEng.exe) high cpu issue, but opening and closing liquidctl.exe still makes the CPU work too much and temps rise anyways.

I'll disable the plugin and use HWiNFO instead untill this gets sorted out.

Loading FanControl.Liquidctl v0.1.1 with latest and prebuilt liquidctl exeutable crashes FanControl at application startup

I'm running liquidictl v1.12.1 from a virtualize python environment on Windows 10 and come upon this message when starting up the latest build of Fancontrol (V1.51). This is without the prebuilt executable in the plugin directory. Currently running the latest build of liquidctl (v1.12.1) through python 3.11.

3/25/2023 11:00:52 AM: System.ComponentModel.Win32Exception (0x80004005): The system cannot find the file specified
   at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
   at FanControl.Liquidctl.LiquidctlCLIWrapper.LiquidctlCall(String arguments)
   at FanControl.Liquidctl.LiquidctlPlugin.Initialize()
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Open()

As a precaution, I disabled the path and python variables to it and placed the latest built of liquidctl directly into the plugin folder. Same result (though I would expect this).


3/25/2023 11:32:57 AM: Newtonsoft.Json.JsonReaderException: Could not convert string to double: balanced. Path '[0].status[3].value', line 1, position 290.
   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()

Just for sanity check I reverted back to the originally built liquidctl file from the latest version of the plugin and still having the same problem

3/25/2023 11:20:56 AM: System.Exception: liquidctl returned non-zero exit code -1073741819. Last stderr output:
WARNING: python -m liquidctl.cli is deprecated, prefer python -m liquidctl

   at FanControl.Liquidctl.LiquidctlCLIWrapper.LiquidctlCall(String arguments)
   at FanControl.Liquidctl.LiquidctlPlugin.Initialize()
   at FanControl.Domain.BackendProviders.Plugin.PluginBackendProvider.Open()

Additional relevant information:
The provided liquidictl provided with the plugin provide the following input with initializing:

PS C:\FanControl\Plugins> .\liquidctl.exe initialize
WARNING: python -m liquidctl.cli is deprecated, prefer python -m liquidctl
PS C:\FanControl\Plugins> .\liquidctl.exe --version
liquidctl v0.0.0-unknown (Windows-10-10.0.19045-SP0)

From the python virtualize environment

PS C:\python_venv\Scripts> .\liquidctl.exe initialize
Corsair Hydro H100i Pro
└── Firmware version    1.0.4.0

PS C:\python_venv\Scripts> .\liquidctl.exe --version
liquidctl v1.12.1 (Windows-10-10.0.19045-SP0)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.