SMBus Palomino Internal Diode Reader
Written by pHaestus
Added on: January 08, 2002
Introduction
Since Athlon's Socket A CPUs became the overwhelming choice for overclockers, there has been an explosion of hardware sites performing reviews of different coolers and thermal interface materials. Unfortunately, the mountain of results that have been obtained and reported are often impossible to compare from site to site, and sometimes even internally (even VyW is guilty of this as we have had several motherboards and testers pass through the site). With the Thunderbird and the Duron, AMD decided to eschew any sort of CPU core temperature monitoring via internal diodes and instead rely on indirect measurements. Very indirect measurements. With a CPU that puts out 100W heat in an extremely small area, it is simply an impossible task to use a thermistor with a slow response that is only making marginal contact with the under side of the CPU. With the Palomino core, AMD addressed this problem by adding an internal diode to report temperatures to the motherboard. Unfortunately, motherboard manufacturers haven't felt the need to add this feature into their offerings. Tyan dual CPU motherboards collect diode readings, and there is a Fujitsu-Siemens KT266 motherboard available in Europe that also manages this. The latest Asus KT266A also supposedly reads temperatures from the internal diode, but that feature appears to be broken with no word from Asus on whether it will be fixed with a new hardware revision or with a BIOS flash.
All is not lost though. Someone was clever enough to realize that it is possible to make your own internal diode reader for AMD palomino core CPUs. I have spoken to the originator of this thread, Peter North (hehe) on AIM and IRC, and he passed to me the fine art of building an internal diode reader for Palominos. This will work for Morgan core Durons, Athlon XPs and Athlon MPs. If you choose the ICs carefully, you can even manage to record internal diode temps for SMP motherboards.
SMBus Internal Diode Reader for Palominos
Peter North is in the process of writing up his how to for making the reader for another site, so I am not going to steal his thunder by posting a full schematic and how to. If you are dying to learn how to build one, then you can either contact me, or else carefully read through this link as the procedure is basically the same. Here is an overview of how it works though: There are many ICs made by Maxim that interface with a motherboard via SMBus, and one of these chips, the MAX6657 was the one I chose to use. The 6657 reads the temperature locally (on the IC) and also remotely (this will be our Palomino's core diode). The major advantage of the 6657 over the 166x series (shown in the link above) is that it is large and so much simpler to solder onto compared to some of the more elaborate ICs from Maxim. If all you want is a CPU diode reader though it is perfectly fine. It requires no calibration and is accurate to within 1C, so it is not too difficult to set up. Here are a couple of pictures of the diode reader (keep in mind that the 6657 is a larger and easier to solder version):
The MAX6657 IC with leads soldered
Finished Diode reader
I am not the greatest solderer in the world, but I have practiced soldering on IC legs many times prior to doing voltage mods so this wasn't unfamiliar work. Once the reader was completed, I interfaced it to the SMBus of my Asus A7V-133 by using two 4 pin sound cables from cd-roms (although a spare USB header would work great for this). Now the reader will interface with Motherboard Monitor or Speedfan; it should be detected across the SMBus when either program is started. Here is a picture of the reader's entry in MBM:
Connecting to the SMBus header
Maxim IC detected in MBM
If your motherboard doesn't have a SMBus header (Asus and Abit motherboards usually do; my Shuttle does not) then you can also leech the SMB Clock and SMB Data lines off of a memory stick by soldering two wires to it. This is what I am eventually going to have to do with my Shuttle. Once the diode reader is interfaced, then it is necessary to connect the reader with the diode on the CPU's core. Two pins of the Palomino make up the reader, and so it is necessary to solder two wires to the backside of the motherboard onto the corresponding pins of the socket. You can determine which pins to solder onto by reading this document from AMD. Here is my wiring:
Now we're getting somewhere!
That is all there is to it. The project took me a night of working on it off and on, and about $3 in parts. Now that we have (in theory) a reliable method to read temperatures off of the CPU core, I figured that some preliminary test results would be useful.