Quiet the Fan on Your pfSense WatchGuard Firewall!

Now that pfSense is running on your WatchGuard firewall, it is time to control the fans. By default, the fans run at full speed resulting in a firewall that sounds like it’s getting ready for take off! Thankfully, the community has written a tool – WGXepc – that is able to control the fan speed, report temperatures, and control the status LEDs on the WatchGuard 1U appliance.

Installing WGXepc

Here’s a quick video explaining how to install WGXepc and quiet the fans down

For your reference, these are the needed commands. SSH into pfSense (ssh@[your-firewall’s-IP] port 22, login (user:root password: [admin password] is default), and select option 8 for shell access)

/etc/rc.conf_mount_rw
fetch -o /conf https://sites.google.com/site/pfsensefirebox/home/WGXepc
chmod 0755 /conf/WGXepc
cd /conf
./WGXepc -f 10

After you are done, you should re-mount to read-only by typing /etc/rc.conf_mount_ro . Flash memory can only tolerate a finite number of read/write cycles before it wears out; mounting as read only protects your compact flash card.

Note that while the fan speed I recommend above is the hex value 10, the slowest fan speed that should be selected in the BIOS is BB which is much faster. Stability problems have been reported when using the BIOS to slow down the fans; WGXepc does not have these limitations.

 (Automatically) Controlling the Fan Speed at Boot

The previous commands installed WGXepc on the WatchGuard and successfully slowed the fans down. However, these settings are temporary and the fans will return to full speed the next time the firewall is restarted/rebooted. We can fix this one of two ways: Option A involves installed a script to automatically control the fan speed based on CPU temperature while Option B is “dumb” and simply forces the fans to a slow speed at boot. Option B is accomplished by installing a plugin called “shellcmd” and having the necessary commands run at boot time. I recommend Option A as it is much safer than B.

[Option A] Install Automatic Fan Speed Control Script

Several members at the pfSense forums have worked on an automatic fan control script – many thanks go out to Steve and wwwdrich! I have taken wwdrich’s latest script and modified it to work with the WGXepc location above; you can grab it here: https://www.hexhound.com/files/fanctrl-new.zip

Install by running the following commands:

/etc/rc.conf_mount_rw

fetch -o /usr/local https://www.hexhound.com/files/fanctrl-new.zip

cd /usr/local

tar -xzf fanctrl-new.zip

touch /etc/rc.conf.local

vi /etc/rc.conf.local

Press “i” once, then type “fanctrld_enable=”YES” ” with the YES in double quotes. Press escape, then the colon : and type “x”, then press return to save and exit. Sorry, this step can be a little advanced if you’re not used to VI.

Reboot and you should be good to go!

NOTE: If you don’t reboot, run /etc/rc.conf_mount_ro to set the file system back to read only.

[Option B] Install shellcmd

Begin by opening the pfSense web console and navigating to System -> Packages.

packages

 

Select the “Available Packages” tab.

packages2

Scroll down until you see “shellcmd” in the name column (leftmost column), then click the floating “+” on the right

package_install

Click “OK” when prompted to install the package. You will be redirected to the package installer tab. (NOTE: I already have shellcmd installed and used “Notes” for the screenshot.)

installed

 

With shellcmd installed, select it from the Services -> Shellcmd menu.

shellcmd_menu

Click the “+” to add a new command.

shellcmd_add

Change the type to “shellcmd” and enter “/conf/WGXepc -f 10” to hold the fan speed at 10 at boot. Commands entered here act the same as being typed on the console and are automatically run at boot. Click “Save” when done.

shellcmd

 

 

  • Jonathan Adams

    Hi,

    Im having some issues with option A. I can get it to start – i get this message:

    /usr/local/etc/rc.d/fanctrld.sh: WARNING: run_rc_command: cannot run /usr/local/sbin/fanctrld

    • Cyrix2k

      That sounds like a permissions issue? Make sure fanctrld.sh is located in /usr/local/etc/rc.d & check the permissions (ls -la). You need read & execute permissions. Try chmod 0755 /usr/local/sbin/fanctrld.sh I’ll look into this more later – when I tested on my system with the specified zip file, I didn’t need to set any permissions.

      • Chris Millard

        I was having the same issue as Jonathan Adams. I had to chmod /usr/local/sbin/fanctrld.sh and /usr/local/etc/rc.d/fanctrld.sh with 0755

        • Jez Lewis

          I was also having same issues after I upgraded to ver 2.2.6 and had to reinstall the package. The chmod needed to be set for both files permissions. Would be handy including that in your instructions above Mr RJ Nunnally, thanks for your input, my fans were driving me crazy. 🙂

          • Cyrix2k

            I’ll update the instructions shortly 🙂 Also, I am RJ – I know that’s not clear.

          • Jez Lewis

            Spot on RJ, cheers

  • vizi0n

    If I may, I would suggest lowering the “mininum” temperature reading to 25 celcius. Mine runs at 29.5 and throws a blinking red light when I start the fanctrld because it is detected as bogus temperature. I had to manually edit the to change the script’s threshold

  • Hi, I have a Watchguard x5500e PEAK with pfsense 2.3.2 running. I have used Option A and it is working. however, when I reboot sometimes the fans stay at boot speed. Any idea why this happens and how to make sure the script runs every time I boot or reboot? thx for this great solution!

  • John Ludt

    Please help!! I cannot get the fanspeed set – I always get “Fanspeed is not available on the X-Core” regardless whether I pass parameters or just run ./WGXepc -f. I’m able to set the LCD backlight and LEDs but cannot get these fans lowered and it’s killing me.I have an X-Core X2500 running pFsense 2.2.6 for a couple months now and just need to get these fans lowered to really feel like this is complete. Any help is greatly appreciated!

  • Scott Lichtsinn

    is this still working? tried it tonight on one i am setting up and got a permission denied error when trying to fetch it.

  • Scott Lichtsinn

    Got it working and installed, including the fan speed control, but can you adjust the fan curve that it follows to adjust the speed based on temp? Seems to run a little warm, would be nice to bump the speed up just a bit depending on temp reading.

  • Dave infla

    I just installed pFsense on a WatchGuard XTM 800 Series, has WGXepc been updated to support it?

  • Matt O’Connell

    I am getting this error when trying to run command: ./WGXepc -f 10

    ELF interpreter /libexec/ld-elf.so.1 not found, error 8

    • AppleStar

      Me too, have you found solution to the problem?