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

How to: Get CPU temp

Scheduled Pinned Locked Moved 2.0-RC Snapshot Feedback and Problems - RETIRED
140 Posts 24 Posters 115.8k Views
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.
  • A
    ariyako
    last edited by Aug 9, 2011, 3:23 AM

    @jimp:

    Even better:
    http://files.pfsense.org/jimp/tempmon/

    WIN  ;D  :D

    1 Reply Last reply Reply Quote 0
    • S
      stephenw10 Netgate Administrator
      last edited by Aug 9, 2011, 9:53 AM

      @seh2000:

      I am not a programmer, but if I replace the "C" with another symbol or take the "C" away then at the next update it is replaced with a "C" I believe this is from the command sysctl dev.cpu.0.temperature as the return is nn.nC so the degree symbol and the C added to the system_information.widget.php is overwritten

      It exhibits the same behaviour for me and I'm using mbmon to get the temperature which returns only the temperature, nn.n.

      Steve

      1 Reply Last reply Reply Quote 0
      • M
        Metu69salemi
        last edited by Aug 9, 2011, 10:09 AM

        Waiting to someone package this or make a widget.

        1 Reply Last reply Reply Quote 0
        • S
          seh2000
          last edited by Aug 9, 2011, 11:11 AM

          It exhibits the same behaviour for me and I'm using mbmon to get the temperature which returns only the temperature, nn.n.

          Steve

          Hi Steve,
          Tried to get mbmon to work on my box, but cannot as I would have liked to have the fan RPMs, but core temp will do for now and at least now we know why the ' ° ' goes away (overwritten).
          Cheers Steen

          1 Reply Last reply Reply Quote 0
          • S
            stephenw10 Netgate Administrator
            last edited by Aug 9, 2011, 11:46 AM

            The coretemp sensor is far more accurate. I would use that if my hardware supported it.
            I was pointing out that the ° symbol disappears even though mbmon does not return a 'C' character.
            I would guess it's being snipped by some other part of the script.

            Steve

            1 Reply Last reply Reply Quote 0
            • S
              seh2000
              last edited by Aug 9, 2011, 11:58 AM

              @stephenw10:

              The coretemp sensor is far more accurate. I would use that if my hardware supported it.
              I was pointing out that the ° symbol disappears even though mbmon does not return a 'C' character.
              I would guess it's being snipped by some other part of the script.

              Steve

              Tx for the feedback I will keep using coretemp.
              When I replaced the 'C' with Q, 6, z then each time at the first updated they were replaced with the 'C', but why under mbmon in mbmon does not return a 'C' character - no idea.
              Maybe one could strip the 'C' by only allow NN.n in the field and have ° C hardcoded somehow. Well at least I can see the temp right now from one care this been a wish for a long time! Thanks to all here for making that happen!
              Cheers Steen

              1 Reply Last reply Reply Quote 0
              • S
                stephenw10 Netgate Administrator
                last edited by Aug 9, 2011, 12:32 PM Aug 9, 2011, 12:24 PM

                Speculating….
                There are two functions. One that draws the table and all the static data and fills in the dynamic data, system_information.widget.php. Another function updates the dynamic data and it's that function that needs updating to include a °.
                ...End speculation.

                Steve

                Edit: Yes. In /usr/local/www/javascript/index/ajax.js
                Add a ° to the updateTemp function like this:

                function updateTemp(x) {
                if($("tempmeter")) {
                $("tempmeter").value = x + '°C';
                $("tempwidtha").style.width = x + 'px';
                $("tempwidthb").style.width = (100 - x) + 'px';
                }

                1 Reply Last reply Reply Quote 0
                • S
                  seh2000
                  last edited by Aug 9, 2011, 12:47 PM

                  @stephenw10:

                  Speculating….
                  There are two functions. One that draws the table and all the static data and fills in the dynamic data, system_information.widget.php. Another function updates the dynamic data and it's that function that needs updating to include a °.
                  ...End speculation.

                  Steve

                  Edit: Yes. In /usr/local/www/javascript/index/ajax.js
                  Add a ° to the updateTemp function like this:

                  function updateTemp(x) {
                  if($("tempmeter")) {
                  $("tempmeter").value = x + '°C';
                  $("tempwidtha").style.width = x + 'px';
                  $("tempwidthb").style.width = (100 - x) + 'px';
                  }

                  YIHUUUUUU!  ;D  :D  :)
                  Steve you are the man!
                  Works like a dream now.
                  Now I will try to work on getting all four cores to be displayed.
                  Cheers Steen

                  1 Reply Last reply Reply Quote 0
                  • C
                    CNLiberal
                    last edited by Aug 9, 2011, 1:00 PM

                    @stephenw10:

                    Speculating….
                    There are two functions. One that draws the table and all the static data and fills in the dynamic data, system_information.widget.php. Another function updates the dynamic data and it's that function that needs updating to include a °.
                    ...End speculation.

                    Steve

                    Edit: Yes. In /usr/local/www/javascript/index/ajax.js
                    Add a ° to the updateTemp function like this:

                    function updateTemp(x) {
                    if($("tempmeter")) {
                    $("tempmeter").value = x + '°C';
                    $("tempwidtha").style.width = x + 'px';
                    $("tempwidthb").style.width = (100 - x) + 'px';
                    }

                    When I make the above change, I get this:

                    °C

                    That's after the page refreshes.  This is the code I'm putting in:

                    
                    function updateTemp(x) {
                    	if($("tempmeter")) {
                    		$("tempmeter").value = x + '°C';
                    		$("tempwidtha").style.width = x + 'px';
                    		$("tempwidthb").style.width = (100 - x) + 'px';
                    	}
                    }
                    
                    

                    I tried, instead, adding the #176; or whatever the ASCII code was, and it just showed me the ASCII code.  What did I do wrong?  Thanks!

                    Jim

                    pfSense 2.7.2-RELEASE

                    Dell R210 II
                    Intel E3-1340 v2
                    8GB RAM
                    SSD ZFS Mirror
                    Intel X520-DA2, RJ45 SFP+ (WAN) and 10Gb SFP+ DAC (LAN)
                    1 x Cisco 3850 12XS-S (Core Switch)
                    2 x Cisco 3750X PoE Gig Switch (Access Stack)
                    3 x Cisco 2802i APs (Mobility Express)

                    1 Reply Last reply Reply Quote 0
                    • S
                      seh2000
                      last edited by Aug 9, 2011, 1:25 PM

                      I just fund the ° symbol in my word processor symbol library then copied it to:

                      /usr/local/www/javascript/index/ajax.js

                      function updateTemp(x) {
                      if($("tempmeter")) {
                      $("tempmeter").value = x + '°C';
                      $("tempwidtha").style.width = x + 'px';
                      $("tempwidthb").style.width = (100 - x) + 'px';

                      /usr/local/www/widgets/widgets/system_information.widget.php

                      Core 1 Temperature

                      ![](./themes/<?= $g[)/images/misc/bar_left.gif" height="15" width="4" border="0" align="middle" alt="left bar" />![](./themes/<?= $g[)/images/misc/bar_blue.gif" height="15" name="tempwidtha" id="tempwidtha" width="" border="0" align="middle" alt="red bar" />![](./themes/<?= $g[)/images/misc/bar_gray.gif" height="15" name="tempwidthb" id="tempwidthb" width="" border="0" align="middle" alt="gray bar" />![](./themes/<?= $g[)/images/misc/bar_right.gif" height="15" width="5" border="0" align="middle" alt="right bar" />

                      Used first the ASCI code, but then the symbol, also I seen some places this around " and other ' around - I use ' hope this helps.
                      The reason for Core1 instead of CPU is I play with having all four cores displayed.

                      Steen

                      1 Reply Last reply Reply Quote 0
                      • C
                        CNLiberal
                        last edited by Aug 9, 2011, 1:47 PM

                        Nope, it's still doing the same thing for me.  I guess I'll have to wait until someone develops a system package.  Not a big deal.  I'm just curious why it's not showing a temperature, even though I can query through a sysctl statement and get 4 temperatures (with HyperThreading, two temperatures really).  Thanks all!  I'll still keep an eye on this thread.

                        jim

                        pfSense 2.7.2-RELEASE

                        Dell R210 II
                        Intel E3-1340 v2
                        8GB RAM
                        SSD ZFS Mirror
                        Intel X520-DA2, RJ45 SFP+ (WAN) and 10Gb SFP+ DAC (LAN)
                        1 x Cisco 3850 12XS-S (Core Switch)
                        2 x Cisco 3750X PoE Gig Switch (Access Stack)
                        3 x Cisco 2802i APs (Mobility Express)

                        1 Reply Last reply Reply Quote 0
                        • J
                          jimp Rebel Alliance Developer Netgate
                          last edited by Aug 9, 2011, 1:57 PM

                          You should really use °, don't hardcode such a symbol directly in html/js

                          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
                          • T
                            tix
                            last edited by Aug 9, 2011, 1:57 PM

                            The Intel 386 coretemp file works for the VIA architecture as well.  I followed the instructions on page 1 of this thread and changed /usr/local/www/includes/functions.inc.php to use "hw.acpi.thermal" instead of "dev.cpu.0.temperature".

                            Works a champ until an update then I need to reinstall the coretemp.ko module and modify functions.inc.php again.

                            My version of /usr/local/www/includes/functions.inc.php

                            
                            function has_temp() {
                            
                            	/* no known temp monitors available at present */
                            
                            	/* should only reach here if there is no hardware monitor */
                            	return true;
                            }
                            
                            function get_temp() {
                            	$temp_out = "";
                            	exec("/sbin/sysctl hw.acpi.thermal | /usr/bin/awk '{ print $2 }' | /usr/bin/cut -d 'C' -f 1", $dfout);
                            	$temp_out = trim($dfout[0]);
                            
                            	return $temp_out;
                            }
                            
                            
                            1 Reply Last reply Reply Quote 0
                            • J
                              jimp Rebel Alliance Developer Netgate
                              last edited by Aug 9, 2011, 2:05 PM

                              Put the .ko files in /boot/modules and not /boot/kernel, then they won't go away after every update and they still will load as expected.

                              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
                              • S
                                stephenw10 Netgate Administrator
                                last edited by Aug 9, 2011, 10:48 PM Aug 9, 2011, 2:20 PM

                                I would think it would be better to have the get_temp function return a value including the ° symbol.
                                E.g. 45.2°
                                That way only one file has to be altered.

                                @jimp:

                                You should really use °, don't hardcode such a symbol directly in html/js

                                I agree. I was surprised it worked actually. It probably depends on what your viewing it on.

                                Steve

                                1 Reply Last reply Reply Quote 0
                                • S
                                  stephenw10 Netgate Administrator
                                  last edited by Aug 9, 2011, 3:32 PM

                                  Using something like:

                                  function get_temp() {
                                  	$temp_out = "";
                                  	exec("/usr/local/bin/mbmon -I -c1 -T3", $dfout);
                                  	$temp_out = (trim($dfout[0]).'°');
                                  
                                  	return $temp_out;
                                  }
                                  

                                  Would be better except that the above code only correctly returns ° when it it called from the system widget php code. When it's called from the javascript update function it just shows °.  :-\

                                  Steve

                                  1 Reply Last reply Reply Quote 0
                                  • J
                                    jimp Rebel Alliance Developer Netgate
                                    last edited by Aug 9, 2011, 3:39 PM

                                    Needs a semicolon after that, it's "°"

                                    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
                                    • S
                                      seh2000
                                      last edited by Aug 9, 2011, 3:46 PM

                                      @stephenw10:

                                      I would think it would be better to have the get_temp function return a value including the ° symbol.
                                      E.g. 45.2°
                                      That way only one file has to be altered.

                                      @jimp:

                                      You should really use °, don't hardcode such a symbol directly in html/js

                                      I agree. I was surprised it worked actually. I probably depends on what your viewing it on.

                                      Steve

                                      Steve and jimp,
                                      Sorry for been slow, but what you say is I should not really add the ° symbol to the ajax.js file? But could I add the ASCII code there or better not at all? As I mentioned I am not a good programmer :(
                                      Steen

                                      1 Reply Last reply Reply Quote 0
                                      • C
                                        CNLiberal
                                        last edited by Aug 9, 2011, 3:50 PM

                                        Yeah, this still isn't working for me.  I'm just going to wait until a package is released.

                                        pfSense 2.7.2-RELEASE

                                        Dell R210 II
                                        Intel E3-1340 v2
                                        8GB RAM
                                        SSD ZFS Mirror
                                        Intel X520-DA2, RJ45 SFP+ (WAN) and 10Gb SFP+ DAC (LAN)
                                        1 x Cisco 3850 12XS-S (Core Switch)
                                        2 x Cisco 3750X PoE Gig Switch (Access Stack)
                                        3 x Cisco 2802i APs (Mobility Express)

                                        1 Reply Last reply Reply Quote 0
                                        • J
                                          jimp Rebel Alliance Developer Netgate
                                          last edited by Aug 9, 2011, 3:51 PM

                                          It's bad form (invalid html/js/etc) to put in a symbol instead of the html entity. It may work, but it's not guaranteed to do so.

                                          http://www.w3schools.com/tags/ref_entities.asp

                                          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
                                          86 out of 140
                                          • First post
                                            86/140
                                            Last post
                                          Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.
                                            This community forum collects and processes your personal information.
                                            consent.not_received