Simple fan speed control for the Firebox X750e
-
Just an update… I rebooted the FW today and it's working the way it should now.
Thanks for all the help.
I was coming here to mention that I had to reboot when I installed, according to my notes. Glad you got it working! :)
-
Intel(R) Pentium(R) M processor 2.13GHz
I don't have PowerD enabled though. That could well explain it. I should probably enable that as I'm sure the CPU will "wake up" to a higher power state quite quickly on demand.
The temperature diode is part of the CPU die, not an external sensor.
Steve
Hi Steve,
have you enabled PowerD?
I got an Intel Pentium M with 2.13 GHz and I enabled PowerD. But the display shows max speed of 1592 Mhz.
Do you think this is incorrect and the speed is 2.13?Matthias
-
Well that's obviously wrong somewhere. ;)
Did you switch both sets of jumpers? It looks like it's running a 400MHz FSB and should be 533MHz.
Which model Pentium-M exactly did you fit?
The 2.13GHz models are all 533MHz FSB and as such are not hard coded into the est(4) driver. I've not seen powerd work correctly with any 533MHz pentium-m. Usually it just doesn't start because there is no freq controlling driver loaded, there would be something in the logs to that effect.Steve
-
Hi Steve,
I set one jumper array: two DIP switches changed like the picture shows. Is there's another DIP array?
The speed is changing, so PowerD is doing something…
Matthias
-
There are two sets of DIP switches, one set of two and another set of 4(?). The larger set are between the CPU and the PSU. Both must be switched.
Interesting that powerd is working, perhaps it has mistaken the CPU for one that it knows about. Be interesting to find out what happens when you set the second DIP switches.Steve
-
Hi,
after changing the other jumpers accordingly everything runs like expected. ;D
Damn, I've done this to my X750e some time ago. I couldn't remember…. :-[
Thanks a lot!
Matthias
-
BB is the lowest speed you can run the fans where the speed sensors work. The fans can run much slower though. The value is a two digit hexidecimal number so anything between 00 and FF. I wouldn't go below, say, 16 though.
If you're using the script it should be going lower than bb anyway.Steve
when I ran
/usr/local/etc/rc.d/fanctrl.sh
it didn't really slow down, and when I checked the fan speed by running WGXepc -f, it just said bb, so I manually set it to 20. Temp is not going above 50 C, but it would be nice to have it automatically control the fan instead of me manually configuring it.
Any other thoughts as to why it's not working?
Thanks again for your help.
The fanctrl.sh script should be passed an argument of either start or stop. Unfortunately I omitted the start in my original instructions. I can no longer edit that post. To save further confusion could a moderator please amend my post, reply #34, to state:
/usr/local/etc/rc.d/fanctrl.sh start
Thanks,
Steve
-
Hi,
I liked the idea of the script file to monitor the temps. I think using cron to kick of a script to check the temps and react accordingly is also a good idea. This will ensure the temps are always checked; default 1 min if you use default cron entries. If the daemon script fails it may not restart; just my $0.02. I added this to crontab
#crontab for root # Format is # min hour dayOfMonth month dayOfWeek command2Execute # backup home every 3 days starting from the 1st @ 2:05 am # the first of every 3rd month purge # min hour dom month dow # --- ---- --- ----- --- * * * * * /usr/local/bin/adjustFanSpeed.sh
use this command to edit the cron entries
crontab -e
The script I wrote looks like this
#! /bin/tcsh set currentTemp = `/usr/local/bin/cpuTemp -t | sed '1,2d'` if ( $currentTemp > 70 ) then /usr/local/bin/fanspeed -f ff > /dev/null /usr/local/bin/setLED -l red_flash > /dev/null foreach indx (1 1 1 1 1) /usr/local/bin/beep -p 500 50 end else if ( $currentTemp > 65 ) then /usr/local/bin/fanspeed -f ee > /dev/null /usr/local/bin/setLED -l red_flash > /dev/null foreach indx (1 1 1 1) /usr/local/bin/beep -p 500 50 end else if ( $currentTemp > 60 ) then /usr/local/bin/fanspeed -f dd > /dev/null /usr/local/bin/setLED -l red_flash > /dev/null foreach indx (1 1 1) /usr/local/bin/beep -p 500 50 end else if ( $currentTemp > 55 ) then /usr/local/bin/fanspeed -f bb > /dev/null else if ( $currentTemp > 50 ) then /usr/local/bin/fanspeed -f aa > /dev/null else if ( $currentTemp > 45 ) then /usr/local/bin/fanspeed -f 90 > /dev/null else if ( $currentTemp > 40 ) then /usr/local/bin/fanspeed -f 80 > /dev/null else /usr/local/bin/fanspeed -f 50 > /dev/null /usr/local/bin/setLED -l off > /dev/null endif
fanspeed and cpuTemp are just links to WGXepc (thanks Stephen).
-
My script hasn't failed yet and it provides proportional response. From a control theory perspective, much better. :)
Steve
-
Hi,
after some time the display of the temperate in the dashboard gets corrupted. Please see screen shot.
The fans are running at low speed. But the green LED is blinking. Any idea?Matthias

 -
It's corrupted because the temperature is being read as 255 degC and the bar is only meant to be in the range 0 to 100. This, and the fact that the fan speed is not rising suggests a problem with WGXepc.
Steve
-
Indeed this was a problem with mbmon too. Interesting that it has taken this long for the error to occur. Any idea how long the script had been running before it defaulted to 255C? It may be possible to reset the SuperIO chip using some set of registers.
An alternative is the new BIOS from the SSL box has correct DSDT tables that pass the CPU temp via ACPI. If you're running B8.X then the temperature is reported by:
sysctl dev.cpu.0.temperature
I think. Something close to that anyway. ;) Of course that is also just reading the superio chip so I don't know if that might be any better.
Steve
-
Before the recent 2.1.1/2.1.2 upgrades my box had been up for 82 days and the fan control was still working OK.
Steve
-
An alternative is the new BIOS from the SSL box has correct DSDT tables that pass the CPU temp via ACPI. If you're running B8.X then the temperature is reported by:
sysctl dev.cpu.0.temperature
This sysctl is not listed on my system…
I am running the B8 version. My uptime is at this moment only 6 days.
Matthias
-
Hmm. Perhaps ACPI is not enabled in the BIOS by default or the setting carried over from a previous bios version. Check your bios setting.
I'll have to check the default values but that's become a lot more difficult now that I no longer have a Win XP box to run modbin6 on. ::)Steve
-
Virtual machine!
Steve
-
I flashed Version 8.1 of the XEOS BIOS.
Still no entry in sysctl for this.While booting pressing the TAB key doesn't bring me in the BIOS setup anymore.
Should I reset BIOS setting (jumper)?
Matthias
-
If you flashed it using flashrom from within pfSense then the CMOS will not have cleared which could be causing an issue.
I'm going to have review the changes I made. Fortunately it occurred to me the modbin6 is actually a DOS program so I should be able to fire up FreeDOS and run it. ::)Steve
-
Hi,
after flashing BIOS 8.1 XEOS and restting the CMOS I could go into the appropriate section to enable ACPI.
Now the system is running fine. No issue with the temperature display so far.Even the powerd stuff is working without adding the specific sysctl.
But the best is: my big problem is solved also. I had some weired crashes while connecting the WAN port (I write this in some other topics).
The reason was an entry in the loader.conf.local to support my processor 2.13 Ghz Pentium M with powerd.But after the CMOS reset this is not necessary anymore.
So now my systems is running with HD and faster CPU and fan control and powerd. Fine!
Thanx so far to all who helped me.
Matthias
-
That's great news.
I tested my X5500e box that has the 2GHz Pentium-M in it (533MHz FSB) and still exhibited weird symptoms. I was hoping the fixed ACPI might send the correct valued to powerd. My box could have some other problem though I did get it very cheaply!
Out of interest what loader.conf value were you passing to make powerd work with your CPU?Steve