├── 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
--------------------------------------------------------------------------------