diff --git a/LibreHardwareMonitorLib/Hardware/Motherboard/Identification.cs b/LibreHardwareMonitorLib/Hardware/Motherboard/Identification.cs index eae28e8..5692c6e 100755 --- a/LibreHardwareMonitorLib/Hardware/Motherboard/Identification.cs +++ b/LibreHardwareMonitorLib/Hardware/Motherboard/Identification.cs @@ -619,6 +619,18 @@ internal class Identification return Model.PRIME_X870_P; case var _ when name.Equals("ROG CROSSHAIR X870E HERO", StringComparison.OrdinalIgnoreCase): return Model.ROG_CROSSHAIR_X870E_HERO; + case var _ when name.Equals("MAG X870 TOMAHAWK WIFI (MS-7E51)", StringComparison.OrdinalIgnoreCase): + return Model.X870_TOMAHAWK_WIFI; + case var _ when name.Equals("MPG Z890 CARBON WIFI (MS-7E17)", StringComparison.OrdinalIgnoreCase): + return Model.Z890_CARBON_WIFI; + case var _ when name.Equals("MAG X870E TOMAHAWK WIFI (MS-7E59)", StringComparison.OrdinalIgnoreCase): + return Model.X870E_TOMAHAWK_WIFI; + case var _ when name.Equals("MPG X870E CARBON WIFI (MS-7E49)", StringComparison.OrdinalIgnoreCase): + return Model.X870E_CARBON_WIFI; + case var _ when name.Equals("PRO X870-P WIFI (MS-7E47)", StringComparison.OrdinalIgnoreCase): + return Model.X870_P_WIFI; + case var _ when name.Equals("MPG Z890 EDGE TI WIFI (MS-7E19)", StringComparison.OrdinalIgnoreCase): + return Model.Z890_EDGE_TI_WIFI; case var _ when name.Equals("X11SWN-E", StringComparison.OrdinalIgnoreCase): return Model.X11SWN_E; case var _ when name.Equals("Base Board Product Name", StringComparison.OrdinalIgnoreCase): diff --git a/LibreHardwareMonitorLib/Hardware/Motherboard/Lpc/Nct677X.cs b/LibreHardwareMonitorLib/Hardware/Motherboard/Lpc/Nct677X.cs index 4495060..f500f88 100644 --- a/LibreHardwareMonitorLib/Hardware/Motherboard/Lpc/Nct677X.cs +++ b/LibreHardwareMonitorLib/Hardware/Motherboard/Lpc/Nct677X.cs @@ -69,12 +69,12 @@ internal class Nct677X : ISuperIO _vBatMonitorControlRegister = 0x0318; } - else if (chip is Chip.NCT6683D or Chip.NCT6686D or Chip.NCT6687D) + else if (chip is Chip.NCT6683D or Chip.NCT6686D or Chip.NCT6687D) //These work on older NCT6687D boards, but only fans 0, 1 and 3 on newer (X870 and Z890) motherboards. Unsure of controls for "next pack of 8". { - FAN_PWM_OUT_REG = new ushort[] { 0x160, 0x161, 0x162, 0x163, 0x164, 0x165, 0x166, 0x167 }; - FAN_PWM_COMMAND_REG = new ushort[] { 0xA28, 0xA29, 0xA2A, 0xA2B, 0xA2C, 0xA2D, 0xA2E, 0xA2F }; - FAN_CONTROL_MODE_REG = new ushort[] { 0xA00, 0xA00, 0xA00, 0xA00, 0xA00, 0xA00, 0xA00, 0xA00 }; - FAN_PWM_REQUEST_REG = new ushort[] { 0xA01, 0xA01, 0xA01, 0xA01, 0xA01, 0xA01, 0xA01, 0xA01 }; + FAN_PWM_OUT_REG = new ushort[] { 0x160, 0x161, 0x162, 0x163, 0x164, 0x165, 0x166, 0x167 }; // Next 8 fans will be 0xE00, 0xE01, 0xE02, 0xE03, 0xE04, 0xE05, 0xE06, 0xE07 + FAN_PWM_COMMAND_REG = new ushort[] { 0xA28, 0xA29, 0xA2A, 0xA2B, 0xA2C, 0xA2D, 0xA2E, 0xA2F }; // Possibly 0X260, 0X261, 0X262, 0X263, 0X264, 0X265, 0X266, 0X267 but can't confirm + FAN_CONTROL_MODE_REG = new ushort[] { 0xA00, 0xA00, 0xA00, 0xA00, 0xA00, 0xA00, 0xA00, 0xA00 }; // Not sure of next 8, MSI won't provide info + FAN_PWM_REQUEST_REG = new ushort[] { 0xA01, 0xA01, 0xA01, 0xA01, 0xA01, 0xA01, 0xA01, 0xA01 }; // Not sure of next 8, MSI won't provide info } else { @@ -272,7 +272,7 @@ internal class Nct677X : ISuperIO case Chip.NCT6683D: case Chip.NCT6686D: case Chip.NCT6687D: - Fans = new float?[8]; + Fans = new float?[16]; Controls = new float?[8]; Voltages = new float?[14]; Temperatures = new float?[7]; @@ -312,13 +312,19 @@ internal class Nct677X : ISuperIO // CPU Fan // PUMP Fan - // SYS Fan 1 - // SYS Fan 2 - // SYS Fan 3 - // SYS Fan 4 - // SYS Fan 5 - // SYS Fan 6 - _fanRpmRegister = new ushort[] { 0x140, 0x142, 0x144, 0x146, 0x148, 0x14A, 0x14C, 0x14E }; + // SYS Fan 1 on some older NCT6687Ds, Nil on others + // SYS Fan 2 on some older NCT6687Ds, EZConn on others + // SYS Fan 3 on some older NCT6687Ds + // SYS Fan 4 on some older NCT6687Ds + // SYS Fan 5 on some older NCT6687Ds + // SYS Fan 6 on some older NCT6687Ds + // SYS Fan 6 on newer NCT6687Ds + // SYS Fan 5 on newer NCT6687Ds + // SYS Fan 4 on newer NCT6687Ds + // SYS Fan 3 on newer NCT6687Ds + // SYS Fan 2 on newer NCT6687Ds + // SYS Fan 1 on newer NCT6687Ds + _fanRpmRegister = new ushort[] { 0x140, 0x142, 0x144, 0x146, 0x148, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E }; _restoreDefaultFanControlRequired = new bool[_fanRpmRegister.Length]; _initialFanControlMode = new byte[_fanRpmRegister.Length]; diff --git a/LibreHardwareMonitorLib/Hardware/Motherboard/Model.cs b/LibreHardwareMonitorLib/Hardware/Motherboard/Model.cs index 0e5b71a..6a1fdce 100644 --- a/LibreHardwareMonitorLib/Hardware/Motherboard/Model.cs +++ b/LibreHardwareMonitorLib/Hardware/Motherboard/Model.cs @@ -136,6 +136,13 @@ public enum Model Z77_MS7751, Z68_MS7672, X570_Gaming_Plus, + X870_TOMAHAWK_WIFI, + Z890_CARBON_WIFI, + B650M_PROJECT_ZERO, + X870E_TOMAHAWK_WIFI, + X870E_CARBON_WIFI, + X870_P_WIFI, + Z890_EDGE_TI_WIFI, // EVGA X58_SLI_Classified, diff --git a/LibreHardwareMonitorLib/Hardware/Motherboard/SuperIOHardware.cs b/LibreHardwareMonitorLib/Hardware/Motherboard/SuperIOHardware.cs index 628619b..637db54 100755 --- a/LibreHardwareMonitorLib/Hardware/Motherboard/SuperIOHardware.cs +++ b/LibreHardwareMonitorLib/Hardware/Motherboard/SuperIOHardware.cs @@ -483,6 +483,76 @@ internal sealed class SuperIOHardware : Hardware break; + case Manufacturer.MSI when model == Model.X870_TOMAHAWK_WIFI: //NCT6687D with 9 fans + case Manufacturer.MSI when model == Model.X870_TOMAHAWK_WIFI: + case Manufacturer.MSI when model == Model.Z890_CARBON_WIFI: + case Manufacturer.MSI when model == Model.X870E_TOMAHAWK_WIFI: + case Manufacturer.MSI when model == Model.X870E_CARBON_WIFI: + case Manufacturer.MSI when model == Model.X870_P_WIFI: + case Manufacturer.MSI when model == Model.Z890_EDGE_TI_WIFI: + v.Add(new Voltage("+12V", 0)); + v.Add(new Voltage("+5V", 1)); + v.Add(new Voltage("CPU Northbridge/SoC", 2)); + v.Add(new Voltage("VDDIO", 3, 1, 1, 0)); + v.Add(new Voltage("Vcore", 4, -1, 2, 0)); + v.Add(new Voltage("+3.3V", 8)); + v.Add(new Voltage("+3V Standby", 11)); + v.Add(new Voltage("AVSB", 12)); + v.Add(new Voltage("CPU Termination", 9)); + v.Add(new Voltage("CMOS Battery", 13)); + + t.Add(new Temperature("CPU", 0)); + t.Add(new Temperature("System", 1)); + t.Add(new Temperature("VRM MOS", 2)); + t.Add(new Temperature("Chipset A", 3)); + + f.Add(new Fan("CPU Fan", 0)); + f.Add(new Fan("Pump Fan", 1)); + f.Add(new Fan("EZConn Fan", 3)); + f.Add(new Fan("System Fan #6", 10)); + f.Add(new Fan("System Fan #5", 11)); + f.Add(new Fan("System Fan #4", 12)); + f.Add(new Fan("System Fan #3", 13)); + f.Add(new Fan("System Fan #2", 14)); + f.Add(new Fan("System Fan #1", 15)); + + c.Add(new Control("CPU Fan", 0)); + c.Add(new Control("Pump Fan", 1)); + c.Add(new Control("EZConn Fan", 3)); + break; + + case Manufacturer.MSI when model == Model.Z890_CARBON_WIFI: //NCT6687D with 8 fans + case Manufacturer.MSI when model == Model.X870E_CARBON_WIFI: + v.Add(new Voltage("+12V", 0)); + v.Add(new Voltage("+5V", 1)); + v.Add(new Voltage("CPU Northbridge/SoC", 2)); + v.Add(new Voltage("VDDIO", 3, 1, 1, 0)); + v.Add(new Voltage("Vcore", 4, -1, 2, 0)); + v.Add(new Voltage("+3.3V", 8)); + v.Add(new Voltage("+3V Standby", 11)); + v.Add(new Voltage("AVSB", 12)); + v.Add(new Voltage("CPU Termination", 9)); + v.Add(new Voltage("CMOS Battery", 13)); + + t.Add(new Temperature("CPU", 0)); + t.Add(new Temperature("System", 1)); + t.Add(new Temperature("VRM MOS", 2)); + t.Add(new Temperature("Chipset A", 3)); + + f.Add(new Fan("CPU Fan", 0)); + f.Add(new Fan("Pump Fan", 1)); + f.Add(new Fan("EZConn Fan", 3)); + f.Add(new Fan("System Fan #5", 11)); + f.Add(new Fan("System Fan #4", 12)); + f.Add(new Fan("System Fan #3", 13)); + f.Add(new Fan("System Fan #2", 14)); + f.Add(new Fan("System Fan #1", 15)); + + c.Add(new Control("CPU Fan", 0)); + c.Add(new Control("Pump Fan", 1)); + c.Add(new Control("EZConn Fan", 3)); + break; + default: v.Add(new Voltage("+12V", 0)); v.Add(new Voltage("+5V", 1));