NETGEAR is aware of a growing number of phone and online scams. To learn how to stay safe click here.

Forum Discussion

treno's avatar
treno
Aspirant
May 26, 2013

ReadyNAS Ultra 4: how to stop the fan from making noise

I used to own an Ultra 2 and I was really happy with it. It was sitting under my desk and it made no noise from the fan.
Now I bought an Ultra 4 to have room for expansion.
While the Ultra 4 is a nice piece of hardware, I'm completely dissatisfied by the noise of the fan.
The fan normally runs at about 1800rmp. In a silent room it is annoying.
I googled a little bit and I was unable to find a solution, but I found many hints that I put together to develop MY solution, with some reverse engineering . :)

DISCLAIMER: FOLLOW MY SOLUTION AT YOUR OWN RISK. I MODIFIED READYNAS PARAMETER AND I'M QUITE SURE I'LL VOID YOUR WARRANTY AND YOU MAY BREAK YOUR NAS/DRIVES AND LOSE YOUR DATA.

I'm running RAIDiator 4.2.22.

What I did (you need SSH access for the following):
1- I found that fan parameters are stored in a SQLite database: /frontview/config/enclosure.db
2- with SQLite Database Browser 2.0 for windows (on sourseforge, google it) I edited the "sensors" table, changing record 10 (readynas ultra 4), field vpd. I edited: minrpn=832, minpwn=20, minfan0=800. Then I put the file back on the Ultra (don't forget a backup of the file).
3- issue the command /frontview/bin/setup_sensors. this command writes file /ramfs/enclosure.cfg that is then used ad a configuration file for the fan monitoring software.
4- issue the command killall monitor_enclosure && /frontview/bin/monitor enclosure. At this point your Readynas become silent!
5- There is a remaining problem. in time (depending, I think on how you use your NAS) the fan drifts to higher RPMs. To cure that, you need to "recalibrate" the fan.
6- I automate fan recalibration. With some reverse engineering I found that Recalibration really means to delete a file (/etc/frontview/fan_setting_last) and to edit /etc/frontview/fan_setting_min, putting "255" in it).
7- I wrote the following bash script (called it "recalibrate" and did chmod 711 on it):
---cut cut cut ---
#!/bin/bash

current_time=$(date "+%Y.%m.%d-%H.%M.%S")
cd ${0%/*}

last_fan="`cat /sys/devices/platform/it87.2576/fan1_input`"
#echo $last_fan
if [ "$last_fan" -gt "1500" ]; then
echo $current_time ":" $last_fan ": recalibrate" >> recalibrate.log
echo "255" > /etc/frontview/fan_setting_min
rm -f /etc/frontview/fan_setting_last
else
echo $current_time= ":" $last_fan ": nothing to do" >> recalibrate.log
fi
--- cut cut cut ---

8 - I scheduled the script every 5 minutes, creating a file in /etc/cron.d called "check_fan", containing the following line

*/5 * * * * root /backup/recalibrate &>/dev/null

What the script basically does it this: every 5 minutes checks fan RPMs. If RPMs are lower than 1500rpm, to nothing (apart from logging); otherwise do a fan recalibration.

That's it.
Now I'm a happy Ultra 4 user.

I know I've been a little bit concise in my description, please feel free to ask any question.
Cheers.
Stefano

6 Replies

Replies have been turned off for this discussion
  • Yesterday I upgraded to RAIDiator 4.2.23.
    My hack is still working fine (I just hat to re-do the changes to the enclosure.db file). Crontabs are preserved with the upgrade.
  • I have a boot script that does this...
    # Quiet the fan
    echo 50 > /sys/devices/platform/it87.2576/pwm1
    cat /ramfs/enclosure.cfg | sed 's/selfcontrolled=0/selfcontrolled=1/g' > /tmp/$$.enc
    cp /tmp/$$.enc /ramfs/enclosure.cfg
    killall monitor_enclosure
    sleep 2
    /frontview/bin/monitor_enclosure
    Tells monitor_enclosure not to touch the fan anymore, that it is self controlled.
  • Chirpa,
    correct me if I'm wrong (I'm guessing, but I didn't experiment with the selfcontrolled parameter):
    I guess that your script fixes fan speed regardless of temperature, or not?
    If I'm right isn't it a little bit dangerous in case of high load /high temperatures?

    Don't you think that editing the enclosure.db file is slightly "cleaner"? (you can also change the selfcontrolled parameter in that file).
  • I do fix the fan speed yes, though I have it in a controlled environment. I used to have a cron script running to periodically check the temps and raise the fan a bit, but haven't need it in awhile.

    Editing enclosure.db may be cleaner, but as you saw, needs re-editing sometimes. I just modify the output of that db in the ramdisk on the fly each boot. This also lets me quickly move the script to other systems without further modifications.

    I've done similar on other systems where I'm running fanless (no fans at all), editing the enclosure.cfg to remove values to get rid of any pointless alerts.
  • chirpa wrote:
    I do fix the fan speed yes, though I have it in a controlled environment. I used to have a cron script running to periodically check the temps and raise the fan a bit, but haven't need it in awhile.


    Hi chirpa,
    can you share examples of the scripts for this temp/fan control and where you put them on the filesystem? This would be great!
    patron

NETGEAR Academy

Boost your skills with the Netgear Academy - Get trained, certified and stay ahead with the latest Netgear technology! 

Join Us!

ProSupport for Business

Comprehensive support plans for maximum network uptime and business peace of mind.

 

Learn More