How to control fan speed on the 4870x2 with rivatuner 2.10

ribbell

n00b
Joined
Sep 1, 2008
Messages
46
I posted over rivatuner forum a guide to control fan speed on the 4870x2 with rivatuner 2.10.
I'll post here too, because i think some of you guys with this card will find this guide useful.
Atm rivatuner 2.10 doesn't support the 4870x2 because this board (or at least the reference board by ati) uses as fan controller the ADT7473 fan controller (the same controller used by nvidia cards), instead of the integrated fan controller used on the 4850 and 4870 boards. In order to program the fan controller you'll need access to the I2C bus; this feature is yet to be implemented on the ati cards, that's because fan control doesn't work on rivatuner.
Anyway i found a solution:

1)
Open catalyst control center, click con profiles -> profiles manager, enter for the name of the profile the fan speed that should be set by that profile (this is just a suggestion) i.e. 35 if that profile set the duty cycle to 35%.
Now in the composition windows be sure to enable ATI overdrive (and only ati overdrive) for that profile, go on the activation TAB and check "desktop shortcut", finally save the profile. You shoud see now on the desktop a link file created by ccc with the name of the profile. This link file will be used later.
Remember to enable ATI Overdrive.


2)
Create other profiles relative to other fan speeds. How many? Simple, if you want to regulate with rivatuner the fan speed from 35% to 100% with 5% steps, you will need 14 profiles (one for 35, one for 40, one for 45 and so on).
In this example i'll show how to switch between three fan duty cycles, i.e. 35%, 45% and 55%, so in this case i'll create three profiles: 35, 45 and 55.

3)
Browse to the directory where CCC stores the profiles, for vista the dir is:

C:\Users\<user_name>\AppData\Local\ATI\ACE\Profiles

I'm not sure about xp, but it should not be a problem to find the correct dir.
Time to edit the profiles created. Open the file 35.xml with notepad, find the line <Feature name="FanSpeedAlgorithm_1"> and change the next line to <Property name="FanSpeedAlgorithm" value="Manual" /> . Now find the line <Feature name="FanSpeedPercentTarget_1"> and change the next line to <Property name="Want" value="35" />.
Take a look to my profile:

<Profile>
<Caste name="Graphics">
<Groups>
<Group name="Overdrive5">
<Feature name="TimeUnlocked" />
<Feature name="OverclockEnabled">
<Property name="OverclockEnabledProperty" value="True" />
</Feature>
<Feature name="CoreClockTarget_0">
<Property name="Want_0" value="50700" />
<Property name="Want_1" value="75000" />
</Feature>
<Feature name="MemoryClockTarget_0">
<Property name="Want_0" value="30000" />
<Property name="Want_1" value="90000" />
</Feature>
<Feature name="CoreVoltageTarget_0">
<Property name="Want_0" value="1050" />
<Property name="Want_1" value="1250" />
</Feature>
<Feature name="MemoryVoltageTarget_0">
<Property name="Want_0" value="0" />
<Property name="Want_1" value="0" />
</Feature>
<Feature name="FanSpeedProtocol_0">
<Property name="FanSpeedProtocolProperty" value="RPM" />
</Feature>
<Feature name="FanSpeedAlgorithm_0">
<Property name="FanSpeedAlgorithm" value="Automatic" />
</Feature>
<Feature name="FanSpeedRPMTarget_0">
<Property name="Want" value="0" />
</Feature>
<Feature name="FanSpeedPercentTarget_0">
<Property name="Want" value="0" />
</Feature>
<Feature name="CoreClockTarget_1">
<Property name="Want_0" value="50700" />
<Property name="Want_1" value="75000" />
</Feature>
<Feature name="MemoryClockTarget_1">
<Property name="Want_0" value="30000" />
<Property name="Want_1" value="90000" />
</Feature>
<Feature name="CoreVoltageTarget_1">
<Property name="Want_0" value="1050" />
<Property name="Want_1" value="1250" />
</Feature>
<Feature name="MemoryVoltageTarget_1">
<Property name="Want_0" value="0" />
<Property name="Want_1" value="0" />
</Feature>
<Feature name="FanSpeedProtocol_1">
<Property name="FanSpeedProtocolProperty" value="Percent" />
</Feature>
<Feature name="FanSpeedAlgorithm_1">
<Property name="FanSpeedAlgorithm" value="Manual" />

</Feature>
<Feature name="FanSpeedRPMTarget_1">
<Property name="Want" value="3500" />
</Feature>
<Feature name="FanSpeedPercentTarget_1">
<Property name="Want" value="35" />

</Feature>
</Group>
</Groups>
<Adapter name="PCI_VEN_1002&amp;DEV_9441&amp;SUBSYS_25421002&amp;REV_00_6&amp;B5C08C&amp;0&amp;00200008A">
<Aspect name="Overdrive5" />
</Adapter>
</Caste>
</Profile>


The lines of interest are in green.
From this profile you can see that i changed the clocks in 2d of the memory for both gpu to 300, this helps reducing greatly the power in idle mode.
Now follow the same logic for the 45.xml and 55.xml files.
So in the end the 35.xml profile set the fan speed to 35%, the 45.xml file set the fan speed to 45% and the 55.xml file set the fan speed to 55%.

4)
Here's the aim: we want rivatuner to set the fan speed to 45% when the gpu temperature becomes higher than 60 °C, to 55% when the gpu temperature becomes higher than 70 °C and to 35 % when the gpu temperature becomes lower than 50 ° C.
Ok, open riva, go to scheduler, create new task and enter the following parameters:

anonimo3vz2.jpg


In this way when the temperature of the gpu (the master gpu in this case) cross the 70 °C in the upper direction, rivatuner calls the file 55.lnk, which is the link created by ccc that activates the profile 55.xml, which in turn set the fan speed to 55 %.
Well, i think that now the logic is clear.
I created the following tasks:

anonimo2fj5.jpg


The first four tasks implement an hysteresis fan controller with three steps.
The last task is really important: It set the fan speed to 55 % at the startup: in this way the temperature will cross for sure, in the lower direction, one of the threshold relative to the other tasks. On the contrary, if the fan speed is not changed on the startup, because on the boot the frequencies are the same as the one relative to 3d state, it could happen that the temperature would not cross the trhesholds of the upper tasks causing the gpu to remain in high temperature.

Finally this is the result:

anonimoqs7.jpg


The hardware monitor is started after a system boot. See, the fan duty-cycles is set by riva at 55%, then the temperature cross in the lower direction the middle threshold and the fan speed becomes 45%, finally it cross the lower threshold and the fan speed becomes 35 %.
Then a 3d application is started, as you can see by the clocks and voltage switching. Now the tenperature cross the middle and finally the upper thresholds and the fan becomes 45% and 55%. When the 3d application is closed, the fan duty-cycles slowly changes, first to 45%, then to 35%.

Btw, sorry for my english, i know it sucks :p

Edit: remember to enable background monitor in the hardware monitor and to set up rivatuner in order to run at windows startup.
 
No need to apologise, I'd have thought you were a native English speaker.
Thanks for the guide.
 
Thank you guys.
I should add that, based on reports on other forums, the fan control for the 4870x2 in riva 2.10 works on some 4870x2 boards. So before trying the method posted in the first post, check if the low level fan settings work with rivatuner 2.10 with your board, this is the best way to control 4870x2 fan speed.
On my board it doesn't work (i have a sapphire).
 
Thank you guys.
I should add that, based on reports on other forums, the fan control for the 4870x2 in riva 2.10 works on some 4870x2 boards. So before trying the method posted in the first post, check if the low level fan settings work with rivatuner 2.10 with your board, this is the best way to control 4870x2 fan speed.
On my board it doesn't work (i have a sapphire).

Excellent Work-around ribbell using Rivatuner 2.10 in conjunction with the CCC Fan-Profile-Hack. Very Creative!


Just a couple of hints though regarding steps 1-3 and the CCC Fan-Profile Hack. I've been keeping up with this since it first showed up. See this this link for reference ...

http://www.hardforum.com/showthread.php?p=1032685289#post1032685289


1. The Appdata or Application Data Folder will be hidden by default and must be unhidden to get to the Profiles Folder in the first place ....

XP Users:

Open any Folder, goto Tools Menu --> Folder Options --> Select View Tab ---> Select "Show Hidden Files and Folders".

Vista Users:

Open any Folder, goto Organize Menu --> Folder and Search Options --> Select View Tab ---> Select "Show Hidden Files and Folders".


2. The Path for XP users is as follows ....

"C:\Documents and Settings\Your Windows ID\Local Settings\Application Data\ATI\ACE\Profiles\Your CCC Profile.XML.


3. When creating the Profile in the CCC make sure to save "All Catalyst Control Center Settings". If you don't the Profile XML file will not have the required sections in it labeled for Fan Control.


4. Most HD4870X2 users are able to change the fan speed in the section labeled <Feature name="FanSpeedAlgorithm_1">, but others need to change the section which is labeled <Feature name="FanSpeedAlgorithm_0">. It seems to depend on what species of HD 4870X2 they're using.
 
4. Most HD4870X2 users are able to change the fan speed in the section labeled <Feature name="FanSpeedAlgorithm_1">, but others need to change the section which is labeled <Feature name="FanSpeedAlgorithm_0">. It seems to depend on what species of HD 4870X2 they're using.

You are right, i missed this one.
In fact on my card the parameters with _0 refer to the slave gpu, the parameters with _1 refer to the master gpu. Moreover the fan controller is connected to the I2C bus of the master gpu. On some other cards you could have different connections and/or different IDs of the master and of the slave.
The best way to find which one is the ID (1 or 0) to modify, is to save a profile and look for the ID that has the "want" value different from zero under the line <Feature name="FanSpeedRPMTarget_ID">.
 
sorry, I just "skimmed" through the OP's post.

but will this control "both" fans for users running quad fire?

I was using the Expertool, but it only controls the top fan I believe and not both =(
 
sorry, I just "skimmed" through the OP's post.

but will this control "both" fans for users running quad fire?

I was using the Expertool, but it only controls the top fan I believe and not both =(
If the overdrive profile is able to set the fan speeds of both cards, yes, this method will control the fan speeds of both cards, but it will set the fan speeds equal.
Can you post the .xml file created by the CCC?
 
If the overdrive profile is able to set the fan speeds of both cards, yes, this method will control the fan speeds of both cards, but it will set the fan speeds equal.
Can you post the .xml file created by the CCC?

sure, but I'm not quite sure what it is that you are asking for :D

(1st time really using Vista 64, it's been literally years since I've had an ATi card, and I've never used Riva tuner haha)
 
sure, but I'm not quite sure what it is that you are asking for :D

(1st time really using Vista 64, it's been literally years since I've had an ATi card, and I've never used Riva tuner haha)
Run catalyst control center, click on profiles, then profile manager, enter whatever name for the profile, check ati overdrive in the composition window, save the profile, enable "show hidden files and folders" in Windows Explore options, browse to C:\Users\<user_name>\AppData\Local\ATI\ACE\Profiles (where <user_name> is your login name under vista), you'll find a .xml file with the name of the profile you created, open the file with notepad and post content here.
Be sure that Ati Overdrive is enabled before creating the profile.
 
will do, I'll get that up late tonight after work.

thanks for the detailed directions :D
 
Auto fan control on the X2.

Duty cycle min: 35
Duty cycle max: 100
T min: 60
T range: 40
T operating: 85
T low limit: 0
T high limit: 95



 
wow, i didn't know this software was out yet. awesome post!

hey noobie! PLEASE STICK AROUND! ;)
 
Auto fan control on the X2.

Duty cycle min: 35
Duty cycle max: 100
T min: 60
T range: 40
T operating: 85
T low limit: 0
T high limit: 95




HOW?? I have tried a few times to enable mine.. This is exactly what I want. Are you running Vista 64bit? Also what driver version are you running? This is great stuff!
 
Run catalyst control center, click on profiles, then profile manager, enter whatever name for the profile, check ati overdrive in the composition window, save the profile, enable "show hidden files and folders" in Windows Explore options, browse to C:\Users\<user_name>\AppData\Local\ATI\ACE\Profiles (where <user_name> is your login name under vista), you'll find a .xml file with the name of the profile you created, open the file with notepad and post content here.
Be sure that Ati Overdrive is enabled before creating the profile.

- <Profile>
- <Caste name="Graphics">
- <Groups>
- <Group name="Overdrive5">
<Feature name="TimeUnlocked" />
- <Feature name="OverclockEnabled">
<Property name="OverclockEnabledProperty" value="True" />
</Feature>
- <Feature name="CoreClockTarget_0">
<Property name="Want_0" value="50700" />
<Property name="Want_1" value="75000" />
</Feature>
- <Feature name="MemoryClockTarget_0">
<Property name="Want_0" value="50000" />
<Property name="Want_1" value="90000" />
</Feature>
- <Feature name="CoreVoltageTarget_0">
<Property name="Want_0" value="1050" />
<Property name="Want_1" value="1250" />
</Feature>
- <Feature name="MemoryVoltageTarget_0">
<Property name="Want_0" value="0" />
<Property name="Want_1" value="0" />
</Feature>
- <Feature name="FanSpeedProtocol_0">
<Property name="FanSpeedProtocolProperty" value="RPM" />
</Feature>
- <Feature name="FanSpeedAlgorithm_0">
<Property name="FanSpeedAlgorithm" value="Automatic" />
</Feature>
- <Feature name="FanSpeedRPMTarget_0">
<Property name="Want" value="0" />
</Feature>
- <Feature name="FanSpeedPercentTarget_0">
<Property name="Want" value="0" />
</Feature>
- <Feature name="CoreClockTarget_1">
<Property name="Want_0" value="50700" />
<Property name="Want_1" value="75000" />
</Feature>
- <Feature name="MemoryClockTarget_1">
<Property name="Want_0" value="50000" />
<Property name="Want_1" value="90000" />
</Feature>
- <Feature name="CoreVoltageTarget_1">
<Property name="Want_0" value="1050" />
<Property name="Want_1" value="1250" />
</Feature>
- <Feature name="MemoryVoltageTarget_1">
<Property name="Want_0" value="0" />
<Property name="Want_1" value="0" />
</Feature>
- <Feature name="FanSpeedProtocol_1">
<Property name="FanSpeedProtocolProperty" value="RPM" />
</Feature>
- <Feature name="FanSpeedAlgorithm_1">
<Property name="FanSpeedAlgorithm" value="Automatic" />
</Feature>
- <Feature name="FanSpeedRPMTarget_1">
<Property name="Want" value="0" />
</Feature>
- <Feature name="FanSpeedPercentTarget_1">
<Property name="Want" value="0" />
</Feature>
- <Feature name="CoreClockTarget_2">
<Property name="Want_0" value="50700" />
<Property name="Want_1" value="75000" />
</Feature>
- <Feature name="MemoryClockTarget_2">
<Property name="Want_0" value="50000" />
<Property name="Want_1" value="90000" />
</Feature>
- <Feature name="CoreVoltageTarget_2">
<Property name="Want_0" value="1050" />
<Property name="Want_1" value="1250" />
</Feature>
- <Feature name="MemoryVoltageTarget_2">
<Property name="Want_0" value="0" />
<Property name="Want_1" value="0" />
</Feature>
- <Feature name="FanSpeedProtocol_2">
<Property name="FanSpeedProtocolProperty" value="Percent" />
</Feature>
- <Feature name="FanSpeedAlgorithm_2">
<Property name="FanSpeedAlgorithm" value="Automatic" />
</Feature>
- <Feature name="FanSpeedRPMTarget_2">
<Property name="Want" value="1708" />
</Feature>
- <Feature name="FanSpeedPercentTarget_2">
<Property name="Want" value="30" />
</Feature>
- <Feature name="CoreClockTarget_3">
<Property name="Want_0" value="50700" />
<Property name="Want_1" value="75000" />
</Feature>
- <Feature name="MemoryClockTarget_3">
<Property name="Want_0" value="50000" />
<Property name="Want_1" value="90000" />
</Feature>
- <Feature name="CoreVoltageTarget_3">
<Property name="Want_0" value="1050" />
<Property name="Want_1" value="1250" />
</Feature>
- <Feature name="MemoryVoltageTarget_3">
<Property name="Want_0" value="0" />
<Property name="Want_1" value="0" />
</Feature>
- <Feature name="FanSpeedProtocol_3">
<Property name="FanSpeedProtocolProperty" value="Percent" />
</Feature>
- <Feature name="FanSpeedAlgorithm_3">
<Property name="FanSpeedAlgorithm" value="Automatic" />
</Feature>
- <Feature name="FanSpeedRPMTarget_3">
<Property name="Want" value="1371" />
</Feature>
- <Feature name="FanSpeedPercentTarget_3">
<Property name="Want" value="27" />
</Feature>
</Group>
</Groups>
- <Adapter name="PCI_VEN_1002&DEV_9441&SUBSYS_25421002&REV_00_6&1E7C38DA&0&00200008A">
<Aspect name="Overdrive5" />
</Adapter>
</Caste>
</Profile>
 
- <Profile>
.................
->
Ok, maybe my method will work with your cards too.
Let's suppose you want to create a profile that set the fan speed of both cards to 35%, you have to modify the profile in this way:

Find the line
<Feature name="FanSpeedAlgorithm_2">
change the next line to
<Property name="FanSpeedAlgorithm" value="Manual" />

Find the line
<Feature name="FanSpeedPercentTarget_2">
change the next line to
<Property name="Want" value="35" />

Find the line
<Feature name="FanSpeedAlgorithm_3">
change the next line to
<Property name="FanSpeedAlgorithm" value="Manual" />

Find the line
<Feature name="FanSpeedPercentTarget_3">
change the next line to
<Property name="Want" value="35" />

Test with different speeds activating profiles from CCC that set different duty-cycles and see if the fan speed on both cards change effectively.
These are the only differences with respetct to the guide in the first post.
You have only to verify that rivatuner is able to read the temperature of one gpu in your configuration.
 
Yes, i know, as i said there are some X2s where Rivatuner is able to set the auto fan control parameters.
Which brand do you have? Operating system?

I am more interested in getting the Auto working also. Does driver version make a difference? My currently does not work with the Diamond 4870x2 and Beta 8.52 driver.
 
I am more interested in getting the Auto working also. Does driver version make a difference? My currently does not work with the Diamond 4870x2 and Beta 8.52 driver.
Well, you can try with a different set of drivers.
In my case i have a sappire 4870x2 running on vista 64 with cat 8.8 official and i'm unable to get auto control working with rivatuner.
 
Well, you can try with a different set of drivers.
In my case i have a sappire 4870x2 running on vista 64 with cat 8.8 official and i'm unable to get auto control working with rivatuner.

I would but this seems to be the driver that works best in my setup. I have issues with all the others. Oh well.. one can only hope they release a good aftermarket cooler.
 
Yes, i know, as i said there are some X2s where Rivatuner is able to set the auto fan control parameters.
Which brand do you have? Operating system?
Mine wouldn't work at first, just hung at the fan control. Takes a bit of messing around to get it to work. But its not the make or drivers that has any effect on it.

This explains it best, but it worked for me on Vista64 Sapphire on 8.54 & 8.52

mascaras said:
link when that happen , click reboot , after reboot open rivatunner and click "Detect now" , now the program will hang up (not responding) and saying "reboot is recomended" , just close it (red cross) and open rivatuner again and the fan control is unlocked !


:up:
 
Mine wouldn't work at first, just hung at the fan control. Takes a bit of messing around to get it to work. But its not the make or drivers that has any effect on it.

This explains it best, but it worked for me on Vista64 Sapphire on 8.54 & 8.52
Yeah, i tried that one, no luck here :(
 
I must of tried a half dozen combinations before it stuck. I knew something was going on as it was reading the fan speed well enough, just grayed out. I'm sure its not make specific, I've seen all different makes work straight off and others start working after pissing about with it. Very odd.
 
I must of tried a half dozen combinations before it stuck. I knew something was going on as it was reading the fan speed well enough, just grayed out. I'm sure its not make specific, I've seen all different makes work straight off and others start working after pissing about with it. Very odd.
Yes, i agree, for sure the program is able to control the fan speed on my board too, but some strange combination of events is preventing it from working...anyway i sent a debugging log to Unwinder, i hope he will find a solution.
 
Well I finally got mine to let me put the check in the box. It wont let me modify the number fields tho. Any other steps?


Edit: I set the value to 3 under riva fan control in power settings and was able to edit. I set the min speed to 30 so its still quiet at idle. I was getting 83C under load before and after this fan control I get 71C!
 
Well I finally got mine to let me put the check in the box. It wont let me modify the number fields tho. Any other steps?


Edit: I set the value to 3 under riva fan control in power settings and was able to edit. I set the min speed to 30 so its still quiet at idle. I was getting 83C under load before and after this fan control I get 71C!
Good.
Anyway rivatuner 2.11 in on the way. The great news is that new version of rivatuner will support fan control even for Crossfire Systems, i.e. users of 2 4870 X2 will be able to control fan speed on both cards.

On a side note, here's the explanation of the parameters of the auto control mode:
In the auto control mode, the fan speed is a linear function of the gpu temperature, i.e. the fan speed duty cycle varies lineraly between a minimum duty-cycle (Duty_cycle_min) and a maximum duty_cycle (Duty_cycle_max). The duty-cycle is equal to Duty_cycle_min at the temperature T_min and to Duty_cycle_max to temperature T_max.
In Rivatuner auto control rules we can set Duty_cycle_min, Duty_cycle_max and T_min.
T_max instead has to be set by changing T_range. Here's the formula to compute T_range:
T_range=2/3*100*(T_max-T_min)/(Duty_cycle_max-Duty_cycle_min)
Note that not all values of T_range are possible. In fact T_range possible values vary with wide steps.Rivatuner will set the T_range possible value closest to the one we enter.
Finally, if we want the control curve constant, we have to disable dynamic control of Tmin.
It is enough to set:
T_low_limit=0
T_high_limit=T_operating=110

Moreover, take note that the control temperature on which the control is made, is not the gpu temperature you'll see in rivatuner as default, but the temperature reported by the fan sensor connected to the controller. This temperature is a little different from the core temperature you see in the other utilities. In order to see the temperature of the fan sensor, open rivatuner hardware monitor, right click on the core temperature graph, click on setup and in the setup window, in the data provider menu, choose ADT7473.dll:0.
Hope this helps.
 
Thanks for breaking that all down. I think most of us are looking for the same thing. I nice quiet idle when not under load and of course we want it to spin up and keep it cool when in games. I still have some playing to do with mine but its very nice to have this control.
 
Ribbell, Do you have any recommendations for low level fan control settings? For me anything over 30% is to loud at idle.. I could care less about load noise.
 
Ribbell, Do you have any recommendations for low level fan control settings? For me anything over 30% is to loud at idle.. I could care less about load noise.
It depends strongly on how much heat your GPUs generate at idle (this depends on the 2d clocks: i have them set to 300/507 for memory/gpu), on your case temperature and on the temperature you would get at idle. In my case i use these settings:
Duty-cycle_min = 34 %
Duty-cycle_max = 100 %
Tmin=60
Trange=80
Toperating=85
Tlow_limit=60
Thigh_limit=110
With these settings, my master gpu temperature in idle is 55 ° C with the fan spinning at 34% and, on load, is 80 ° C with the fan spinning at 60%.
Please take note that with these settings dynamic Tmin control is enabled, so Tmin will be decreased under load. Don't worry, it will return to normal values under 2d after the temperature will decrease.
Optimal settings for you will depend on the temperature in idle that you reach with the fan spinning at 30 %. Make a test and lemme know, i'll try to find the optimal settings for you.
 
It depends strongly on how much heat your GPUs generate at idle (this depends on the 2d clocks: i have them set to 300/507 for memory/gpu), on your case temperature and on the temperature you would get at idle. In my case i use these settings:
Duty-cycle_min = 34 %
Duty-cycle_max = 100 %
Tmin=60
Trange=80
Toperating=85
Tlow_limit=60
Thigh_limit=110
With these settings, my master gpu temperature in idle is 55 ° C with the fan spinning at 34% and, on load, is 80 ° C with the fan spinning at 60%.
Please take note that with these settings dynamic Tmin control is enabled, so Tmin will be decreased under load. Don't worry, it will return to normal values under 2d after the temperature will decrease.
Optimal settings for you will depend on the temperature in idle that you reach with the fan spinning at 30 %. Make a test and lemme know, i'll try to find the optimal settings for you.

Thx, I am changing cases next week so I want to wait and see how my temps look. I still need to build a profile to drop my idle temps but at 30% right now im getting 55c idle on my hottest gpu.
 
Thx, I am changing cases next week so I want to wait and see how my temps look. I still need to build a profile to drop my idle temps but at 30% right now im getting 55c idle on my hottest gpu.
Then you should try my settings, just change duty-cycle-min from 34 to 30% and remember to check "apply settings at startup".
 
Back
Top