Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    CPU Temp - Atom D525

    Hardware
    5
    14
    14.1k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • jimpJ
      jimp Rebel Alliance Developer Netgate
      last edited by

      It's a little off, but I find it curious that the numbers are very close to their Fahrenheit equivalents.

      -1C ~= 30F

      Almost like coretemp thinks that the BIOS value is in F, so it converts it to C.

      Remember: Upvote with the 👍 button for any user/post you find to be helpful, informative, or deserving of recognition!

      Need help fast? Netgate Global Support!

      Do not Chat/PM for help!

      1 Reply Last reply Reply Quote 0
      • C
        coltect
        last edited by

        You could be onto something there.
        Maybe that's why the values only go to -1C. That would be a reasonable assumption to make by a programmer that a running CPU would never go below -1F.

        1 Reply Last reply Reply Quote 0
        • C
          coltect
          last edited by

          Absolutely right. I had a quick look at the values I had written down, and they work out a being read from the BIOS as F and being recalculated and displayed as C.
          I had even worked out that when it was showing -1 from coretemp, the BIOS was at 32 or lower.
          Hit me with a brick and I wouldn't notice sometimes  :D

          1 Reply Last reply Reply Quote 0
          • jimpJ
            jimp Rebel Alliance Developer Netgate
            last edited by

            Are there any options in the BIOS that might alter the F/C display? I'm curious if that would affect the output of coretemp

            Remember: Upvote with the 👍 button for any user/post you find to be helpful, informative, or deserving of recognition!

            Need help fast? Netgate Global Support!

            Do not Chat/PM for help!

            1 Reply Last reply Reply Quote 0
            • C
              coltect
              last edited by

              A bit more info.
              I just jumped into the BIOS to see if I could make it report in F and can't but in the BIOS the temperature string is reported as "30 C/86 F" with a degree symbol before the C and F.
              I'd reckon that coretemp is reading the first value and seeing the F on the end of the string, and calculating, in this case 30F to -1C.

              Bed time now, thanks again for the insight.

              1 Reply Last reply Reply Quote 0
              • stephenw10S
                stephenw10 Netgate Administrator
                last edited by

                This seems unlikely to be a units problem to me. In fact in this thread we have two users who are both seeing -1 reported by coretemp and 28 and 30 in the bios. Could (must in fact) be at different times though.

                Are either of you seeing something like this at bootup:

                
                coretemp0: <cpu on-die="" thermal="" sensors="">on cpu0
                coretemp0: Can not get Tj(target) from your CPU, using 100C.</cpu> 
                

                Seems to be a possible bug with the Atom D525.

                Are you using 64bit or 32?

                Steve

                Edit: Failing to detect the Tj value (the maximum junction temperature for the CPU) should not cause this behaviour. Though it should be detected. And infact this message wasn't introduced until 8.2 so forget that!

                1 Reply Last reply Reply Quote 0
                • stephenw10S
                  stephenw10 Netgate Administrator
                  last edited by

                  Looking at the code for coretemp, here is the interesting part:

                  
                  /*
                  	 * Bit 31 contains "Reading valid"
                  	 */
                  	if (((msr >> 31) & 0x1) == 1) {
                  		/*
                  		 * Starting on bit 16 and ending on bit 22.
                  		 */
                  		temp = sc->sc_tjmax - ((msr >> 16) & 0x7f);
                  	} else
                  		temp = -1;
                  
                  

                  So a temperature reading of -1 indicates an invalid reading in the CPU MSR. Not sure what can be done about that. Are the MSRs setup by the BIOS?

                  Steve

                  1 Reply Last reply Reply Quote 0
                  • C
                    coltect
                    last edited by

                    While looking into monitoring for something else I found this on the lm-sensors site regarding coretemp.
                    I'm not real good at working out what the C source code is doing, but does this sound possible ?

                    From http://www.lm-sensors.org/wiki/FAQ/Chapter3#coretempreturnsunrealisticvalues

                    coretemp returns unrealistic values ¶

                    The temperature value returned by the coretemp driver isn't absolute. It's a thermal margin from the critical limit, and the greater the margin, the worse the accuracy. It isn't really returning degrees Celsius. At high temperatures, the (small) thermal margin is almost expressed in degrees Celsius, but at low temperature, the (high) thermal margin is no longer expressed in actual degrees Celsius.

                    So, if the temperature value reported by coretemp is unrealistically low, all it means is that you are far away from the critical limit so your systems are running totally fine and cool and you don't have to worry at all. Unfortunately, there is no way to improve the readings, this is a hardware limitation.

                    Additionally, the critical limit value may be wrong on come CPU models. We may be able to address this problem over time, but again it's not really a problem in the first place. All that really matters is how far the measurement is from that limit. If the difference is above 40 pseudo degrees Celsius (again these are not real degrees Celsius!) then you're safe.

                    1 Reply Last reply Reply Quote 0
                    • stephenw10S
                      stephenw10 Netgate Administrator
                      last edited by

                      Hmm, interesting.

                      That could well be true. It seems a little disappointing that Intel wouldn't correctly calibrate the thermal diode though.
                      In fact the value returned as a sysctl is expressed in mK but convered back to °C by the sysctl(8) program when you integregate it. Hence the coretemp program having this:

                      
                      temp = coretemp_get_temp(dev) * 10 + TZ_ZEROC;
                      
                      

                      The actual value in °C is calcualted by subtracting the register value (returned by the diode) from the maximum junction temperature:

                      
                      temp = sc->sc_tjmax - ((msr >> 16) & 0x7f)
                      
                      

                      Hence if the junction value is incorrect it will return incorrect temperatures.
                      The maximum junction temp appears to be 100°C for the D525 so it's probably correct.

                      However if it is returning -1 I think it's safe to say that the 'valid reading' bit has not been set. Why that might be I'm not sure.

                      Steve

                      1 Reply Last reply Reply Quote 0
                      • T
                        thermo
                        last edited by

                        @wayner:

                        I am running an Intel Atom D525 CPU with a Jetway F99FL-525 Motherboard.  Has anyone got coretemp working properly with this CPU and mobo or similar?  Any ideas on how to fix?

                        I'm using this board with Bios release 2, and the temperatures show correctly, as per the instructions in the thread you linked to:

                        
                        sysctl -a | grep temperature
                        dev.cpu.0.temperature: 37.0C
                        dev.cpu.1.temperature: 38.0C
                        
                        
                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post
                        Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.