First post, by tehsiggi
- Rank
- Member
I'm coming here to you today with a nifty little mod. It should apply to all Radeon 9600 Pro, as long as they use the PCB shown in my pictures (usually the BGA memory ones).
This mod allows you to read out the temperatures of the GPU and ambient of your 9600 Pro. No matter if it is an RV350 or RV360.
Some background
I've studied a lot of schematics from Radeon cards of the R200/R300 era and found some interesting stuff. Whereas the normal R200 and RV250 did not have any thermal monitoring capabilities inside the ASIC, the RV280 (Radeon 9200/9250, RV350 & RV360 (Radeon 9550/9600) have a thermal diode for temperature sensing.
I will not go into R300, R350 and R360 for now, there is more to it than you might think (they appear to use a thermistor inside the ASIC in R300 and R350 - R360 looks like a diode again). Same is true for the RV280, more on that in a different post later.
This here is about the RV350 and RV360. They have two pins on their ASIC which are called D+ and D- and they are labeled in the section "THERM" which is kind of obvious.
Here you can see forwarding voltage of the thermal diode of my RV350:
Furthermore the schematics of the Radeon 9600XT suggest the use of an LM63 or ADM1030 for thermal sensing. You can think of it the following way:
- GPU has two pins for its thermal diode
- GPU has an interface (I2C) for communication to external peripherals like sensors
- There is an external IC that can interprete the voltage drop over the thermal diode and convert it into temperatures
The Radeon 9600XT and Radeon 9800XT were the only ones in the Radeon 9000 series to use this featue. Though not all cards with the name had it enabled. It was promoted as "Overdrive" which allowed the driver to automatically adjust the GPUs clock if the temperature headroom allowed for it. Something we take for granted today, but is pretty novel for consumer hardware back then.
The presence of the LM63 as the monitoring IC that reads the thermal diode of the RV350/RV360 is a must have to get the temperatures.
Tools like RivaTuner, ATITool or Everest will scan all I2C busses of the GPU (incl the ones for DVI and VGA btw) to check if there is a compatible sensor found. The LM63 being one of them.
All we need to do is populate the necessary parts and we're golden!
The card and parts
For this mod you will need a card that has the PCB prepared for the LM63. Usually 9600s with BGA memory fall into that category.
Here you can see the part where the LM63 would be placed if this card was an XT instead of a Pro and the vendor had decided to support overdrive.
We'll need the following parts:
- C257 - 2.2nF 0603 (filtering capacitor for thermal diode input)
- C256 - 100nF 0603 (de-coupling capacitor)
- C258 - 100pF 0603 (de-coupling capacitor)
- U20 - LM63
You'll note that R45 and R46 as well as R554 are already populated. These are the pull-ups (4.7kOhm 0603) for the I2C bus as well as for the ALERT (20kOhm 0603) signal of the LM63. Interestingly on all my cards the parts are populated, allthough nothing but the LM63 relies on them. I suppose since they were negligible in BOM cost, they just slammed them on there. (Furthermore they are on a different page of the schematic 😉). This means the I2C bus is already prepared for us and we need only the 4 parts mentioned above to get going.
The mod
Just install the parts as mentioned on the PCB. Make sure the pin 1 indicator matches the PCB (dot meets angled corner of the footprint). You can easily solder this using a hotair gun + flux. The solder on the PCB is sufficient. You can also solder this by hand, as 0603 is not too hard with a pair of tweezers.
If (unfortunately) had only 0402 laying around for the caps, so I used that. Here is a picture of my parts with C257 still missing.
Once you're done soldering, make sure to clean everything up nicely and give your card a shot.
There was no need for any additional driver mods or anything.
The result
I was able to confirm that my 9600Pro with RV350 works nicely out of the box with the LM63 - you can see the screenshots below:
Furthermore the temperature appears to fairly accurate, I've done comparison measurements of the LM63 (which measures the ambient temperature) and the back of the PCB where the ASIC is located:
I'm happy with the results and now I have a 9600 Pro that tells me how it feels.
Question and answers
Will this work if my card has no place for the LM63?
No, your PCB needs to have everything prepared for that. Otherwise there is no way to get to the thermal diode pins.
Can I do the same on my Radeon 9500/9700/9800?
No, the Radeon 9500, 9700 and 9800 all use the same base schematic. They have a place for a MIC502, which is a temeprature controlled fan controller. However that one is not meant to use thermal probing diodes, but thermistors. So the reference schematic (which is basically the same for all three of these cards) uses a thermistor + an LM324 schematic. There is no bus connection to the ASIC and the MIC502 does not support digitizing those temperature readings. But I have some plans for that. First I need to characterize that internal thermistor though.
What about the Radeon 9200/9250?
What I can deduct from working with those ASICs is that they appear to have a thermal probing diode as well, but it appears not to be used in any of the designs. Not even in the Gigabyte 92128DH which i have that has temperature readings. They all appear to use external thermistors.
The measurements I did on blank ASIC suggest however that the thermal diode works exactly as on the RV350.
What about fan control?
There are missing parts for that as well and if time permits I'll provide information on that as well.








