Многие вещи могут быть просто как информация для размышления, т.к. это раскопки, то есть шанс на ошибку.
Подопытный в моем случае DS218 (без плюсов и без букв), на борту ARM процессор, два диска, 2 гига оперативки, рассматривать плюсы не хотел, т.к. там x86 процессоры 5 летней давности, каких-то серверных мощностей от файлопомойки не ожидаю, но при этом и модели J тоже не хотелось, т.к. там оперативной памяти впритык, на моем NAS вполне успешно работает транскодирование.
Видите на чем у меня стоит NAS? Два диска вразнос растрясают пластиковую коробку, на дешевую мебель это дает вибрацию.
В веб-интерфейсе нужно включить ssh, далее подключить community-репозиторий
Подключаемся по ssh, вводим команду sudo -i
и радуемся полноправному владению своего устройства, только желательно во внешний мир 22й порт не прокидывать.
В файле /usr/syno/etc.defaults/scemd.xml
есть настройки скорости вентилятора
<?xml version="1.0" encoding="UTF-8"?> <scemd> <!--обычный режим охлаждения--> <fan_config hibernation_speed="UNKNOWN" type="DUAL_MODE_HIGH" threshold="6" period="20"> <disk_temperature action="NONE" fan_speed="10%40hz">0</disk_temperature> <disk_temperature action="NONE" fan_speed="15%40hz">40</disk_temperature> <disk_temperature action="NONE" fan_speed="35%40hz">46</disk_temperature> <disk_temperature action="NONE" fan_speed="60%40hz">50</disk_temperature> <disk_temperature action="NONE" fan_speed="99%40hz">53</disk_temperature> <disk_temperature action="SHUTDOWN" fan_speed="99%40hz">61</disk_temperature> <cpu_temperature action="NONE" fan_speed="10%40hz">0</cpu_temperature> <cpu_temperature action="NONE" fan_speed="35%40hz">65</cpu_temperature> <cpu_temperature action="NONE" fan_speed="99%40hz">75</cpu_temperature> <cpu_temperature action="SHUTDOWN" fan_speed="99%40hz">105</cpu_temperature> </fan_config> <!--тихий режим охлаждения--> <fan_config hibernation_speed="UNKNOWN" type="DUAL_MODE_LOW" threshold="6" period="20"> <disk_temperature action="NONE" fan_speed="10%40hz">0</disk_temperature> <disk_temperature action="NONE" fan_speed="15%40hz">46</disk_temperature> <disk_temperature action="NONE" fan_speed="35%40hz">52</disk_temperature> <disk_temperature action="NONE" fan_speed="60%40hz">55</disk_temperature> <disk_temperature action="NONE" fan_speed="99%40hz">58</disk_temperature> <disk_temperature action="SHUTDOWN" fan_speed="99%40hz">61</disk_temperature> <cpu_temperature action="NONE" fan_speed="10%40hz">0</cpu_temperature> <cpu_temperature action="NONE" fan_speed="35%40hz">70</cpu_temperature> <cpu_temperature action="NONE" fan_speed="99%40hz">80</cpu_temperature> <cpu_temperature action="SHUTDOWN" fan_speed="99%40hz">105</cpu_temperature> </fan_config> <!--далее много неважных параметров, которые править не нужно--> </scemd>
<fan_config hibernation_speed="UNKNOWN" type="DUAL_MODE_HIGH" threshold="6" period="20"> <disk_temperature action="NONE" fan_speed="001">0</disk_temperature> <disk_temperature action="NONE" fan_speed="010">33</disk_temperature> <disk_temperature action="NONE" fan_speed="011">41</disk_temperature> <disk_temperature action="NONE" fan_speed="100">47</disk_temperature> <disk_temperature action="NONE" fan_speed="111">53</disk_temperature> <disk_temperature action="SHUTDOWN" fan_speed="111">61</disk_temperature> <cpu_temperature action="NONE" fan_speed="001">0</cpu_temperature> <cpu_temperature action="NONE" fan_speed="010">55</cpu_temperature> <cpu_temperature action="NONE" fan_speed="111">65</cpu_temperature> <cpu_temperature action="SHUTDOWN" fan_speed="111">80</cpu_temperature> </fan_config> <fan_config hibernation_speed="UNKNOWN" type="DUAL_MODE_LOW" threshold="6" period="20"> <disk_temperature action="NONE" fan_speed="001">0</disk_temperature> <disk_temperature action="NONE" fan_speed="010">38</disk_temperature> <disk_temperature action="NONE" fan_speed="011">46</disk_temperature> <disk_temperature action="NONE" fan_speed="100">52</disk_temperature> <disk_temperature action="NONE" fan_speed="111">58</disk_temperature> <disk_temperature action="SHUTDOWN" fan_speed="111">61</disk_temperature> <cpu_temperature action="NONE" fan_speed="001">0</cpu_temperature> <cpu_temperature action="NONE" fan_speed="010">60</cpu_temperature> <cpu_temperature action="NONE" fan_speed="111">70</cpu_temperature> <cpu_temperature action="SHUTDOWN" fan_speed="111">80</cpu_temperature> </fan_config> <fan_config hibernation_speed="STOP" type="DUAL_MODE_LOW_STOP" threshold="6" period="20"> <disk_temperature action="NONE" fan_speed="000">0</disk_temperature> <disk_temperature action="NONE" fan_speed="001">33</disk_temperature> <disk_temperature action="NONE" fan_speed="010">38</disk_temperature> <disk_temperature action="NONE" fan_speed="011">46</disk_temperature> <disk_temperature action="NONE" fan_speed="100">52</disk_temperature> <disk_temperature action="NONE" fan_speed="111">58</disk_temperature> <disk_temperature action="SHUTDOWN" fan_speed="111">61</disk_temperature> <cpu_temperature action="NONE" fan_speed="000">0</cpu_temperature> <cpu_temperature action="NONE" fan_speed="010">60</cpu_temperature> <cpu_temperature action="NONE" fan_speed="111">70</cpu_temperature> <cpu_temperature action="SHUTDOWN" fan_speed="111">80</cpu_temperature> </fan_config>
Как мы видим, есть два раздела на разный режим работы вентиляторов, возьмем для примера второй который для тихого режима.
Поправив опцию hibernation_speed="UNKNOWN"
на hibernation_speed="STOP"
можно добиться полного выключения вентилятора во время гибернации дисков.
<fan_config hibernation_speed="STOP" type="DUAL_MODE_LOW" threshold="6" period="20"> <disk_temperature action="NONE" fan_speed="10%40hz">0</disk_temperature> <disk_temperature action="NONE" fan_speed="15%40hz">46</disk_temperature> <disk_temperature action="NONE" fan_speed="35%40hz">52</disk_temperature> <disk_temperature action="NONE" fan_speed="60%40hz">55</disk_temperature> <disk_temperature action="NONE" fan_speed="99%40hz">58</disk_temperature> <disk_temperature action="SHUTDOWN" fan_speed="99%40hz">61</disk_temperature> <cpu_temperature action="NONE" fan_speed="10%40hz">0</cpu_temperature> <cpu_temperature action="NONE" fan_speed="35%40hz">70</cpu_temperature> <cpu_temperature action="NONE" fan_speed="99%40hz">80</cpu_temperature> <cpu_temperature action="SHUTDOWN" fan_speed="99%40hz">105</cpu_temperature> </fan_config>
Далее видим опции зависимости скорости от температуры дисков, 40hz
это видимо полная скорость вентилятора, 40 герц это 40 оборотов в секунду, видимо вентилятор у нас 40*60=2400rpm
, и при нулевой температуре будет 240 оборотов, а при температуре 46 градусов будет 360 оборотов, вероятно я ошибаюсь, но у меня явно больше 500 оборотов на вентиляторе.
<disk_temperature action="NONE" fan_speed="10%40hz">0</disk_temperature> <disk_temperature action="NONE" fan_speed="15%40hz">46</disk_temperature>
А вот ниже идет зависимость от температуры процессора, при нулевой температуре видимо 10%, т.е. 240 оборотов в минуту, а при 70 градусах 35%, если считать 35% от 2400 оборотов это 840 оборотов. Скорей всего, мои подсчеты не верны, т.к. обороты слишком малые для таких высоких температур.
<cpu_temperature action="NONE" fan_speed="10%40hz">0</cpu_temperature> <cpu_temperature action="NONE" fan_speed="35%40hz">70</cpu_temperature>
Температуру процессора можно узнать так
cat /sys/class/hwmon/hwmon0/temp1_input 41689
Видимо, это соответствует 41.6 градусам, очевидно что при такой температуре будет уже не 10%, а больше.
Температуру дисков можно узнать в smart
smartctl -A -d sat /dev/sda | grep Temp 194 Temperature_Celsius 0x0022 119 106 000 Old_age Always - 31
Если добавить между нулем и комнатной температурой промежуточные значения, то кривая должна быть более плавной и минимальная скорость будет не только при нуле (которого не может быть), но и при минимальных температурах сравнимых с комнатной.
Первым делом, я проверил влияет ли этот файл на поведение вентилятора? Для этого вместо 10, 15, 35 и 60 я поставил 99%, перезагрузил устройство и послушал… Ну да, шумит, но не сказать что 3000+ RPM, не так громко…
Далее попробовал применить пример из одного блога (ссылка внизу) Там говорится чтобы не было писка нужно выполнить
echo 0 > /sys/module/ds218_synobios/parameters/check_fan
Найти расположение этого файла можно так, от модели к модели разные имена модулей
find /sys -name 'check_fan'
Нам предлагается написать скрипт и положить его в папку /usr/local/etc/rc.d/
а потом chmod +x
сделать его исполняемым…
А дальше вот такой конфиг
<disk_temperature action="NONE" fan_speed="01%40hz">0</disk_temperature> <disk_temperature action="NONE" fan_speed="10%40hz">41</disk_temperature> <disk_temperature action="NONE" fan_speed="20%40hz">46</disk_temperature> <disk_temperature action="NONE" fan_speed="35%40hz">48</disk_temperature> <disk_temperature action="NONE" fan_speed="50%40hz">50</disk_temperature> <disk_temperature action="NONE" fan_speed="70%40hz">54</disk_temperature> <disk_temperature action="NONE" fan_speed="99%40hz">58</disk_temperature> <disk_temperature action="SHUTDOWN" fan_speed="99%40hz">61</disk_temperature> <cpu_temperature action="NONE" fan_speed="01%40hz">0</cpu_temperature> <cpu_temperature action="NONE" fan_speed="10%40hz">57</cpu_temperature> <cpu_temperature action="NONE" fan_speed="20%40hz">62</cpu_temperature> <cpu_temperature action="NONE" fan_speed="50%40hz">65</cpu_temperature> <cpu_temperature action="NONE" fan_speed="99%40hz">80</cpu_temperature> <cpu_temperature action="SHUTDOWN" fan_speed="99%40hz">90</cpu_temperature>
Т.е. при нуле градусов у нас уже не 10%, а 1%, а 10% будет при нагреве жесткого диска до 41 градуса и процессора до 57. Также, тут у нас более щадящие температуры аварийного выключения…
Я применил этот профиль, перезагрузился, посмотрел сзади корпуса на вентилятор, а он не крутится, при этом, пищалку при неисправности вентилятора я не выключал. Из этого можно сделать вывод, что остановка вентилятора когда ожидаемая скорость близка к нулю ошибкой не является (ничего не пищит) и таким образом можно реализовать полупассивную схему, нужно только подобрать минимальную скорость при которой вентилятор может крутиться. Не каждый вентилятор может крутиться на низких оборотах.
Но вот стоило мне чуток разогреть процессор, а потом выключить нагрузку, как мой NAS стал пищать, видимо достиг той минимальной скорости когда должен крутиться, но заклинился, т.к. не может на таких оборотах крутиться… В момент остывания процессора вентилятор то крутился то останавливался.
Еще я заметил что реакция на нагрев и остывание не мгновенная, иногда почти минуту.