Open auyer opened 4 years ago
Hi there,
At the moment the driver does not have the ability to set fan speeds, the only thing I can suggest is setting fan curves in the UEFI.
The WMI interface contains some clearly named methods for reading sensor statuses, and then a load of methods with generic names. There is nothing obvious to set fan speeds. (see below)
I think there is a possibility that these generic methods are used by the Windows AISuite software, however we would need to discover which method to use. My attempts at determining what AISuite does by attaching a debugger and watching what API calls it makes have so far been unsuccessful.
The other option would be attempting to fix up the out of tree it87 driver to work correctly on current kernels. I had hoped that someone might have managed to do this, but I don't believe anyone has done it yet.
PS C:\WINDOWS\system32> get-WmiObject -class ASUSHW -Namespace "root\WMI" | Get-Member -MemberType method
TypeName: System.Management.ManagementObject#root\WMI\ASUSHW
Name MemberType Definition
---- ---------- ----------
asio_hw_fun07 Method System.Management.ManagementBaseObject asio_hw_fun07(System.UInt16 wPort)
asio_hw_fun08 Method System.Management.ManagementBaseObject asio_hw_fun08(System.UInt16 wPort, System.Byte bData)
asio_hw_fun09 Method System.Management.ManagementBaseObject asio_hw_fun09(System.UInt32 dwAddr, System.Byte Width)
asio_hw_fun10 Method System.Management.ManagementBaseObject asio_hw_fun10(System.UInt32 dwAddr, System.Byte Width, System.UInt32 dwData)
asio_hw_fun11 Method System.Management.ManagementBaseObject asio_hw_fun11(System.Byte Bus, System.Byte Dev, System.Byte Func, System.UInt16 Reg, System.Byte Width)
asio_hw_fun12 Method System.Management.ManagementBaseObject asio_hw_fun12(System.Byte Bus, System.Byte Dev, System.Byte Func, System.UInt16 Reg, System.Byte Width, System.UInt32 dwData)
asio_hw_fun13 Method System.Management.ManagementBaseObject asio_hw_fun13(System.UInt16 wIndexPort, System.Byte Index)
asio_hw_fun14 Method System.Management.ManagementBaseObject asio_hw_fun14(System.UInt16 wIndexPort, System.Byte Index, System.Byte Data)
asio_hw_fun15 Method System.Management.ManagementBaseObject asio_hw_fun15(System.UInt32 Index)
asio_hw_fun16 Method System.Management.ManagementBaseObject asio_hw_fun16(System.UInt32 Index, System.UInt32 DataHi, System.UInt32 DataLo)
asio_hw_fun17 Method System.Management.ManagementBaseObject asio_hw_fun17(System.UInt32 Index)
asio_hw_fun19 Method System.Management.ManagementBaseObject asio_hw_fun19(System.Byte LDN, System.Byte Index)
asio_hw_fun20 Method System.Management.ManagementBaseObject asio_hw_fun20(System.Byte LDN, System.Byte Index, System.Byte Data)
asio_hw_fun21 Method System.Management.ManagementBaseObject asio_hw_fun21(System.Byte Bank, System.Byte Index)
asio_hw_fun22 Method System.Management.ManagementBaseObject asio_hw_fun22(System.Byte Bank, System.Byte Index, System.Byte Data)
asio_hw_fun23 Method System.Management.ManagementBaseObject asio_hw_fun23(System.String BankIndexArray)
asio_hw_fun24 Method System.Management.ManagementBaseObject asio_hw_fun24(System.String BankIndexDataArray)
asio_hw_fun25 Method System.Management.ManagementBaseObject asio_hw_fun25(System.String BankIndexArray)
asio_hw_fun26 Method System.Management.ManagementBaseObject asio_hw_fun26(System.String BankIndexDataArray)
asio_hw_fun28 Method System.Management.ManagementBaseObject asio_hw_fun28(System.Byte Index)
asio_hw_fun29 Method System.Management.ManagementBaseObject asio_hw_fun29(System.Byte Index, System.Byte Data)
asio_hw_fun42 Method System.Management.ManagementBaseObject asio_hw_fun42(System.UInt16 wPort)
asio_hw_fun43 Method System.Management.ManagementBaseObject asio_hw_fun43(System.UInt16 wPort, System.UInt16 wData)
asio_hw_fun44 Method System.Management.ManagementBaseObject asio_hw_fun44(System.UInt16 wPort)
asio_hw_fun45 Method System.Management.ManagementBaseObject asio_hw_fun45(System.UInt16 wPort, System.UInt32 dwData)
asio_hw_fun46 Method System.Management.ManagementBaseObject asio_hw_fun46(System.String LdnIndexArray)
asio_hw_fun47 Method System.Management.ManagementBaseObject asio_hw_fun47(System.String LdnIndexDataArray)
read_smbus_block Method System.Management.ManagementBaseObject read_smbus_block(System.UInt32 slave, System.UInt32 cmd)
read_smbus_byte Method System.Management.ManagementBaseObject read_smbus_byte(System.UInt32 slave, System.UInt32 cmd)
read_smbus_word Method System.Management.ManagementBaseObject read_smbus_word(System.UInt32 slave, System.UInt32 cmd)
sensor_get_buffer_address Method System.Management.ManagementBaseObject sensor_get_buffer_address()
sensor_get_info Method System.Management.ManagementBaseObject sensor_get_info(System.Byte Index)
sensor_get_number Method System.Management.ManagementBaseObject sensor_get_number()
sensor_get_value Method System.Management.ManagementBaseObject sensor_get_value(System.Byte Index)
sensor_get_version Method System.Management.ManagementBaseObject sensor_get_version()
sensor_update_buffer Method System.Management.ManagementBaseObject sensor_update_buffer(System.Byte Source)
write_smbus_block Method System.Management.ManagementBaseObject write_smbus_block(System.UInt32 slave, System.UInt32 cmd, System.UInt32 count, System.Byte[] data)
write_smbus_byte Method System.Management.ManagementBaseObject write_smbus_byte(System.UInt32 slave, System.UInt32 cmd, System.UInt32 data)
write_smbus_word Method System.Management.ManagementBaseObject write_smbus_word(System.UInt32 slave, System.UInt32 cmd, System.UInt32 data)
If I can help you running any tests, feel free to contact me. I have no experience developing this low level stuff, and have no knowledge of the Windows internals. So depending on what you want, you might need to guide me.
Hello, any update on this? I am on an Asus ROG Strix B450-F Gaming and I believe I am encountering this same issue. When I run sensors-detect I get a warning telling me that "ITE IT8665E Super IO Sensors" doesn't have a driver in the kernel, which I believe might be the device capable of addressing the pwm values in the motherboard. This led me to the it87 module which I tried to load after removing the asus_wmi_sensors one, but without success since it outputs an error saying that there is no device for that module
I looked for solutions everywhere, but couldn't find it.
My Motherboard is the Asus X470-F, running third gen Ryzen, with bios version 5406 Linux 5.4.6-2-MANJARO
Here is the output for sensors -u and pwmconfig
Any ideas ?