Um die Lüfterkurve auf DS2422+ im Kühlmodus besser zu optimieren, habe ich ein Script geschrieben, als Recovery, sollte es einmal beim Update überschrieben werden.
Die Temperaturen der HDDs bleiben jetzt im Betrieb weit unter 41-42 Grad, gegenüber der dummsturen Einstellungen von Synology. Damit sollte auch die Lebenserwartung der HDDs erweitert werden.
Lüfterlautstärke ist so auch nicht wirklich störend. Ausser im Hochsommer , Raumtemperatur über 25 Grad, wird es eventuell kurzzeitig beim Boost lauter!
35 Grad -> 980 U/min
36 Grad -> 1200 U/min
37+38 Grad -> 1400 U/min
39 Grad -> Boost 80% der max U/min
#!/bin/sh
set -eu
WATCHDOG="/usr/local/sbin/hdd-fan-watchdog.sh"
CRON_LINE='*/2 * * * * root /usr/local/sbin/hdd-fan-watchdog.sh >/dev/null 2>&1'
if grep -q '^enable_fan_debug=' /etc/synoinfo.conf; then
sed -i 's/^enable_fan_debug=.*/enable_fan_debug="0x1"/' /etc/synoinfo.conf
else
echo 'enable_fan_debug="0x1"' >> /etc/synoinfo.conf
fi
/usr/syno/sbin/syno_fan_debug
cat > "$WATCHDOG" <<'EOF'
#!/bin/sh
DISKS="/dev/sata1 /dev/sata2 /dev/sata3 /dev/sata4 /dev/sata5 /dev/sata6"
TMPFILE="/tmp/disktmp.txt"
NORMAL_TEMP=-1
LOW_TEMP=45
MID_TEMP=48
BOOST_TEMP=51
max=0
for d in $DISKS; do
t="$(synodisk --read_temp "$d" 2>/dev/null | awk '{print $NF}')"
case "$t" in ''|*[!0-9]*) continue ;; esac
[ "$t" -gt "$max" ] && max="$t"
done
[ "$max" -eq 0 ] && exit 1
current="$(cat "$TMPFILE" 2>/dev/null || echo "$NORMAL_TEMP")"
if [ "$max" -ge 39 ]; then
target="$BOOST_TEMP"
elif [ "$max" -ge 37 ]; then
target="$MID_TEMP"
elif [ "$max" -ge 36 ]; then
target="$LOW_TEMP"
else
target="$NORMAL_TEMP"
fi
if [ "$current" != "$target" ]; then
echo "$target" > "$TMPFILE"
synosystemctl restart scemd >/dev/null 2>&1 || true
fi
exit 0
EOF
chmod +x "$WATCHDOG"
grep -v 'hdd-fan-watchdog.sh' /etc/crontab > /tmp/crontab.hddfan.$$ || true
printf '%s\n' "$CRON_LINE" >> /tmp/crontab.hddfan.$$
cat /tmp/crontab.hddfan.$$ > /etc/crontab
rm -f /tmp/crontab.hddfan.$$
synosystemctl restart crond
"$WATCHDOG"
synosystemctl restart scemd
sleep 10
"$WATCHDOG"
echo "OK recovered"
cat /tmp/disktmp.txt 2>/dev/null
cat /sys/class/hwmon/hwmon1/device/pwm2 2>/dev/null
cat /sys/class/hwmon/hwmon1/device/fan1_input 2>/dev/null
cat /sys/class/hwmon/hwmon1/device/fan2_input 2>/dev/null
Script ist gegebenenfalls auf eigenen Bedürfnisse/Lärmpegel anzupassen!!
Bei Raumtemperatur von 23 Grad bleiben die HDDs unter Last "immer" auf 36 Grad !
Die Temperaturen der HDDs bleiben jetzt im Betrieb weit unter 41-42 Grad, gegenüber der dummsturen Einstellungen von Synology. Damit sollte auch die Lebenserwartung der HDDs erweitert werden.
Lüfterlautstärke ist so auch nicht wirklich störend. Ausser im Hochsommer , Raumtemperatur über 25 Grad, wird es eventuell kurzzeitig beim Boost lauter!
35 Grad -> 980 U/min
36 Grad -> 1200 U/min
37+38 Grad -> 1400 U/min
39 Grad -> Boost 80% der max U/min
#!/bin/sh
set -eu
WATCHDOG="/usr/local/sbin/hdd-fan-watchdog.sh"
CRON_LINE='*/2 * * * * root /usr/local/sbin/hdd-fan-watchdog.sh >/dev/null 2>&1'
if grep -q '^enable_fan_debug=' /etc/synoinfo.conf; then
sed -i 's/^enable_fan_debug=.*/enable_fan_debug="0x1"/' /etc/synoinfo.conf
else
echo 'enable_fan_debug="0x1"' >> /etc/synoinfo.conf
fi
/usr/syno/sbin/syno_fan_debug
cat > "$WATCHDOG" <<'EOF'
#!/bin/sh
DISKS="/dev/sata1 /dev/sata2 /dev/sata3 /dev/sata4 /dev/sata5 /dev/sata6"
TMPFILE="/tmp/disktmp.txt"
NORMAL_TEMP=-1
LOW_TEMP=45
MID_TEMP=48
BOOST_TEMP=51
max=0
for d in $DISKS; do
t="$(synodisk --read_temp "$d" 2>/dev/null | awk '{print $NF}')"
case "$t" in ''|*[!0-9]*) continue ;; esac
[ "$t" -gt "$max" ] && max="$t"
done
[ "$max" -eq 0 ] && exit 1
current="$(cat "$TMPFILE" 2>/dev/null || echo "$NORMAL_TEMP")"
if [ "$max" -ge 39 ]; then
target="$BOOST_TEMP"
elif [ "$max" -ge 37 ]; then
target="$MID_TEMP"
elif [ "$max" -ge 36 ]; then
target="$LOW_TEMP"
else
target="$NORMAL_TEMP"
fi
if [ "$current" != "$target" ]; then
echo "$target" > "$TMPFILE"
synosystemctl restart scemd >/dev/null 2>&1 || true
fi
exit 0
EOF
chmod +x "$WATCHDOG"
grep -v 'hdd-fan-watchdog.sh' /etc/crontab > /tmp/crontab.hddfan.$$ || true
printf '%s\n' "$CRON_LINE" >> /tmp/crontab.hddfan.$$
cat /tmp/crontab.hddfan.$$ > /etc/crontab
rm -f /tmp/crontab.hddfan.$$
synosystemctl restart crond
"$WATCHDOG"
synosystemctl restart scemd
sleep 10
"$WATCHDOG"
echo "OK recovered"
cat /tmp/disktmp.txt 2>/dev/null
cat /sys/class/hwmon/hwmon1/device/pwm2 2>/dev/null
cat /sys/class/hwmon/hwmon1/device/fan1_input 2>/dev/null
cat /sys/class/hwmon/hwmon1/device/fan2_input 2>/dev/null
Script ist gegebenenfalls auf eigenen Bedürfnisse/Lärmpegel anzupassen!!
Bei Raumtemperatur von 23 Grad bleiben die HDDs unter Last "immer" auf 36 Grad !
