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&DEV_9441&SUBSYS_25421002&REV_00_6&B5C08C&0&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:
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:
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:
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![Stick Out Tongue :p :p](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Edit: remember to enable background monitor in the hardware monitor and to set up rivatuner in order to run at windows startup.
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&DEV_9441&SUBSYS_25421002&REV_00_6&B5C08C&0&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](http://img389.imageshack.us/img389/8761/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](http://img389.imageshack.us/img389/3572/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](http://img137.imageshack.us/img137/1636/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
Edit: remember to enable background monitor in the hardware monitor and to set up rivatuner in order to run at windows startup.