GPU temperature reading

If you need any help with XBMC4XBOX, such as installing or using the software, please post it in here.
Post Reply
psyko_chewbacca
Posts: 213
Joined: Fri Oct 05, 2012 5:19 pm
Location: Québec, Canada
Has thanked: 21 times
Been thanked: 125 times

GPU temperature reading

Post by psyko_chewbacca »

Hi there,

While developing XBlast OS, I was playing with temperature readings and after some research, I came to the conclusion that the temperature reading identified as "GPU Temperature" in XBMC4Xbox does not come from the X-GPU at all. On 1.0-1.5, there are 2 temperature probes supplied by the ADM1032, one coming from the CPU and the second from the internal sensor of the ADM1032. That ADM1032 would be located in quadrant 6F on the top of the motherboard(MSOP-8 IC, labeled U6F1, near the MCPX).

As XBMC4Xbox directly reads values contained in this chip for both temperatures, it would seem it is not possible to read the temperature of the GPU. The only 2 temperatures values you can get are for the CPU and the ambient temperature near the MCPX.

I'm not sure from where 1.6(b) consoles get their ambient temperature as the ADM1032 was removed (Xyclops maybe?).

So my question is why this temperature reading is still referred as coming from the GPU when it's been proven long ago that it does not? Shouldn't it be labeled as the motherboard's temperature?
User avatar
BuZz
Site Admin
Posts: 1890
Joined: Wed Jul 04, 2012 12:50 am
Location: UK
Has thanked: 65 times
Been thanked: 422 times
Contact:

Re: GPU temperature reading

Post by BuZz »

psyko_chewbacca wrote: So my question is why this temperature reading is still referred as coming from the GPU when it's been proven long ago that it does not? Shouldn't it be labeled as the motherboard's temperature?
First I have heard of it - When proven long ago was this information ever handed over to a xbmc dev at that time ? I'm assuming it wasn't or if it was, no-one got around to fixing it.
psyko_chewbacca
Posts: 213
Joined: Fri Oct 05, 2012 5:19 pm
Location: Québec, Canada
Has thanked: 21 times
Been thanked: 125 times

Re: GPU temperature reading

Post by psyko_chewbacca »

Some references:

Datasheet of the IC that states it can read from a single external probe and supply temperature from internal sensor only:
http://datasheet.octopart.com/ADM1032AR ... t-1001.pdf

Location of the chip:
http://osdir.com/ml/ports.xbox.devel/20 ... 00560.html
Confirmed by me on a 1.2 motherboard. "T2A" markings on the chip itself matches the device ID in datasheet linked above (near the end of the PDF).

In XBMC4Xbox, everything related to temperature data acquisition is in CFanController class.
GetGPUTempInternal() probes the SMBus and ask the PIC for a byte at register 0x0A. Returned value is always the same as probing the ADM1032 directly at register 0x00, which is the register for temperature value of the internal sensor of the ADM1032. It seems highly improbable that both the GPU and ADM1032 internal temperature would always be equals and vary at the same time given they are far apart from each other.


Finally, cromwell only handles reading "motherboard" and "CPU" temperature from the ADM1032 directly. https://github.com/not404/cromwell/blob ... etAction.c, line 134
From my personnal experimentation, reading PIC at register 0x0A and ADM1032 at register 0x00 gives exactly the same value, at any given time.
User avatar
professor_jonny
Posts: 1296
Joined: Thu Jul 05, 2012 5:41 am
Location: New Zealand
Has thanked: 66 times
Been thanked: 196 times

Re: GPU temperature reading

Post by professor_jonny »

In a 1.6 the temp sensor is in xcalibur:

http://forum.kodi.tv/showthread.php?tid=19143
User avatar
spicemuseum
Posts: 906
Joined: Mon Jul 09, 2012 11:08 pm
Has thanked: 94 times
Been thanked: 75 times

Re: GPU temperature reading

Post by spicemuseum »

professor_jonny wrote:In a 1.6 the temp sensor is in xcalibur:

http://forum.kodi.tv/showthread.php?tid=19143
Isn't that thread explaining that the CPU temp sensor is in Xcalibur in a v1.6 ?
User avatar
professor_jonny
Posts: 1296
Joined: Thu Jul 05, 2012 5:41 am
Location: New Zealand
Has thanked: 66 times
Been thanked: 196 times

Re: GPU temperature reading

Post by professor_jonny »

correct I read it wrong but it explains the process of obtaining the cpu and gpu temps in a 1.6 and where they com from and how with sample code, it may be of use.
User avatar
spicemuseum
Posts: 906
Joined: Mon Jul 09, 2012 11:08 pm
Has thanked: 94 times
Been thanked: 75 times

Re: GPU temperature reading

Post by spicemuseum »

Indeed, and It's intersting that the CPU temp sensor is in the video driver chip, logically, and physically, distinct and separate from the CPU - and not subject to the same airflow path.
psyko_chewbacca
Posts: 213
Joined: Fri Oct 05, 2012 5:19 pm
Location: Québec, Canada
Has thanked: 21 times
Been thanked: 125 times

Re: GPU temperature reading

Post by psyko_chewbacca »

professor_jonny wrote:correct I read it wrong but it explains the process of obtaining the cpu and gpu temps in a 1.6 and where they com from and how with sample code, it may be of use.
Yep, the same code was integrated in XBMC and it's been in XBlast OS too for a few days too.
spicemuseum wrote:Indeed, and It's intersting that the CPU temp sensor is in the video driver chip, logically, and physically, distinct and separate from the CPU - and not subject to the same airflow path.
The actual temperature sensor doesn't need to be in the Xcalibur itself. The Pentium III CPU used in the Xbox does have a thermal diode onboard, you just need to connect it to an IC that can properly collect data from it.
http://en.wikipedia.org/wiki/Thermal_di ... r_function

On 1.0-1.5 Xboxes, there's a dedicated IC near the MCPX that takes reading from this particular diode. It's the same thing on the 1.6(b), they just removed the ADM1032 IC and relocated functionnality. While designing the Xcalibur chip, they surely integrated the necessary logic to handle temperature reading.

The fact that readings are jumpy and must be smoothed(XBMC's averaging 10 samples beforing sending out a value btw) can either be design flaw in the internal logic of the Xcalibur, a really (and I mean really) poor ADC in Xcalibur or poorly routed signal traces on the PCB. Voltage variation per celcius is low (Wikipedia reports 2mv/°C but maybe some are lower than that) and thus you must make sure to shield your PCB traces containing the analog signal from any parasitic noise. Maybe MS didn't really care into providing accurate reading since they had used the same CPU for a couple of years back then and to my knowledge they never really had complaints of overheating units.
User avatar
spicemuseum
Posts: 906
Joined: Mon Jul 09, 2012 11:08 pm
Has thanked: 94 times
Been thanked: 75 times

Re: GPU temperature reading

Post by spicemuseum »

Chewy wrote:
spicemuseum wrote:Indeed, and It's intersting that the CPU temp sensor is in the video driver chip, logically, and physically, distinct and separate from the CPU - and not subject to the same airflow path.
The actual temperature sensor doesn't need to be in the Xcalibur itself. The Pentium III CPU used in the Xbox does have a thermal diode onboard, you just need to connect it to an IC that can properly collect data from it.
http://en.wikipedia.org/wiki/Thermal_di ... r_function

On 1.0-1.5 Xboxes, there's a dedicated IC near the MCPX that takes reading from this particular diode. It's the same thing on the 1.6(b), they just removed the ADM1032 IC and relocated functionnality. While designing the Xcalibur chip, they surely integrated the necessary logic to handle temperature reading.
Okay, that makes sense. Thanks.
Post Reply