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?
GPU temperature reading
-
- Posts: 213
- Joined: Fri Oct 05, 2012 5:19 pm
- Location: Québec, Canada
- Has thanked: 21 times
- Been thanked: 125 times
- 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
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 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?
-
- 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
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.
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.
- professor_jonny
- Posts: 1296
- Joined: Thu Jul 05, 2012 5:41 am
- Location: New Zealand
- Has thanked: 66 times
- Been thanked: 196 times
- spicemuseum
- Posts: 906
- Joined: Mon Jul 09, 2012 11:08 pm
- Has thanked: 94 times
- Been thanked: 75 times
Re: GPU temperature reading
Isn't that thread explaining that the CPU temp sensor is in Xcalibur in a v1.6 ?professor_jonny wrote:In a 1.6 the temp sensor is in xcalibur:
http://forum.kodi.tv/showthread.php?tid=19143
- 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
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.
- spicemuseum
- Posts: 906
- Joined: Mon Jul 09, 2012 11:08 pm
- Has thanked: 94 times
- Been thanked: 75 times
Re: GPU temperature reading
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.
-
- 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
Yep, the same code was integrated in XBMC and it's been in XBlast OS too for a few days too.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.
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.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.
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.
- spicemuseum
- Posts: 906
- Joined: Mon Jul 09, 2012 11:08 pm
- Has thanked: 94 times
- Been thanked: 75 times
Re: GPU temperature reading
Okay, that makes sense. Thanks.Chewy wrote: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.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.
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.