Unfortunately no one can be told what fun_plug is - you have to see it for yourself.
You are not logged in.
Hello all NAS tweakers,
I wrote fancontrol and graph maker script for DN-320.
fancontrol_dns320.sh - reading system temperature, hdd1 and hdd2 temperatures, starting/stopping fan while some defined limits reached.
tplot.sh - takes temperature logs from above script and periodicaly (each 5 minutes) makes a graph using GNUPLOT
Note that both scripts need further testing and they are not tuned.
Example 1
Example 2
INSTALL :
1. Place both scripts to /ffp/start/ folder
2. Make executable permissions
chmod a+x /ffp/start/fancontrol_dns320.sh chmod a+x /ffp/start/tpol.sh
Manual execution:
sh /ffp/start/fancontrol_dns320.sh start sh /ffp/start/tpol.sh start
Manual stopping:
sh /ffp/start/fancontrol_dns320.sh stop sh /ffp/start/tpol.sh stop
Best regards!
Last edited by Gyngy (2011-06-16 11:53:43)
Offline
fancontrol_dns320.sh:
#!/ffp/bin/sh # # description: Script to get fan control working with DNS-320 # Written by Johny Mnemonic # Edited by Gyngy # # PROVIDE: fancontrol # REQUIRE: LOGIN . /ffp/etc/ffp.subr name="fancontrol" start_cmd="fancontrol_start" stop_cmd="fancontrol_stop" status_cmd="fancontrol_status" # how often to read and store temperatures in seconds PERIOD="5" # if you have just one HDD set to "0" SECOND_HDD=1 LOGFILE="/var/log/fan.log" # writing temperature to this file : LOGTEMPFILE="/var/log/fan_temp" LOGTEMPEXT=".log" # temperatures hysteresis SysHigh="55" SysLow="50" HddHigh="45" HddLow="40" Hyst="2" # do not edit bellow this line # ---------------------------- SL=$((SysLow-Hyst)) DL=$((HddLow-Hyst)) logcommand() { echo "`/ffp/bin/date +"%b %e %H:%M:%S"`:" $1 >> $LOGFILE } logtemperature() { if [ "$5" = "$1" ] then TEXT="" else TEXT="$1" fi case $TEXT in stop) POSITION=5;; low) POSITION=10;; high) POSITION=15;; *) POSITION=20;; esac echo "`/ffp/bin/date +"%Y-%m-%d %H:%M:%S"`:" "\"$TEXT\" $2 $3 $4 $POSITION" >> $LOGTEMPFILE$(/ffp/bin/date +"%y%m%d")$LOGTEMPEXT } disk1_temp() { smartctl -d marvell --all /dev/sda |grep Temp | head -c 89 | tail -c2 } disk2_temp() { smartctl -d marvell --all /dev/sdb |grep Temp | head -c 89 | tail -c2 } system_temp() { FT_testing -T | tail -c 3 | head -c 2 } Fancontrol() { #!/ffp/bin/sh logcommand " Starting DNS-320 Fancontrol script" logcommand " Current temperatures: Sys: `system_temp`°C, HDD1: `disk1_temp`°C, HDD2: `disk2_temp`°C " FAN=`fanspeed g` while /ffp/bin/true; do /ffp/bin/sleep $PERIOD SYS_TEMP=`system_temp` D1_TEMP=`disk1_temp` if [ $SECOND_HDD -eq "1" ]; then D2_TEMP=`disk2_temp` else D2_TEMP="0" fi OLD_FAN=$FAN if [ $SYS_TEMP -ge $SysHigh -o $D1_TEMP -ge $HddHigh -o $D2_TEMP -ge $HddHigh ]; then logcommand "Fan speed $FAN" if [ $FAN != "high" ]; then logcommand "Running fan on high, temperature too high: Sys: $SYS_TEMP°C, HDD1: $D1_TEMP°C, HDD2: $D2_TEMP°C" fanspeed h FAN=high fi else if [ $SYS_TEMP -ge $SysLow -o $D1_TEMP -ge $HddLow -o $D2_TEMP -ge $HddLow ]; then logcommand "Fan speed $FAN" if [ $FAN != "low" ]; then logcommand "Running fan on low, temperature high: Sys: $SYS_TEMP°C, HDD1: $D1_TEMP°C, HDD2: $D2_TEMP°C" fanspeed l FAN=low fi else if [ $SYS_TEMP -le $SL -a $D1_TEMP -le $DL -a $D2_TEMP -le $DL ]; then logcommand "Fan speed $FAN" if [ $FAN != "stop" ]; then logcommand "Stopping fan, temperature low: Sys: $SYS_TEMP°C, HDD1: $D1_TEMP°C, HDD2: $D2_TEMP°C" fanspeed s FAN=stop fi fi fi fi logtemperature $FAN $SYS_TEMP $D1_TEMP $D2_TEMP $OLD_FAN done } fancontrol_start() { if [ ! -e /var/run/fancontrol.pid ] ; then logcommand "Starting DNS-320 Fancontrol daemon" logcommand "Killing fan_control ..." killall fan_control >/dev/null 2>/dev/null & Fancontrol & echo $! >> /var/run/fancontrol.pid else logcommand "Fancontrol daemon already running" fi } fancontrol_stop() { logcommand "Stopping DNS-320 Fancontrol daemon" kill -9 `cat /var/run/fancontrol.pid` rm /var/run/fancontrol.pid > /dev/null 2> /dev/null } fancontrol_restart() { fancontrol_stop fancontrol_start } fancontrol_status() { if [ -e /var/run/fancontrol.pid ]; then echo " Fancontrol daemon is running" else echo " Fancontrol daemon is not running" fi } run_rc_command "$1"
Last edited by Gyngy (2011-06-16 11:59:50)
Offline
tplot.sh
#!/ffp/bin/sh # # description: Script to plot temperature chart # Written by Gyngy # fancontrol_dns320.sh is needed to provide temperature data # # PROVIDE: # REQUIRE: LOGIN . /ffp/etc/ffp.subr name="tplot" start_cmd="tplot_start" stop_cmd="tplot_stop" status_cmd="tplot_status" # how often to read and store temperatures in seconds PERIOD=300 LOGFILE="/var/log/tplot.log" # reading temperature from this file : DATAFILE="/var/log/fan_temp" DATAFILE_EXT=".log" # writing graphs to folder: PNG_FOLDER="/hd1/Ajaxpf" # do not edit bellow this line # ---------------------------- logcommand() { echo "`/ffp/bin/date +"%b %e %H:%M:%S"`:" $1 >> $LOGFILE echo "`/ffp/bin/date +"%b %e %H:%M:%S"`:" $1 } tplot() { #!/ffp/bin/sh logcommand " Starting DNS-320 tplot script" while /ffp/bin/true; do CUR_DATAFILE=$DATAFILE$(/ffp/bin/date +"%y%m%d")$DATAFILE_EXT if [ -e $CUR_DATAFILE ]; then logcommand "Reading from file $CUR_DATAFILE" GFX_FILE="${PNG_FOLDER}/temperatures_$(/ffp/bin/date +"%y%m%d").png" GNU_FILE="/tmp/gnufile" echo "set terminal png nocrop large size 1400,900" > $GNU_FILE echo "set output '$GFX_FILE'" >> $GNU_FILE echo "set timefmt '%Y-%m-%d %H:%M:%S:'" >> $GNU_FILE echo "set xdata time" >> $GNU_FILE echo "set yrange [0:60]" >> $GNU_FILE echo "plot '$CUR_DATAFILE' u 1:4 w st title 'System','' u 1:5 w st title 'Disk R (Seagate)','' u 1:6 w st title 'Disk L (WD)','' u 1:7:3 w labels title 'FAN'" >> $GNU_FILE logcommand "Drawing to file $GFX_FILE" gnuplot $GNU_FILE else logcommand "File $CUR_DATAFILE does not exist!" fi /ffp/bin/sleep $PERIOD done } tplot_start() { if [ ! -e /var/run/tplot.pid ] ; then logcommand "Starting DNS-320 tplot daemon" tplot & echo $! >> /var/run/tplot.pid else logcommand "tplot daemon already running" fi } tplot_stop() { logcommand "Stopping DNS-320 tplot daemon" kill -9 `cat /var/run/tplot.pid` rm /var/run/tplot.pid > /dev/null 2> /dev/null } tplot_restart() { tplot_stop tplot_start } tplot_status() { if [ -e /var/run/tplot.pid ]; then echo " tplot daemon is running" else echo " tplot daemon is not running" fi } run_rc_command "$1"
Offline
Hi,
fancontrol_dns320.sh script requires fanspeed binary(?), but I could not find it in my DNS320. Nor can I install it with funpkg or ipkg. Could you tell me where I can find it?
Last edited by dundibandi (2011-06-21 22:32:19)
Offline
dundibandi wrote:
Hi,
fancontrol_dns320.sh script requires fanspeed binary(?), but I could not find it in my DNS320. Nor can I install it with funpkg or ipkg. Could you tell me where I can find it?
I think that fanspeed is standard DNS-320 binary. You could find it in /usr/sbin/ folder.
Cheers,
Tom
Offline
Thank you very much Gyngy!
A small note:
If you want your HDs to turn off after some minutes, you might want to disable/reset logging.
Offline
I am trying to run funplug from USB stick where logs are saved.
;-)
Offline
The script is working.
But the fan is still on the slow step.
Although the temperature is not reached.
Do you have any ideas?
/e oh im so sorry. it was the HDD -.-
no problems. all is good.
Last edited by opfer88 (2011-08-30 19:20:11)
Offline
Hello, everyone.
Can someone please show me steps by steps to get this to work on DNS 320? I have fun_plug installed.
I got this when I used this command sh /ffp/start/fancontrol_dns320.sh start.
root@DNS-320:/mnt/HD/HD_a2/ffp/start# sh /ffp/start/fancontrol_dns320.sh start
: not foundfancontrol_dns320.sh: line 7:
: not foundfancontrol_dns320.sh: line 10:
/ffp/start/fancontrol_dns320.sh: .: line 11: can't open /ffp/etc/ffp.subr
I am not familiar with linux.
Thanks in advance.
Offline
Hi,
try to use some Linux/Unix friendly editor to copy script from page to file.
PSPad for example.
Best regards!
Gyngy
datviet wrote:
Hello, everyone.
Can someone please show me steps by steps to get this to work on DNS 320? I have fun_plug installed.
I got this when I used this command sh /ffp/start/fancontrol_dns320.sh start.
root@DNS-320:/mnt/HD/HD_a2/ffp/start# sh /ffp/start/fancontrol_dns320.sh start
: not foundfancontrol_dns320.sh: line 7:
: not foundfancontrol_dns320.sh: line 10:
/ffp/start/fancontrol_dns320.sh: .: line 11: can't open /ffp/etc/ffp.subr
I am not familiar with linux.
Thanks in advance.
Offline
Hi Gyngy,
I have tried your script and is working fine.
The issue is that the hard disk is constantly working and not going to hibernate. This results the temperature to rise from 34 when hibernation is active to 50 C.
Currently I have investigate and have found that is possible if you transfer the script to ram the disks to hibernate but I don't have the knowledge how to do it.
I would appreciate your contribution here that is much appreciated.
Thanks
Offline
Hi,
sorry I do not know how to transfer this to RAM disk.
I did something else - using USB stick to run all ffp from USB. There is only problem - permissions are wrong while mounting USB stick with ext2/3/4 partition. I wrote another script to make fingerprint of all files permissions/owners to file and on start I am reading this file and setting all files permissions.
This is only way I know.
Gyngy
jk7gr wrote:
Hi Gyngy,
I have tried your script and is working fine.
The issue is that the hard disk is constantly working and not going to hibernate. This results the temperature to rise from 34 when hibernation is active to 50 C.
Currently I have investigate and have found that is possible if you transfer the script to ram the disks to hibernate but I don't have the knowledge how to do it.
I would appreciate your contribution here that is much appreciated.
Thanks
Offline
Hi Gyngy,
I admire your knowledge. I read some articles yesterday on how to move ffp on USB as well and it seems to me rocket science. I hope you and Johny Mnemonic could join forces. I think the whole community would appreciate it.
Respect....
J
Offline
Hi!
I would like to write a tutorial how to do it but it is not 100% functional yet.
I am facing issues with USB flash drive filesystem corruption - I do not know where the problem is yet.
Best regards!
Gyngy
jk7gr wrote:
Hi Gyngy,
I admire your knowledge. I read some articles yesterday on how to move ffp on USB as well and it seems to me rocket science. I hope you and Johny Mnemonic could join forces. I think the whole community would appreciate it.
Respect....
J
Offline
hi
where i can retrive gnuplot for fun_plug??
it don't present i standard packages
tnk!
Last edited by z4k (2012-02-07 19:52:13)
Offline
http://www.shadowandy.net/2011/12/movin … to-usb.htm
But to move this program to ram is also quite easy. Just mount a tmpfs(or ramfs - not really ideal) folder and copy the script to it, and then run it from there.
Offline