yhkuan / open-hardware-monitor

[Read-Only] Automatically exported from code.google.com/p/open-hardware-monitor
0 stars 0 forks source link

Adding support for ASRock Z68 Extreme4 #278

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
OpenHardwareMonitor looked like the best monitoring software I could find 
except that it did not handle ASRock's fans, voltages etc on my motherboard. I 
have been able to modify the code to get it to match then numbers reported by 
ASRock's AXTU, including ASRock's fan selection process to monitor all 6 fans 
supported by the motherboard. How can I contribute my modifications to the 
OpenHardwareMonitor code?   

Original issue reported on code.google.com by martin.m...@gmail.com on 29 Sep 2011 at 2:38

GoogleCodeExporter commented 8 years ago
Hi, I have Asrock Extreme3 Gen3 motherboard and would love to 
see proper voltages, recorded on the OpenHardwareMonitor.
Could be also as an add-on configuration file or similar.

Martin, could you please share your modification and how to
apply them to OpenHardwareMonitor. Let me know at <>sa5o.gm@gmail.com>

Best regards and nice holidays!

Original comment by sa5o...@gmail.com on 23 Dec 2011 at 7:10

GoogleCodeExporter commented 8 years ago
The mods now support the ASRock Extreme3 Gen3 motherboard, and adding support 
for other similar ASRock motherboards should be easy. 

Original comment by martin.m...@gmail.com on 27 Dec 2011 at 11:13

GoogleCodeExporter commented 8 years ago
Can you post a patch against a SVN revision or a zip file with your modified 
code?

Original comment by moel.mich on 2 Jan 2012 at 9:23

GoogleCodeExporter commented 8 years ago
I have attached the C# code that I changed.

Because ASRock run 6 fans into the 5 fan speed sensors of the NCT6776F chip and 
does the selection by using some output pins of the NCT6776F I made my code 
specific to particular motherboards that I checked by looking at the config 
files of ASRock AXTU software. How it MIGHT be OK to enable it for all ASRock 
motherboards that use the NCT6776F. 
Issue 299 appears to be another case of an ASRock motherboard that this mod 
might work for, but I have not checked if their motherboard is compatible.

Unrelated to the ASRock support, my code also includes new columns in the main 
display – LowerLimit and HigherLimit (right click on lines and select Lower 
Limit and Higher Limit to set values) e.g. minimum fan speed or maximum 
temperature that if exceeded will generate an alert popping up in the 
notification area.

If there questions on my modifications you can contact me directly at 
martin.mathome@gmail.com 

Original comment by martin.m...@gmail.com on 5 Jan 2012 at 12:43

Attachments:

GoogleCodeExporter commented 8 years ago
Thank you very much for your contribution. I have taken a look at the code, and 
it looks like ASRock continues to build maximal ugly hardware monitoring 
solutions.

There are two issues I see when trying to merge this into the SVN: 

(1) There shouldn't be any mainboard specific code in the super I/O chip 
classes like NCT677X. All the mainboard specific code should go into 
SuperIOHardware. The implementation of the ASRock P55 Deluxe is an example. 

In order to still support the ASRock Z68 Extreme4 one would have to implement 
the GPIO interface (defined in ISuperIO) for the NCT677X class and then do all 
the GPIO switching magic in SuperIOHardware. This requires some refactoring 
work, but as far as I see this should be possible.

(2) For the GPIO implementation of the NCT6776F it would be better to use the 
direct port access method using the I/O ports starting at the GPIO base address 
(table 19-3 in the datasheet). The GPIO base address can be read from logical 
device number 8 registers [0x61, 0x60].

I have tried to get the GPIO base address on an ASUS board, but it seem not to 
be configured (returns the default value 0). What do you get from 
BASE_ADDRESS_REGISTER [0x61, 0x60] on logical device number 8 on an ASRock Z68 
Extreme4? 

If the GPIO base address is zero as well then one would have to rely on direct 
access on the logical device (as you implemented it). But I am not so sure if 
it is a good idea to switch the logical device regularly (access conflicts 
could have ugly consequences).

Please let me know about the value of the GPIO base address on the ASRock Z68 
Extreme4, in order to decide what to do next.

Original comment by moel.mich on 15 Jan 2012 at 5:17

GoogleCodeExporter commented 8 years ago
I totally agree with your opinion of ASRock's ugly hack! If multiple monitoring 
programs are running concurrently it looks sure to create very nasty conflicts.

I'm sorry that I did not understand the class structure well enough to put 
board-specific code where you intended it to be. 

Before writing my code using the direct access approach I, too, had 
investigated the logical device 8 BASE_ADDRESS_REGISTER [0x61, 0x60] and found 
it contained 0. To be sure I checked it again, now, on my ASRock Extreme4 and 
still find 0. 

While I did not like having to do the logical device switching I could see no 
alternative way to switch the fan inputs. I did verify that ASRock's AXTU 
software (that reports fan speeds) is changing the GPIO port at regular 
intervals. 

Please let me know if I can assist further.

Original comment by martin.m...@gmail.com on 16 Jan 2012 at 1:08