Pavel Belyaev 4 months ago
parent 22b02c55c8
commit 123e150814

@ -1,112 +1,112 @@
# fanControlLinux
Скрипт, регулирующий скорость вращения вентиляторов на основе температуры процессора и жестких дисков.
Оценивает температуру 4х дисков, определяет самый горячий.
Работает на основе линейной функции, например при температуре 40 градусов нужны обороты 40%, а при температуре 45 градусов уже 65%,
как понять какие обороты поставить в промежуточной точке 43 градуса?
Нужно по двум координатам графика просчитать коэффициенты **Y=(kx+b)** (**K** и **B**), Y в данном случае обороты, а X - температура,
т.е., зная коэффициенты графика можно подставить любой X и посчитать Y.
Но график меняет своё ускорение, на малых температурах можно понизить обороты, но вот если слишком жарко на улице и нагрузка на систему большая,
то температура может приближаться к критичной и в этом случае нужно сильнее прибавлять с каждым градусом.
## Terramaster F4-423 - датчики
```
modprobe coretemp
modprobe drivetemp
modprobe it87 force_id=0x8620
```
Для вашего конкретного устройства добивайтесь, чтобы команда `sensors` выводила все датчики, пример,
когда детектятся все жесткие диски, процессор и обороты вентилятора.
```
drivetemp-scsi-3-0
Adapter: SCSI adapter
temp1: +38.0°C (low = +0.0°C, high = +60.0°C)
(crit low = -40.0°C, crit = +70.0°C)
(lowest = +25.0°C, highest = +41.0°C)
drivetemp-scsi-1-0
Adapter: SCSI adapter
temp1: +41.0°C (low = +0.0°C, high = +60.0°C)
(crit low = -40.0°C, crit = +70.0°C)
(lowest = +26.0°C, highest = +43.0°C)
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +43.0°C (high = +105.0°C, crit = +105.0°C)
Core 0: +38.0°C (high = +105.0°C, crit = +105.0°C)
Core 1: +38.0°C (high = +105.0°C, crit = +105.0°C)
Core 2: +38.0°C (high = +105.0°C, crit = +105.0°C)
Core 3: +38.0°C (high = +105.0°C, crit = +105.0°C)
acpitz-acpi-0
Adapter: ACPI interface
temp1: +27.8°C
it8620-isa-0a30
Adapter: ISA adapter
in0: 1.88 V (min = +0.00 V, max = +3.06 V)
in1: 1.37 V (min = +0.00 V, max = +3.06 V)
in2: 2.23 V (min = +0.00 V, max = +3.06 V)
+5V: 5.59 V (min = +0.00 V, max = +6.12 V)
in4: 2.27 V (min = +0.00 V, max = +3.06 V)
in5: 2.21 V (min = +0.00 V, max = +3.06 V)
in6: 1.34 V (min = +0.00 V, max = +3.06 V)
3VSB: 5.06 V (min = +0.00 V, max = +6.12 V)
Vbat: 3.36 V
fan2: 0 RPM (min = 0 RPM)
fan3: 1875 RPM (min = 0 RPM)
fan4: 0 RPM (min = 0 RPM)
fan5: 0 RPM (min = 0 RPM)
temp1: +34.0°C (low = -128.0°C, high = +127.0°C) sensor = thermal diode
temp2: +35.0°C (low = -128.0°C, high = +127.0°C) sensor = thermal diode
temp3: +40.0°C (low = -128.0°C, high = +127.0°C)
temp4: +40.0°C
temp5: +40.0°C
temp6: +40.0°C
intrusion0: ALARM
drivetemp-scsi-2-0
Adapter: SCSI adapter
temp1: +41.0°C (low = +0.0°C, high = +60.0°C)
(crit low = -40.0°C, crit = +70.0°C)
(lowest = +26.0°C, highest = +43.0°C)
drivetemp-scsi-0-0
Adapter: SCSI adapter
temp1: +39.0°C (low = +0.0°C, high = +60.0°C)
(crit low = -40.0°C, crit = +70.0°C)
(lowest = +26.0°C, highest = +42.0°C)
nvme-pci-0300
Adapter: PCI adapter
Composite: +37.9°C (low = -273.1°C, high = +81.8°C)
(crit = +84.8°C)
Sensor 1: +37.9°C (low = -273.1°C, high = +65261.8°C)
Sensor 2: +34.9°C (low = -273.1°C, high = +65261.8°C)
```
## Определение датчиков в sys/class/hwmon
```
for f in $(ls -1 /sys/class/hwmon/); do echo $f" - "$(cat /sys/class/hwmon/${f}/name); done
```
Данная команда выведет следующее
```
hwmon0 - acpitz
hwmon1 - nvme
hwmon2 - coretemp
hwmon3 - drivetemp
hwmon4 - drivetemp
hwmon5 - drivetemp
hwmon6 - drivetemp
hwmon7 - it8620
```
* **hwmon2** - температура процессора
* **hwmon7** - датчики чипсета, там и вентиляторы
# fanControlLinux
Скрипт, регулирующий скорость вращения вентиляторов на основе температуры процессора и жестких дисков.
Оценивает температуру 4х дисков, определяет самый горячий.
Работает на основе линейной функции, например при температуре 40 градусов нужны обороты 40%, а при температуре 45 градусов уже 65%,
как понять какие обороты поставить в промежуточной точке 43 градуса?
Нужно по двум координатам графика просчитать коэффициенты **Y=(kx+b)** (**K** и **B**), Y в данном случае обороты, а X - температура,
т.е., зная коэффициенты графика можно подставить любой X и посчитать Y.
Но график меняет своё ускорение, на малых температурах можно понизить обороты, но вот если слишком жарко на улице и нагрузка на систему большая,
то температура может приближаться к критичной и в этом случае нужно сильнее прибавлять с каждым градусом.
## Terramaster F4-423 - датчики
```
modprobe coretemp
modprobe drivetemp
modprobe it87 force_id=0x8620
```
Для вашего конкретного устройства добивайтесь, чтобы команда `sensors` выводила все датчики, пример,
когда детектятся все жесткие диски, процессор и обороты вентилятора.
```
drivetemp-scsi-3-0
Adapter: SCSI adapter
temp1: +38.0°C (low = +0.0°C, high = +60.0°C)
(crit low = -40.0°C, crit = +70.0°C)
(lowest = +25.0°C, highest = +41.0°C)
drivetemp-scsi-1-0
Adapter: SCSI adapter
temp1: +41.0°C (low = +0.0°C, high = +60.0°C)
(crit low = -40.0°C, crit = +70.0°C)
(lowest = +26.0°C, highest = +43.0°C)
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +43.0°C (high = +105.0°C, crit = +105.0°C)
Core 0: +38.0°C (high = +105.0°C, crit = +105.0°C)
Core 1: +38.0°C (high = +105.0°C, crit = +105.0°C)
Core 2: +38.0°C (high = +105.0°C, crit = +105.0°C)
Core 3: +38.0°C (high = +105.0°C, crit = +105.0°C)
acpitz-acpi-0
Adapter: ACPI interface
temp1: +27.7°C
it8620-isa-0a30
Adapter: ISA adapter
in0: 1.88 V (min = +0.00 V, max = +3.06 V)
in1: 1.37 V (min = +0.00 V, max = +3.06 V)
in2: 2.23 V (min = +0.00 V, max = +3.06 V)
+5V: 5.59 V (min = +0.00 V, max = +6.12 V)
in4: 2.27 V (min = +0.00 V, max = +3.06 V)
in5: 2.21 V (min = +0.00 V, max = +3.06 V)
in6: 1.34 V (min = +0.00 V, max = +3.06 V)
3VSB: 5.06 V (min = +0.00 V, max = +6.12 V)
Vbat: 3.36 V
fan2: 0 RPM (min = 0 RPM)
fan3: 1875 RPM (min = 0 RPM)
fan4: 0 RPM (min = 0 RPM)
fan5: 0 RPM (min = 0 RPM)
temp1: +34.0°C (low = -128.0°C, high = +127.0°C) sensor = thermal diode
temp2: +35.0°C (low = -128.0°C, high = +127.0°C) sensor = thermal diode
temp3: +40.0°C (low = -128.0°C, high = +127.0°C)
temp4: +40.0°C
temp5: +40.0°C
temp6: +40.0°C
intrusion0: ALARM
drivetemp-scsi-2-0
Adapter: SCSI adapter
temp1: +41.0°C (low = +0.0°C, high = +60.0°C)
(crit low = -40.0°C, crit = +70.0°C)
(lowest = +26.0°C, highest = +43.0°C)
drivetemp-scsi-0-0
Adapter: SCSI adapter
temp1: +39.0°C (low = +0.0°C, high = +60.0°C)
(crit low = -40.0°C, crit = +70.0°C)
(lowest = +26.0°C, highest = +42.0°C)
nvme-pci-0300
Adapter: PCI adapter
Composite: +37.9°C (low = -273.1°C, high = +81.8°C)
(crit = +84.8°C)
Sensor 1: +37.9°C (low = -273.1°C, high = +65261.8°C)
Sensor 2: +34.9°C (low = -273.1°C, high = +65261.8°C)
```
## Определение датчиков в sys/class/hwmon
```
for f in $(ls -1 /sys/class/hwmon/); do echo $f" - "$(cat /sys/class/hwmon/${f}/name); done
```
Данная команда выведет следующее
```
hwmon0 - acpitz
hwmon1 - nvme
hwmon2 - coretemp
hwmon3 - drivetemp
hwmon4 - drivetemp
hwmon5 - drivetemp
hwmon6 - drivetemp
hwmon7 - it8620
```
* **hwmon2** - температура процессора
* **hwmon7** - датчики чипсета, там и вентиляторы

Loading…
Cancel
Save