├── FanControl.NucSoftwareServiceAPINetFour.zip ├── NucSoftwareServiceAPI.sln ├── NucSoftwareServiceAPINetFour ├── Connected Services │ ├── NssServicePerformanceTuningService │ │ ├── NucSoftwareServiceAPINetFour.NssServicePerformanceTuningService.FanProfile.datasource │ │ ├── NucSoftwareServiceAPINetFour.NssServicePerformanceTuningService.FanProfile23.datasource │ │ ├── NucSoftwareServiceAPINetFour.NssServicePerformanceTuningService.FanProfileRN.datasource │ │ ├── NucSoftwareServiceAPINetFour.NssServicePerformanceTuningService.PowerProfile.datasource │ │ ├── NucSoftwareServiceAPINetFour.NssServicePerformanceTuningService.PowerSetting.datasource │ │ ├── PerformanceTuningService.wsdl │ │ ├── Reference.cs │ │ ├── Reference.svcmap │ │ ├── configuration.svcinfo │ │ └── configuration91.svcinfo │ └── NucSoftwareServiceSystemMonitor │ │ ├── Reference.cs │ │ ├── Reference.svcmap │ │ ├── SystemMonitorService.wsdl │ │ ├── configuration.svcinfo │ │ └── configuration91.svcinfo ├── ControlSensor.cs ├── NucSoftwareServiceAPINetFour.csproj ├── NucSoftwareServiceFanControlPlugin.cs ├── Properties │ └── AssemblyInfo.cs ├── StaticFanController.cs ├── app.config ├── libs │ ├── FanControl.Plugins.dll │ ├── FanControl.Plugins.pdb │ └── FanControl.Plugins.xml └── obj │ ├── Debug │ ├── .NETFramework,Version=v4.6.2.AssemblyAttributes.cs │ ├── DesignTimeResolveAssemblyReferences.cache │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ ├── NucSoftwareServiceAPINetFour.csproj.FileListAbsolute.txt │ └── TempPE │ │ ├── Connected Services.NssServicePerformanceTuningService.Reference.cs.dll │ │ ├── Connected Services.NucServiceReference.Reference.cs.dll │ │ └── Connected Services.NucSoftwareServiceSystemMonitor.Reference.cs.dll │ └── Release │ ├── .NETFramework,Version=v4.6.2.AssemblyAttributes.cs │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ ├── NucSoftwareServiceAPINetFour.csproj.FileListAbsolute.txt │ └── TempPE │ ├── Connected Services.NssServicePerformanceTuningService.Reference.cs.dll │ └── Connected Services.NucSoftwareServiceSystemMonitor.Reference.cs.dll ├── README.md └── SimpleRunnerApp ├── App.config ├── Program.cs ├── Properties └── AssemblyInfo.cs ├── SimpleRunnerApp.csproj └── obj ├── Debug ├── .NETFramework,Version=v4.6.2.AssemblyAttributes.cs ├── DesignTimeResolveAssemblyReferencesInput.cache └── SimpleRunnerApp.csproj.FileListAbsolute.txt └── Release ├── .NETFramework,Version=v4.6.2.AssemblyAttributes.cs ├── DesignTimeResolveAssemblyReferencesInput.cache ├── SimpleRunnerApp.csproj.FileListAbsolute.txt └── build.force /FanControl.NucSoftwareServiceAPINetFour.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crazynucfan/FanControl.IntelNUCSoftwareStudioPlugin/9d5c0b266e1f94c6d2b1e9975a34aa700c175b49/FanControl.NucSoftwareServiceAPINetFour.zip -------------------------------------------------------------------------------- /NucSoftwareServiceAPI.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.3.32929.385 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NucSoftwareServiceAPINetFour", "NucSoftwareServiceAPINetFour\NucSoftwareServiceAPINetFour.csproj", "{1ACB66A7-2C74-4B06-99DB-0B45890BE2B2}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleRunnerApp", "SimpleRunnerApp\SimpleRunnerApp.csproj", "{DDCFB7C6-C10F-4D09-992C-886CF70D7FD6}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {1ACB66A7-2C74-4B06-99DB-0B45890BE2B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {1ACB66A7-2C74-4B06-99DB-0B45890BE2B2}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {1ACB66A7-2C74-4B06-99DB-0B45890BE2B2}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {1ACB66A7-2C74-4B06-99DB-0B45890BE2B2}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {DDCFB7C6-C10F-4D09-992C-886CF70D7FD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {DDCFB7C6-C10F-4D09-992C-886CF70D7FD6}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {DDCFB7C6-C10F-4D09-992C-886CF70D7FD6}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {DDCFB7C6-C10F-4D09-992C-886CF70D7FD6}.Release|Any CPU.Build.0 = Release|Any CPU 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {2F02E3A2-AAD7-4726-91E8-ECB9199A3976} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/Connected Services/NssServicePerformanceTuningService/NucSoftwareServiceAPINetFour.NssServicePerformanceTuningService.FanProfile.datasource: -------------------------------------------------------------------------------- 1 |  2 | 8 | 9 | NucSoftwareServiceAPINetFour.NssServicePerformanceTuningService.FanProfile, Connected Services.NssServicePerformanceTuningService.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null 10 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/Connected Services/NssServicePerformanceTuningService/NucSoftwareServiceAPINetFour.NssServicePerformanceTuningService.FanProfile23.datasource: -------------------------------------------------------------------------------- 1 |  2 | 8 | 9 | NucSoftwareServiceAPINetFour.NssServicePerformanceTuningService.FanProfile23, Connected Services.NssServicePerformanceTuningService.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null 10 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/Connected Services/NssServicePerformanceTuningService/NucSoftwareServiceAPINetFour.NssServicePerformanceTuningService.FanProfileRN.datasource: -------------------------------------------------------------------------------- 1 |  2 | 8 | 9 | NucSoftwareServiceAPINetFour.NssServicePerformanceTuningService.FanProfileRN, Connected Services.NssServicePerformanceTuningService.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null 10 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/Connected Services/NssServicePerformanceTuningService/NucSoftwareServiceAPINetFour.NssServicePerformanceTuningService.PowerProfile.datasource: -------------------------------------------------------------------------------- 1 |  2 | 8 | 9 | NucSoftwareServiceAPINetFour.NssServicePerformanceTuningService.PowerProfile, Connected Services.NssServicePerformanceTuningService.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null 10 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/Connected Services/NssServicePerformanceTuningService/NucSoftwareServiceAPINetFour.NssServicePerformanceTuningService.PowerSetting.datasource: -------------------------------------------------------------------------------- 1 |  2 | 8 | 9 | NucSoftwareServiceAPINetFour.NssServicePerformanceTuningService.PowerSetting, Connected Services.NssServicePerformanceTuningService.Reference.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null 10 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/Connected Services/NssServicePerformanceTuningService/Reference.svcmap: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | false 5 | true 6 | true 7 | 8 | false 9 | false 10 | false 11 | 12 | 13 | true 14 | Auto 15 | true 16 | true 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/Connected Services/NssServicePerformanceTuningService/configuration.svcinfo: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/Connected Services/NssServicePerformanceTuningService/configuration91.svcinfo: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | WSHttpBinding_IPerformanceTuningServiceContract 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | False 26 | 27 | 28 | StrongWildcard 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | Text 38 | 39 | 40 | 41 | 42 | 43 | System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement 44 | 45 | 46 | 0 47 | 48 | 49 | 0 50 | 51 | 52 | 0 53 | 54 | 55 | 0 56 | 57 | 58 | 0 59 | 60 | 61 | System.ServiceModel.Configuration.StandardBindingOptionalReliableSessionElement 62 | 63 | 64 | True 65 | 66 | 67 | 00:10:00 68 | 69 | 70 | False 71 | 72 | 73 | System.Text.UTF8Encoding 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | System.ServiceModel.Configuration.WSHttpSecurityElement 83 | 84 | 85 | Message 86 | 87 | 88 | System.ServiceModel.Configuration.WSHttpTransportSecurityElement 89 | 90 | 91 | Windows 92 | 93 | 94 | None 95 | 96 | 97 | System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement 98 | 99 | 100 | Never 101 | 102 | 103 | TransportSelected 104 | 105 | 106 | (Collection) 107 | 108 | 109 | 110 | 111 | 112 | System.ServiceModel.Configuration.NonDualMessageSecurityOverHttpElement 113 | 114 | 115 | Windows 116 | 117 | 118 | True 119 | 120 | 121 | Default 122 | 123 | 124 | True 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | http://localhost:43568/NssService/service/PerformanceTuning 134 | 135 | 136 | 137 | 138 | 139 | wsHttpBinding 140 | 141 | 142 | WSHttpBinding_IPerformanceTuningServiceContract 143 | 144 | 145 | NssServicePerformanceTuningService.IPerformanceTuningServiceContract 146 | 147 | 148 | System.ServiceModel.Configuration.AddressHeaderCollectionElement 149 | 150 | 151 | <Header /> 152 | 153 | 154 | System.ServiceModel.Configuration.IdentityElement 155 | 156 | 157 | System.ServiceModel.Configuration.UserPrincipalNameElement 158 | 159 | 160 | 161 | 162 | 163 | System.ServiceModel.Configuration.ServicePrincipalNameElement 164 | 165 | 166 | host/nux 167 | 168 | 169 | System.ServiceModel.Configuration.DnsElement 170 | 171 | 172 | 173 | 174 | 175 | System.ServiceModel.Configuration.RsaElement 176 | 177 | 178 | 179 | 180 | 181 | System.ServiceModel.Configuration.CertificateElement 182 | 183 | 184 | 185 | 186 | 187 | System.ServiceModel.Configuration.CertificateReferenceElement 188 | 189 | 190 | My 191 | 192 | 193 | LocalMachine 194 | 195 | 196 | FindBySubjectDistinguishedName 197 | 198 | 199 | 200 | 201 | 202 | False 203 | 204 | 205 | WSHttpBinding_IPerformanceTuningServiceContract 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/Connected Services/NucSoftwareServiceSystemMonitor/Reference.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace NucSoftwareServiceAPINetFour.NucSoftwareServiceSystemMonitor { 12 | using System.Runtime.Serialization; 13 | using System; 14 | 15 | 16 | [System.Diagnostics.DebuggerStepThroughAttribute()] 17 | [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")] 18 | [System.Runtime.Serialization.DataContractAttribute(Name="FanSpeed", Namespace="http://schemas.datacontract.org/2004/07/PerformanceTuningLibrary")] 19 | [System.SerializableAttribute()] 20 | public partial struct FanSpeed : System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged { 21 | 22 | [System.NonSerializedAttribute()] 23 | private System.Runtime.Serialization.ExtensionDataObject extensionDataField; 24 | 25 | [System.Runtime.Serialization.OptionalFieldAttribute()] 26 | private string nameField; 27 | 28 | [System.Runtime.Serialization.OptionalFieldAttribute()] 29 | private uint speedField; 30 | 31 | [System.Runtime.Serialization.OptionalFieldAttribute()] 32 | private NucSoftwareServiceAPINetFour.NucSoftwareServiceSystemMonitor.FanType typeField; 33 | 34 | public System.Runtime.Serialization.ExtensionDataObject ExtensionData { 35 | get { 36 | return this.extensionDataField; 37 | } 38 | set { 39 | this.extensionDataField = value; 40 | } 41 | } 42 | 43 | [System.Runtime.Serialization.DataMemberAttribute()] 44 | public string name { 45 | get { 46 | return this.nameField; 47 | } 48 | set { 49 | if ((object.ReferenceEquals(this.nameField, value) != true)) { 50 | this.nameField = value; 51 | this.RaisePropertyChanged("name"); 52 | } 53 | } 54 | } 55 | 56 | [System.Runtime.Serialization.DataMemberAttribute()] 57 | public uint speed { 58 | get { 59 | return this.speedField; 60 | } 61 | set { 62 | if ((this.speedField.Equals(value) != true)) { 63 | this.speedField = value; 64 | this.RaisePropertyChanged("speed"); 65 | } 66 | } 67 | } 68 | 69 | [System.Runtime.Serialization.DataMemberAttribute()] 70 | public NucSoftwareServiceAPINetFour.NucSoftwareServiceSystemMonitor.FanType type { 71 | get { 72 | return this.typeField; 73 | } 74 | set { 75 | if ((this.typeField.Equals(value) != true)) { 76 | this.typeField = value; 77 | this.RaisePropertyChanged("type"); 78 | } 79 | } 80 | } 81 | 82 | public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; 83 | 84 | void RaisePropertyChanged(string propertyName) { 85 | System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged; 86 | if ((propertyChanged != null)) { 87 | propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName)); 88 | } 89 | } 90 | } 91 | 92 | [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")] 93 | [System.Runtime.Serialization.DataContractAttribute(Name="FanType", Namespace="http://schemas.datacontract.org/2004/07/PerformanceTuningLibrary")] 94 | public enum FanType : byte { 95 | 96 | [System.Runtime.Serialization.EnumMemberAttribute()] 97 | NotConnected = 0, 98 | 99 | [System.Runtime.Serialization.EnumMemberAttribute()] 100 | CPUFan = 1, 101 | 102 | [System.Runtime.Serialization.EnumMemberAttribute()] 103 | dGPUFan = 2, 104 | 105 | [System.Runtime.Serialization.EnumMemberAttribute()] 106 | SystemFan1 = 3, 107 | 108 | [System.Runtime.Serialization.EnumMemberAttribute()] 109 | SystemFan2 = 4, 110 | 111 | [System.Runtime.Serialization.EnumMemberAttribute()] 112 | LiquidCoolerFanPump = 5, 113 | 114 | [System.Runtime.Serialization.EnumMemberAttribute()] 115 | Unsupported = 6, 116 | 117 | [System.Runtime.Serialization.EnumMemberAttribute()] 118 | CPUFan2 = 7, 119 | } 120 | 121 | [System.Diagnostics.DebuggerStepThroughAttribute()] 122 | [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")] 123 | [System.Runtime.Serialization.DataContractAttribute(Name="SystemMonitorData", Namespace="http://schemas.datacontract.org/2004/07/SystemMonitorLibrary.Hardware")] 124 | [System.SerializableAttribute()] 125 | public partial class SystemMonitorData : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged { 126 | 127 | [System.NonSerializedAttribute()] 128 | private System.Runtime.Serialization.ExtensionDataObject extensionDataField; 129 | 130 | [System.Runtime.Serialization.OptionalFieldAttribute()] 131 | private System.Collections.Generic.Dictionary BatteryInformationField; 132 | 133 | [System.Runtime.Serialization.OptionalFieldAttribute()] 134 | private System.Collections.Generic.Dictionary DiscreteGpuInformationField; 135 | 136 | [System.Runtime.Serialization.OptionalFieldAttribute()] 137 | private System.Collections.Generic.Dictionary IntegratedGpuInformationField; 138 | 139 | [System.Runtime.Serialization.OptionalFieldAttribute()] 140 | private System.Collections.Generic.Dictionary MemoryInformationField; 141 | 142 | [System.Runtime.Serialization.OptionalFieldAttribute()] 143 | private System.Collections.Generic.Dictionary ProcessorInformationField; 144 | 145 | [System.Runtime.Serialization.OptionalFieldAttribute()] 146 | private System.Collections.Generic.Dictionary[] StorageInformationField; 147 | 148 | [System.Runtime.Serialization.OptionalFieldAttribute()] 149 | private System.Collections.Generic.Dictionary SystemInformationField; 150 | 151 | [global::System.ComponentModel.BrowsableAttribute(false)] 152 | public System.Runtime.Serialization.ExtensionDataObject ExtensionData { 153 | get { 154 | return this.extensionDataField; 155 | } 156 | set { 157 | this.extensionDataField = value; 158 | } 159 | } 160 | 161 | [System.Runtime.Serialization.DataMemberAttribute()] 162 | public System.Collections.Generic.Dictionary BatteryInformation { 163 | get { 164 | return this.BatteryInformationField; 165 | } 166 | set { 167 | if ((object.ReferenceEquals(this.BatteryInformationField, value) != true)) { 168 | this.BatteryInformationField = value; 169 | this.RaisePropertyChanged("BatteryInformation"); 170 | } 171 | } 172 | } 173 | 174 | [System.Runtime.Serialization.DataMemberAttribute()] 175 | public System.Collections.Generic.Dictionary DiscreteGpuInformation { 176 | get { 177 | return this.DiscreteGpuInformationField; 178 | } 179 | set { 180 | if ((object.ReferenceEquals(this.DiscreteGpuInformationField, value) != true)) { 181 | this.DiscreteGpuInformationField = value; 182 | this.RaisePropertyChanged("DiscreteGpuInformation"); 183 | } 184 | } 185 | } 186 | 187 | [System.Runtime.Serialization.DataMemberAttribute()] 188 | public System.Collections.Generic.Dictionary IntegratedGpuInformation { 189 | get { 190 | return this.IntegratedGpuInformationField; 191 | } 192 | set { 193 | if ((object.ReferenceEquals(this.IntegratedGpuInformationField, value) != true)) { 194 | this.IntegratedGpuInformationField = value; 195 | this.RaisePropertyChanged("IntegratedGpuInformation"); 196 | } 197 | } 198 | } 199 | 200 | [System.Runtime.Serialization.DataMemberAttribute()] 201 | public System.Collections.Generic.Dictionary MemoryInformation { 202 | get { 203 | return this.MemoryInformationField; 204 | } 205 | set { 206 | if ((object.ReferenceEquals(this.MemoryInformationField, value) != true)) { 207 | this.MemoryInformationField = value; 208 | this.RaisePropertyChanged("MemoryInformation"); 209 | } 210 | } 211 | } 212 | 213 | [System.Runtime.Serialization.DataMemberAttribute()] 214 | public System.Collections.Generic.Dictionary ProcessorInformation { 215 | get { 216 | return this.ProcessorInformationField; 217 | } 218 | set { 219 | if ((object.ReferenceEquals(this.ProcessorInformationField, value) != true)) { 220 | this.ProcessorInformationField = value; 221 | this.RaisePropertyChanged("ProcessorInformation"); 222 | } 223 | } 224 | } 225 | 226 | [System.Runtime.Serialization.DataMemberAttribute()] 227 | public System.Collections.Generic.Dictionary[] StorageInformation { 228 | get { 229 | return this.StorageInformationField; 230 | } 231 | set { 232 | if ((object.ReferenceEquals(this.StorageInformationField, value) != true)) { 233 | this.StorageInformationField = value; 234 | this.RaisePropertyChanged("StorageInformation"); 235 | } 236 | } 237 | } 238 | 239 | [System.Runtime.Serialization.DataMemberAttribute()] 240 | public System.Collections.Generic.Dictionary SystemInformation { 241 | get { 242 | return this.SystemInformationField; 243 | } 244 | set { 245 | if ((object.ReferenceEquals(this.SystemInformationField, value) != true)) { 246 | this.SystemInformationField = value; 247 | this.RaisePropertyChanged("SystemInformation"); 248 | } 249 | } 250 | } 251 | 252 | public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; 253 | 254 | protected void RaisePropertyChanged(string propertyName) { 255 | System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged; 256 | if ((propertyChanged != null)) { 257 | propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName)); 258 | } 259 | } 260 | } 261 | 262 | [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] 263 | [System.ServiceModel.ServiceContractAttribute(ConfigurationName="NucSoftwareServiceSystemMonitor.ISystemMonitorServiceContract", CallbackContract=typeof(NucSoftwareServiceAPINetFour.NucSoftwareServiceSystemMonitor.ISystemMonitorServiceContractCallback))] 264 | public interface ISystemMonitorServiceContract { 265 | 266 | [System.ServiceModel.OperationContractAttribute(IsOneWay=true, Action="http://tempuri.org/ISystemMonitorServiceContract/Subscribe")] 267 | void Subscribe(); 268 | 269 | [System.ServiceModel.OperationContractAttribute(IsOneWay=true, Action="http://tempuri.org/ISystemMonitorServiceContract/Subscribe")] 270 | System.Threading.Tasks.Task SubscribeAsync(); 271 | } 272 | 273 | [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] 274 | public interface ISystemMonitorServiceContractCallback { 275 | 276 | [System.ServiceModel.OperationContractAttribute(IsOneWay=true, Action="http://tempuri.org/ISystemMonitorServiceContract/SystemMonitorDataCallback")] 277 | void SystemMonitorDataCallback(NucSoftwareServiceAPINetFour.NucSoftwareServiceSystemMonitor.FanSpeed[] FanData, NucSoftwareServiceAPINetFour.NucSoftwareServiceSystemMonitor.SystemMonitorData SystemData); 278 | } 279 | 280 | [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] 281 | public interface ISystemMonitorServiceContractChannel : NucSoftwareServiceAPINetFour.NucSoftwareServiceSystemMonitor.ISystemMonitorServiceContract, System.ServiceModel.IClientChannel { 282 | } 283 | 284 | [System.Diagnostics.DebuggerStepThroughAttribute()] 285 | [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] 286 | public partial class SystemMonitorServiceContractClient : System.ServiceModel.DuplexClientBase, NucSoftwareServiceAPINetFour.NucSoftwareServiceSystemMonitor.ISystemMonitorServiceContract { 287 | 288 | public SystemMonitorServiceContractClient(System.ServiceModel.InstanceContext callbackInstance) : 289 | base(callbackInstance) { 290 | } 291 | 292 | public SystemMonitorServiceContractClient(System.ServiceModel.InstanceContext callbackInstance, string endpointConfigurationName) : 293 | base(callbackInstance, endpointConfigurationName) { 294 | } 295 | 296 | public SystemMonitorServiceContractClient(System.ServiceModel.InstanceContext callbackInstance, string endpointConfigurationName, string remoteAddress) : 297 | base(callbackInstance, endpointConfigurationName, remoteAddress) { 298 | } 299 | 300 | public SystemMonitorServiceContractClient(System.ServiceModel.InstanceContext callbackInstance, string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 301 | base(callbackInstance, endpointConfigurationName, remoteAddress) { 302 | } 303 | 304 | public SystemMonitorServiceContractClient(System.ServiceModel.InstanceContext callbackInstance, System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 305 | base(callbackInstance, binding, remoteAddress) { 306 | } 307 | 308 | public void Subscribe() { 309 | base.Channel.Subscribe(); 310 | } 311 | 312 | public System.Threading.Tasks.Task SubscribeAsync() { 313 | return base.Channel.SubscribeAsync(); 314 | } 315 | } 316 | } 317 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/Connected Services/NucSoftwareServiceSystemMonitor/Reference.svcmap: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | false 5 | true 6 | true 7 | 8 | false 9 | false 10 | false 11 | 12 | 13 | true 14 | Auto 15 | true 16 | true 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/Connected Services/NucSoftwareServiceSystemMonitor/SystemMonitorService.wsdl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | EncryptAndSign 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | true 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | true 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | http://localhost:43566/NssService/service/SystemMonitor 375 | 376 | host/nux 377 | 378 | 379 | 380 | 381 | 382 | 383 | net.pipe://localhost/NssService/service/SystemMonitor 384 | 385 | host/nux 386 | 387 | 388 | 389 | 390 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/Connected Services/NucSoftwareServiceSystemMonitor/configuration.svcinfo: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/Connected Services/NucSoftwareServiceSystemMonitor/configuration91.svcinfo: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | NetNamedPipeBinding_ISystemMonitorServiceContract 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | False 23 | 24 | 25 | Buffered 26 | 27 | 28 | OleTransactions 29 | 30 | 31 | StrongWildcard 32 | 33 | 34 | 35 | 36 | 37 | 65536 38 | 39 | 40 | 0 41 | 42 | 43 | 44 | 45 | 46 | System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement 47 | 48 | 49 | 0 50 | 51 | 52 | 0 53 | 54 | 55 | 0 56 | 57 | 58 | 0 59 | 60 | 61 | 0 62 | 63 | 64 | System.ServiceModel.Configuration.NetNamedPipeSecurityElement 65 | 66 | 67 | Transport 68 | 69 | 70 | System.ServiceModel.Configuration.NamedPipeTransportSecurityElement 71 | 72 | 73 | EncryptAndSign 74 | 75 | 76 | 77 | 78 | 79 | 80 | WSDualHttpBinding_ISystemMonitorServiceContract 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | False 102 | 103 | 104 | StrongWildcard 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | Text 114 | 115 | 116 | 117 | 118 | 119 | System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement 120 | 121 | 122 | 0 123 | 124 | 125 | 0 126 | 127 | 128 | 0 129 | 130 | 131 | 0 132 | 133 | 134 | 0 135 | 136 | 137 | System.ServiceModel.Configuration.StandardBindingReliableSessionElement 138 | 139 | 140 | True 141 | 142 | 143 | 00:10:00 144 | 145 | 146 | System.ServiceModel.Configuration.WSDualHttpSecurityElement 147 | 148 | 149 | Message 150 | 151 | 152 | System.ServiceModel.Configuration.MessageSecurityOverHttpElement 153 | 154 | 155 | Windows 156 | 157 | 158 | True 159 | 160 | 161 | Default 162 | 163 | 164 | System.Text.UTF8Encoding 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | http://localhost:43566/NssService/service/SystemMonitor 177 | 178 | 179 | 180 | 181 | 182 | wsDualHttpBinding 183 | 184 | 185 | WSDualHttpBinding_ISystemMonitorServiceContract 186 | 187 | 188 | NucSoftwareServiceSystemMonitor.ISystemMonitorServiceContract 189 | 190 | 191 | System.ServiceModel.Configuration.AddressHeaderCollectionElement 192 | 193 | 194 | <Header /> 195 | 196 | 197 | System.ServiceModel.Configuration.IdentityElement 198 | 199 | 200 | System.ServiceModel.Configuration.UserPrincipalNameElement 201 | 202 | 203 | 204 | 205 | 206 | System.ServiceModel.Configuration.ServicePrincipalNameElement 207 | 208 | 209 | host/nux 210 | 211 | 212 | System.ServiceModel.Configuration.DnsElement 213 | 214 | 215 | 216 | 217 | 218 | System.ServiceModel.Configuration.RsaElement 219 | 220 | 221 | 222 | 223 | 224 | System.ServiceModel.Configuration.CertificateElement 225 | 226 | 227 | 228 | 229 | 230 | System.ServiceModel.Configuration.CertificateReferenceElement 231 | 232 | 233 | My 234 | 235 | 236 | LocalMachine 237 | 238 | 239 | FindBySubjectDistinguishedName 240 | 241 | 242 | 243 | 244 | 245 | False 246 | 247 | 248 | WSDualHttpBinding_ISystemMonitorServiceContract 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | net.pipe://localhost/NssService/service/SystemMonitor 262 | 263 | 264 | 265 | 266 | 267 | netNamedPipeBinding 268 | 269 | 270 | NetNamedPipeBinding_ISystemMonitorServiceContract 271 | 272 | 273 | NucSoftwareServiceSystemMonitor.ISystemMonitorServiceContract 274 | 275 | 276 | System.ServiceModel.Configuration.AddressHeaderCollectionElement 277 | 278 | 279 | <Header /> 280 | 281 | 282 | System.ServiceModel.Configuration.IdentityElement 283 | 284 | 285 | System.ServiceModel.Configuration.UserPrincipalNameElement 286 | 287 | 288 | 289 | 290 | 291 | System.ServiceModel.Configuration.ServicePrincipalNameElement 292 | 293 | 294 | host/nux 295 | 296 | 297 | System.ServiceModel.Configuration.DnsElement 298 | 299 | 300 | 301 | 302 | 303 | System.ServiceModel.Configuration.RsaElement 304 | 305 | 306 | 307 | 308 | 309 | System.ServiceModel.Configuration.CertificateElement 310 | 311 | 312 | 313 | 314 | 315 | System.ServiceModel.Configuration.CertificateReferenceElement 316 | 317 | 318 | My 319 | 320 | 321 | LocalMachine 322 | 323 | 324 | FindBySubjectDistinguishedName 325 | 326 | 327 | 328 | 329 | 330 | False 331 | 332 | 333 | NetNamedPipeBinding_ISystemMonitorServiceContract 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/ControlSensor.cs: -------------------------------------------------------------------------------- 1 | using FanControl.Plugins; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace NucSoftwareServiceAPINetFour 9 | { 10 | internal class ControlSensor : IPluginControlSensor 11 | { 12 | private string _id = ""; 13 | string IPluginSensor.Id => _id; 14 | 15 | private string _name = ""; 16 | string IPluginSensor.Name => _name; 17 | 18 | private float _value = 25; 19 | float? IPluginSensor.Value => _value; 20 | 21 | public ControlSensor(string id, string name) 22 | { 23 | _id = id; 24 | _name = name; 25 | } 26 | 27 | void IPluginControlSensor.Reset() 28 | { 29 | _value = 25; 30 | } 31 | 32 | void IPluginControlSensor.Set(float val) 33 | { 34 | _value = val; 35 | byte byteVal = ((byte)((int)_value)); 36 | if (_id == "CPUFanSpeed") 37 | { 38 | StaticFanController.CPUFanSpeed = byteVal; 39 | } 40 | else if(_id == "SystemFan1") 41 | { 42 | StaticFanController.SystemFan1Speed = byteVal; 43 | } 44 | else if (_id == "SystemFan2") 45 | { 46 | StaticFanController.SystemFan2Speed = byteVal; 47 | } 48 | StaticFanController.SetValues(); 49 | } 50 | 51 | void IPluginSensor.Update() 52 | { 53 | 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/NucSoftwareServiceAPINetFour.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {1ACB66A7-2C74-4B06-99DB-0B45890BE2B2} 8 | Library 9 | Properties 10 | NucSoftwareServiceAPINetFour 11 | FanControl.NucSoftwareServiceAPINetFour 12 | v4.6.2 13 | 512 14 | true 15 | 16 | 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | pdbonly 27 | true 28 | bin\Release\ 29 | TRACE 30 | prompt 31 | 4 32 | 33 | 34 | 35 | libs\FanControl.Plugins.dll 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | True 51 | True 52 | Reference.svcmap 53 | 54 | 55 | True 56 | True 57 | Reference.svcmap 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | Reference.svcmap 71 | 72 | 73 | Reference.svcmap 74 | 75 | 76 | Reference.svcmap 77 | 78 | 79 | Reference.svcmap 80 | 81 | 82 | Reference.svcmap 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | WCF Proxy Generator 100 | Reference.cs 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | WCF Proxy Generator 112 | Reference.cs 113 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/NucSoftwareServiceFanControlPlugin.cs: -------------------------------------------------------------------------------- 1 | using FanControl.Plugins; 2 | using NucSoftwareServiceAPINetFour.NssServicePerformanceTuningService; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.ServiceModel; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | 10 | namespace NucSoftwareServiceAPINetFour 11 | { 12 | public class NucSoftwareServiceFanControlPlugin : IPlugin2 13 | { 14 | string IPlugin.Name => "NUC Software Service Plugin"; 15 | 16 | void IPlugin.Close() 17 | { 18 | StaticFanController.Close(); 19 | } 20 | 21 | void IPlugin.Initialize() 22 | { 23 | StaticFanController.EnsureWorkingWcfClient(); 24 | } 25 | 26 | void IPlugin.Load(IPluginSensorsContainer _container) 27 | { 28 | _container.ControlSensors.Add(new ControlSensor("CPUFanSpeed", "CPUFanSpeed")); 29 | _container.ControlSensors.Add(new ControlSensor("SystemFan1", "SystemFan1")); 30 | _container.ControlSensors.Add(new ControlSensor("SystemFan2", "SystemFan2")); 31 | } 32 | 33 | void IPlugin2.Update() 34 | { 35 | //do nothing 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("NucSoftwareServiceAPINetFour")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("NucSoftwareServiceAPINetFour")] 13 | [assembly: AssemblyCopyright("Copyright © 2023")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("1acb66a7-2c74-4b06-99db-0b45890be2b2")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/StaticFanController.cs: -------------------------------------------------------------------------------- 1 | using NucSoftwareServiceAPINetFour.NssServicePerformanceTuningService; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.ServiceModel; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace NucSoftwareServiceAPINetFour 10 | { 11 | internal class StaticFanController 12 | { 13 | public static byte CPUFanSpeed = 25; 14 | public static byte SystemFan1Speed = 25; 15 | public static byte SystemFan2Speed = 25; 16 | public static PerformanceTuningServiceContractClient WcfServiceClient = null; 17 | 18 | public static void EnsureWorkingWcfClient() 19 | { 20 | bool needNewClient = false; 21 | if (WcfServiceClient == null || WcfServiceClient.State != CommunicationState.Opened) 22 | { 23 | needNewClient = true; 24 | } 25 | //try a command, if its broken create a new context 26 | string[] res = null; 27 | try 28 | { 29 | res = WcfServiceClient.GetSupportedFanModes(); 30 | } 31 | catch 32 | { 33 | needNewClient = true; 34 | } 35 | 36 | if(res != null) 37 | { 38 | needNewClient = false; 39 | } 40 | 41 | if ( needNewClient ) 42 | { 43 | WcfServiceClient = new PerformanceTuningServiceContractClient(new WSHttpBinding(), new EndpointAddress("http://localhost:43568/NssService/service/PerformanceTuning?wsdl")); 44 | } 45 | } 46 | 47 | public static void Close() 48 | { 49 | EnsureWorkingWcfClient(); 50 | WcfServiceClient.ApplyBiosPowerProfile("Custom"); 51 | WcfServiceClient.Close(); 52 | WcfServiceClient = null; 53 | } 54 | 55 | public static void SetValues() 56 | { 57 | EnsureWorkingWcfClient(); 58 | FanControlAllFanSettings fcas = new FanControlAllFanSettings(); 59 | FanSetting fs1 = new FanSetting(); 60 | 61 | fs1.Configuration1 = 1; 62 | fs1.Configuration2 = 0; 63 | fs1.PrimaryMaximumTemperature = 100; 64 | fs1.PrimaryMinimumDuty = CPUFanSpeed; 65 | fs1.PrimaryMinimumTemperature = 100; 66 | fs1.PrimaryFanOffTemperature = 0; 67 | fs1.primaryInputSourceConfiguration = PrimaryInputSourceConfiguration.CPUTemperature; 68 | fs1.PrimaryDutyIncrement = 3; 69 | 70 | 71 | FanSetting fs2 = new FanSetting(); 72 | 73 | fs2.Configuration1 = 1; 74 | fs2.Configuration2 = 0; 75 | fs2.PrimaryMaximumTemperature = 100; 76 | fs2.PrimaryMinimumDuty = SystemFan1Speed; 77 | fs2.PrimaryMinimumTemperature = 100; 78 | fs2.PrimaryFanOffTemperature = 0; 79 | fs2.primaryInputSourceConfiguration = PrimaryInputSourceConfiguration.CPUTemperature; 80 | fs2.PrimaryDutyIncrement = 3; 81 | 82 | FanSetting fs3 = new FanSetting(); 83 | 84 | fs3.Configuration1 = 1; 85 | fs3.Configuration2 = 0; 86 | fs3.PrimaryMaximumTemperature = 100; 87 | fs3.PrimaryMinimumDuty = SystemFan2Speed; 88 | fs3.PrimaryMinimumTemperature = 100; 89 | fs3.PrimaryFanOffTemperature = 0; 90 | fs3.primaryInputSourceConfiguration = PrimaryInputSourceConfiguration.CPUTemperature; 91 | fs3.PrimaryDutyIncrement = 3; 92 | 93 | fcas.fanSettings = new FanSetting[] { fs1, fs2, fs3 }; 94 | 95 | //fcas.fanSettings 96 | try 97 | { 98 | WcfServiceClient.SetFanCustom(fcas); 99 | } 100 | catch 101 | { 102 | 103 | } 104 | } 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 20 | 21 | 22 | 23 | 24 | 28 | 29 | 30 | 31 | 32 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/libs/FanControl.Plugins.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crazynucfan/FanControl.IntelNUCSoftwareStudioPlugin/9d5c0b266e1f94c6d2b1e9975a34aa700c175b49/NucSoftwareServiceAPINetFour/libs/FanControl.Plugins.dll -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/libs/FanControl.Plugins.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crazynucfan/FanControl.IntelNUCSoftwareStudioPlugin/9d5c0b266e1f94c6d2b1e9975a34aa700c175b49/NucSoftwareServiceAPINetFour/libs/FanControl.Plugins.pdb -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/libs/FanControl.Plugins.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FanControl.Plugins 5 | 6 | 7 | 8 | 9 | Interface to implement a plugin. The life-cycle of the plugin is as follow: 10 | Initialize => Load => Close. These methods should be able to be called in this order any number of times 11 | without any side-effect or undisposed resources. 12 | 13 | 14 | 15 | 16 | Unique name of the plugin. Will be displayed in the UI. 17 | 18 | 19 | 20 | 21 | Called whenever the program starts or a refresh (Close + Initialize) is executed. 22 | 23 | 24 | 25 | 26 | Provides a container to inject sensors into fan control. 27 | 28 | Container 29 | 30 | 31 | 32 | Called whenever the program closes or a refresh (Close + Initialize) is executed. 33 | 34 | 35 | 36 | 37 | Newer version of the plugin interface. 38 | Adds a new "update hook" that can be used to update everything that is managed by the plugin in a single call 39 | Instead of using each update method 40 | Update will be called periodically after 41 | 42 | 43 | 44 | 45 | This method will be called periodically by FanControl during its internal update cycle. 46 | Use it to update any sensor or any ressource managed by the plugin. 47 | 48 | 49 | 50 | 51 | Represents a control sensor in the application. 52 | 53 | 54 | 55 | 56 | Set the fan speed the control in percent. Called when the corresponding control is enabled. 57 | 58 | Value between 0 and 100 59 | 60 | 61 | 62 | Reset the control to its default state. Called once when the corresponding control is disabled. 63 | 64 | 65 | 66 | 67 | Dialog component to be injected in the constructor of a . 68 | 69 | 70 | 71 | 72 | Prompt a message dialog to the user 73 | 74 | Message to be shown to the user 75 | A task that ends when the dialog is closed. 76 | 77 | 78 | 79 | Logger component to be injected in the constructor of a . 80 | 81 | 82 | 83 | 84 | Log a message to the application logger. 85 | 86 | 87 | 88 | 89 | 90 | Represents a sensor in the application. 91 | 92 | 93 | 94 | 95 | Unique id for the sensor. 96 | 97 | 98 | 99 | 100 | Name that will be displayed to the user 101 | 102 | 103 | 104 | 105 | Current value of the sensor 106 | 107 | 108 | 109 | 110 | Update hook. This method will be called periodically by FanControl during its internal update cycle. 111 | 112 | 113 | 114 | 115 | Container to inject your sensors into FanControl. 116 | 117 | 118 | 119 | 120 | Injection point for control sensors. 121 | 122 | 123 | 124 | 125 | Injection point for fan (RPM) sensors. 126 | 127 | 128 | 129 | 130 | Injection point for temperature sensors. 131 | 132 | 133 | 134 | 135 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/obj/Debug/.NETFramework,Version=v4.6.2.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] 5 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/obj/Debug/DesignTimeResolveAssemblyReferences.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crazynucfan/FanControl.IntelNUCSoftwareStudioPlugin/9d5c0b266e1f94c6d2b1e9975a34aa700c175b49/NucSoftwareServiceAPINetFour/obj/Debug/DesignTimeResolveAssemblyReferences.cache -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crazynucfan/FanControl.IntelNUCSoftwareStudioPlugin/9d5c0b266e1f94c6d2b1e9975a34aa700c175b49/NucSoftwareServiceAPINetFour/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/obj/Debug/NucSoftwareServiceAPINetFour.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crazynucfan/FanControl.IntelNUCSoftwareStudioPlugin/9d5c0b266e1f94c6d2b1e9975a34aa700c175b49/NucSoftwareServiceAPINetFour/obj/Debug/NucSoftwareServiceAPINetFour.csproj.FileListAbsolute.txt -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/obj/Debug/TempPE/Connected Services.NssServicePerformanceTuningService.Reference.cs.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crazynucfan/FanControl.IntelNUCSoftwareStudioPlugin/9d5c0b266e1f94c6d2b1e9975a34aa700c175b49/NucSoftwareServiceAPINetFour/obj/Debug/TempPE/Connected Services.NssServicePerformanceTuningService.Reference.cs.dll -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/obj/Debug/TempPE/Connected Services.NucServiceReference.Reference.cs.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crazynucfan/FanControl.IntelNUCSoftwareStudioPlugin/9d5c0b266e1f94c6d2b1e9975a34aa700c175b49/NucSoftwareServiceAPINetFour/obj/Debug/TempPE/Connected Services.NucServiceReference.Reference.cs.dll -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/obj/Debug/TempPE/Connected Services.NucSoftwareServiceSystemMonitor.Reference.cs.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crazynucfan/FanControl.IntelNUCSoftwareStudioPlugin/9d5c0b266e1f94c6d2b1e9975a34aa700c175b49/NucSoftwareServiceAPINetFour/obj/Debug/TempPE/Connected Services.NucSoftwareServiceSystemMonitor.Reference.cs.dll -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/obj/Release/.NETFramework,Version=v4.6.2.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] 5 | -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crazynucfan/FanControl.IntelNUCSoftwareStudioPlugin/9d5c0b266e1f94c6d2b1e9975a34aa700c175b49/NucSoftwareServiceAPINetFour/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/obj/Release/NucSoftwareServiceAPINetFour.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crazynucfan/FanControl.IntelNUCSoftwareStudioPlugin/9d5c0b266e1f94c6d2b1e9975a34aa700c175b49/NucSoftwareServiceAPINetFour/obj/Release/NucSoftwareServiceAPINetFour.csproj.FileListAbsolute.txt -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/obj/Release/TempPE/Connected Services.NssServicePerformanceTuningService.Reference.cs.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crazynucfan/FanControl.IntelNUCSoftwareStudioPlugin/9d5c0b266e1f94c6d2b1e9975a34aa700c175b49/NucSoftwareServiceAPINetFour/obj/Release/TempPE/Connected Services.NssServicePerformanceTuningService.Reference.cs.dll -------------------------------------------------------------------------------- /NucSoftwareServiceAPINetFour/obj/Release/TempPE/Connected Services.NucSoftwareServiceSystemMonitor.Reference.cs.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crazynucfan/FanControl.IntelNUCSoftwareStudioPlugin/9d5c0b266e1f94c6d2b1e9975a34aa700c175b49/NucSoftwareServiceAPINetFour/obj/Release/TempPE/Connected Services.NucSoftwareServiceSystemMonitor.Reference.cs.dll -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # FanControl.IntelNUCSoftwareStudioPlugin 2 | 3 | # WARNING - This code is experimental and you use at your own risk 4 | 5 | I found the Intel NUC Software Studio app for controlling fans a little too basic, and the fan curves too reactive to short changes in CPU temperature, so wanted to let Fan Control control the fans instead 6 | 7 | I've tested this with the Intel NUC 11 Extreme i9 model (NUC11BTMi9), I expect it will probably work with other 11 Extremes, and with some tweaking newer models too 8 | 9 | # Requirements 10 | - Intel NUC Software Studio installed 11 | - Fan Control 12 | - Drop the provided dlls in the plugin directory and restart Fan Control 13 | 14 | # Limitations 15 | - You must set all the fan curves (CPU, System 1 and 2) with Fan Control or none of them, you can't just set the System 2 fan with this and leave the CPU alone, its all or nothing 16 | - I've conservatively coded defaults of 25% fan speed everywhere, but you can customise to taste in fan control 17 | 18 | # Bits of info for people who want to make the code better 19 | - Intel NUC Software Studio app talks to a "Intel NUC Software Studio Service" running all the time in Windows Services 20 | - When I looked at the strings in the app, I saw some references to WCF endpoints 21 | - Loaded the WCF endpoints locally: http://localhost:43568/NssService/service/PerformanceTuning for instance 22 | - It might be the case that these endpoints are on different ports on each machine, in which case it needs to be made configurable 23 | - I couldn't get half of the endpoints to do anything, it seems as if you need to set three fan profiles consistently when accessing these APIs, I just tried different things until it worked 24 | - Found one endpoint that effectively just lets me set the fan speed, all the magic happens in StaticFanController.cs 25 | - If you close Fan Control, you can go back to your normal profiles set in the NUC app 26 | - This code is perfect garbage and zero time has been spent making it nice to work with, I stopped when it seemed to be working 27 | 28 | # Tips for fan settings 29 | - CPU fan should be left on a minimum duty, I've found 25% works and is not audible, anything less than this and it stalls and you get "pulsing" as it spins back up to speed 30 | - Case fans can go to zero, I make everything start to spin up once the CPU or GPU is 65C or above 31 | - 100% duty makes these fans go to 5000rpm, the CPU gets to 4000 but they sound horrible, so wouldn't recommend that, max 2000 on both case and CPU seems to get air through the case just fine 32 | 33 | I don't plan on making any more changes to this, but with a bit of love it could be turned into a fully fledged plugin like: https://github.com/Rem0o/FanControl.DellPlugin 34 | -------------------------------------------------------------------------------- /SimpleRunnerApp/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /SimpleRunnerApp/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.ServiceModel; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using NucSoftwareServiceAPINetFour.NssServicePerformanceTuningService; 8 | using NucSoftwareServiceAPINetFour.NucSoftwareServiceSystemMonitor; 9 | 10 | namespace SimpleRunnerApp 11 | { 12 | internal class Program 13 | { 14 | static void Main(string[] args) 15 | { 16 | // See https://aka.ms/new-console-template for more information 17 | 18 | 19 | PerformanceTuningServiceContractClient _wcfServiceClient = new PerformanceTuningServiceContractClient(new WSHttpBinding(SecurityMode.Message), new EndpointAddress("http://localhost:43568/NssService/service/PerformanceTuning")); 20 | //SystemMonitorServiceContractClient _wcfMonitorServiceClient = new SystemMonitorServiceContractClient(); 21 | 22 | string[] supportedFanTypes = _wcfServiceClient.SupportedFanTypes(); 23 | 24 | 25 | foreach (var res in supportedFanTypes) 26 | { 27 | Console.WriteLine("Fan type: "+res); 28 | 29 | //FanControlAllFanSettings fanSettings = new FanControlAllFanSetting(); 30 | //fanSettings.fanSettings[0]. 31 | 32 | //_wcfServiceClient. 33 | 34 | } 35 | 36 | //Console.WriteLine(_wcfServiceClient.GetCurrentBiosFanModeName()); 37 | 38 | //FanProfile fp = _wcfServiceClient.GetFanProfileData("SystemFan1"); 39 | FanControlAllFanSettings fcas = new FanControlAllFanSettings(); 40 | FanSetting fs1 = new FanSetting(); 41 | 42 | fs1.Configuration1 = 1; 43 | fs1.Configuration2 = 0; 44 | fs1.PrimaryMaximumTemperature = 100; 45 | fs1.PrimaryMinimumDuty = 58; 46 | fs1.PrimaryMinimumTemperature = 100; 47 | fs1.PrimaryFanOffTemperature = 0; 48 | fs1.primaryInputSourceConfiguration = PrimaryInputSourceConfiguration.CPUTemperature; 49 | fs1.PrimaryDutyIncrement = 3; 50 | 51 | 52 | FanSetting fs2 = new FanSetting(); 53 | 54 | fs2.Configuration1 = 1; 55 | fs2.Configuration2 = 0; 56 | fs2.PrimaryMaximumTemperature = 100; 57 | fs2.PrimaryMinimumDuty = 58; 58 | fs2.PrimaryMinimumTemperature = 100; 59 | fs2.PrimaryFanOffTemperature = 0; 60 | fs2.primaryInputSourceConfiguration = PrimaryInputSourceConfiguration.CPUTemperature; 61 | fs2.PrimaryDutyIncrement = 3; 62 | 63 | FanSetting fs3 = new FanSetting(); 64 | 65 | fs3.Configuration1 = 1; 66 | fs3.Configuration2 = 0; 67 | fs3.PrimaryMaximumTemperature = 100; 68 | fs3.PrimaryMinimumDuty = 58; 69 | fs3.PrimaryMinimumTemperature = 100; 70 | fs3.PrimaryFanOffTemperature = 0; 71 | fs3.primaryInputSourceConfiguration = PrimaryInputSourceConfiguration.CPUTemperature; 72 | fs3.PrimaryDutyIncrement = 3; 73 | 74 | fcas.fanSettings = new FanSetting[] { fs1, fs2, fs3 }; 75 | 76 | //fcas.fanSettings 77 | _wcfServiceClient.SetFanCustom(fcas); 78 | 79 | //_wcfServiceClient. 80 | 81 | 82 | /*FanProfile[] fanProfiles = new FanProfile[] 83 | { 84 | 85 | }; 86 | 87 | _wcfServiceClient.SetFanModeRN("Custom","SystemFan1",)*/ 88 | 89 | //_wcfServiceClient.SetFanModeRN("Custom", "SystemFan1", new FanProfileRN[] { 90 | // new FanProfileRN(). 91 | //}); 92 | 93 | //_wcfServiceClient.SetFanDutyCycleFixedMode("Custom", new byte[] { Convert.ToByte(30), Convert.ToByte(30), Convert.ToByte(30) }); 94 | } 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /SimpleRunnerApp/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("SimpleRunnerApp")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("SimpleRunnerApp")] 13 | [assembly: AssemblyCopyright("Copyright © 2023")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("ddcfb7c6-c10f-4d09-992c-886cf70d7fd6")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /SimpleRunnerApp/SimpleRunnerApp.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {DDCFB7C6-C10F-4D09-992C-886CF70D7FD6} 8 | Exe 9 | SimpleRunnerApp 10 | SimpleRunnerApp 11 | v4.6.2 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | {1acb66a7-2c74-4b06-99db-0b45890be2b2} 56 | NucSoftwareServiceAPINetFour 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /SimpleRunnerApp/obj/Debug/.NETFramework,Version=v4.6.2.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] 5 | -------------------------------------------------------------------------------- /SimpleRunnerApp/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crazynucfan/FanControl.IntelNUCSoftwareStudioPlugin/9d5c0b266e1f94c6d2b1e9975a34aa700c175b49/SimpleRunnerApp/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /SimpleRunnerApp/obj/Debug/SimpleRunnerApp.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crazynucfan/FanControl.IntelNUCSoftwareStudioPlugin/9d5c0b266e1f94c6d2b1e9975a34aa700c175b49/SimpleRunnerApp/obj/Debug/SimpleRunnerApp.csproj.FileListAbsolute.txt -------------------------------------------------------------------------------- /SimpleRunnerApp/obj/Release/.NETFramework,Version=v4.6.2.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] 5 | -------------------------------------------------------------------------------- /SimpleRunnerApp/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crazynucfan/FanControl.IntelNUCSoftwareStudioPlugin/9d5c0b266e1f94c6d2b1e9975a34aa700c175b49/SimpleRunnerApp/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /SimpleRunnerApp/obj/Release/SimpleRunnerApp.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crazynucfan/FanControl.IntelNUCSoftwareStudioPlugin/9d5c0b266e1f94c6d2b1e9975a34aa700c175b49/SimpleRunnerApp/obj/Release/SimpleRunnerApp.csproj.FileListAbsolute.txt -------------------------------------------------------------------------------- /SimpleRunnerApp/obj/Release/build.force: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crazynucfan/FanControl.IntelNUCSoftwareStudioPlugin/9d5c0b266e1f94c6d2b1e9975a34aa700c175b49/SimpleRunnerApp/obj/Release/build.force --------------------------------------------------------------------------------