diff --git a/LibreHardwareMonitorLib/Hardware/Motherboard/Lpc/Nct677X.cs b/LibreHardwareMonitorLib/Hardware/Motherboard/Lpc/Nct677X.cs index 1c9ec15..33e44bc 100644 --- a/LibreHardwareMonitorLib/Hardware/Motherboard/Lpc/Nct677X.cs +++ b/LibreHardwareMonitorLib/Hardware/Motherboard/Lpc/Nct677X.cs @@ -212,7 +212,7 @@ internal class Nct677X : ISuperIO new(SourceNct67Xxd.AUXTIN2, 0x07D, 0x07E, 7, 0xA00, 0x494), new(SourceNct67Xxd.AUXTIN3, 0x4A0, 0x49E, 6, 0xB00, 0x495), new(SourceNct67Xxd.AUXTIN4, 0x027, 0, -1, 0x621), - new(SourceNct67Xxd.TSENSOR, 0x4A2, 0x4A1, 7, 0xC00, 0x496), + //new(SourceNct67Xxd.TSENSOR, 0x4A2, 0x4A1, 7, 0xC00, 0x496), // Disabled because these registers are wrong and can cause wrong measurement new(SourceNct67Xxd.SMBUSMASTER0, 0x150, 0x151, 7, 0x622), new(SourceNct67Xxd.SMBUSMASTER1, 0x670, 0, -1, 0xC26), new(SourceNct67Xxd.PECI_1, 0x672, 0, -1, 0xC27), @@ -220,15 +220,17 @@ internal class Nct677X : ISuperIO new(SourceNct67Xxd.PCH_CHIP_TEMP, 0x676, 0, -1, 0xC29, 0x401), new(SourceNct67Xxd.PCH_CPU_TEMP, 0x678, 0, -1, 0xC2A, 0x402), new(SourceNct67Xxd.PCH_MCH_TEMP, 0x67A, 0, -1, 0xC2B, 0x404), - new(SourceNct67Xxd.AGENT0_DIMM0, 0), - new(SourceNct67Xxd.AGENT0_DIMM1, 0), - new(SourceNct67Xxd.AGENT1_DIMM0, 0), - new(SourceNct67Xxd.AGENT1_DIMM1, 0), - new(SourceNct67Xxd.BYTE_TEMP0, 0), - new(SourceNct67Xxd.BYTE_TEMP1, 0), - new(SourceNct67Xxd.PECI_0_CAL, 0), - new(SourceNct67Xxd.PECI_1_CAL, 0), - new(SourceNct67Xxd.VIRTUAL_TEMP, 0) + new(SourceNct67Xxd.AGENT0_DIMM0, 0x405, 0, -1), + new(SourceNct67Xxd.AGENT0_DIMM1,0x406, 0, -1), + new(SourceNct67Xxd.AGENT1_DIMM0, 0x407, 0, -1), + new(SourceNct67Xxd.AGENT1_DIMM1, 0x408, 0, -1), + new(SourceNct67Xxd.BYTE_TEMP0, 0x419, 0, -1), + new(SourceNct67Xxd.BYTE_TEMP1, 0x41A, 0, -1), + new(SourceNct67Xxd.PECI_0_CAL, 0x4F4, 0, -1), + new(SourceNct67Xxd.PECI_1_CAL, 0x4F5, 0, -1), + new(SourceNct67Xxd.VIRTUAL_TEMP, 0), + new(SourceNct67Xxd.SPARE_TEMP, 0), // Used for voltage temp sensor + new(SourceNct67Xxd.SPARE_TEMP2, 0) // Used for voltage temp sensor }); break; @@ -1141,7 +1143,12 @@ internal class Nct677X : ISuperIO AUXTIN4 = 7, SMBUSMASTER0 = 8, SMBUSMASTER1 = 9, - TSENSOR = 10, + RESERVED_1 = 10, + RESERVED_2 = 11, + RESERVED_3 = 12, + RESERVED_4 = 13, + RESERVED_5 = 14, + RESERVED_6 = 15, PECI_0 = 16, PECI_1 = 17, PCH_CHIP_CPU_MAX_TEMP = 18, @@ -1156,7 +1163,10 @@ internal class Nct677X : ISuperIO BYTE_TEMP1 = 27, PECI_0_CAL = 28, PECI_1_CAL = 29, - VIRTUAL_TEMP = 31 + RESERVED_7 = 30, + VIRTUAL_TEMP = 31, + SPARE_TEMP = 32, + SPARE_TEMP2 = 33 } [SuppressMessage("ReSharper", "InconsistentNaming")] diff --git a/LibreHardwareMonitorLib/Hardware/Motherboard/SuperIOHardware.cs b/LibreHardwareMonitorLib/Hardware/Motherboard/SuperIOHardware.cs index 0fb11b4..cfab529 100644 --- a/LibreHardwareMonitorLib/Hardware/Motherboard/SuperIOHardware.cs +++ b/LibreHardwareMonitorLib/Hardware/Motherboard/SuperIOHardware.cs @@ -5333,7 +5333,10 @@ internal sealed class SuperIOHardware : Hardware t.Add(new Temperature("System", 2)); // SYSTIN, P-3906 t.Add(new Temperature("VRM MOS", 3)); // AUXTIN0, CPUMOSTIN, 10k at left side of cpu vrm t.Add(new Temperature("Chipset", 5)); // AUXTIN2, 10k at back side of the chipset - t.Add(new Temperature("CPU", 24)); + t.Add(new Temperature("CPU", 23)); + // Add temperature sensors for voltage inputs that are marked ad + t.Add(new Temperature("MOS CPU", 24)); // (VIN 4 Voltage) NTC Near MOSFET CPU VRM + t.Add(new Temperature("PCH", 25)); // (Voltage #6) X570 Platform Control HUB TEMP (NTC On Bottom of PCB) f.Add(new Fan("Pump Fan", 0)); f.Add(new Fan("CPU Fan", 1)); @@ -5680,6 +5683,33 @@ internal sealed class SuperIOHardware : Hardware sensor.Value = value + sensor.Parameters[0].Value; ActivateSensor(sensor); } + else + { + if (_motherboard.Model == Model.X570_MS7C35) // Add Temp Value for CPU MOS TEMPERATURE & PCH TEMPERATURE + { + float voltage; + + if (sensor.Index == 24) + { + voltage = (float)_readVoltage(6); + } + else if (sensor.Index == 25) + { + voltage = (float)_readVoltage(11); + } + else + { + voltage = 0; + } + + double R = (10000.0 * voltage / (2.048 - 1.0)); //Convert voltage measured to resistance value + double T = ((298.15 * 3435.0) / ((298.15 * Math.Log(R / 10000.0)) + 3435.0)); // Use R value in steinhart and hart equation, calculate temperature value in kelvin + float Tc = (float)(T - 273.15); // Converting kelvin to celsius + + sensor.Value = Tc + sensor.Parameters[0].Value; + ActivateSensor(sensor); + } + } } foreach (Sensor sensor in _fans)