UWAGA: Ostatnia wersja lm_sensors wymaga do kompilacji biblioteki libsysfs, którą można znaleźć w sysfsustils pod adresem http://linux-diag.sourceforge.net/Sysfsutils.html
Spis treści:
Kod: Zaznacz cały
1. Wstęp
2. Instalacja
a)Konfiguracja jądra
b)Instalacja standardowa
c)Instalacja przez SlackBuild (tylko dla jądra 2.6.*)
3. Konfiguracja lm_sensors
a) Pierwsza konfiguracja
b) Polecenie sensors
c) Plik /etc/sensors.conf
4. Konfiguracja fancontrol
1. Wstęp
lm_sensors to pakiet programów do monitorowania temperatury i napięć w komputerze, jak również do kontrolowaniu prędkości obrotów jego wentylatorów. Każdy wie że cisza lepiej wpływa na prace przy komputerze a odpowiedni monitoring zapewni naszym podzespołom długie życie. Zapraszam do lektury.
2. Instalacja
Proces instalacji zależny jest od wersji jądra, ponieważ jądra z serii 2.4.* nie posiadają obsługi sensorów, trzeba je samemu ściągnąć i zainstalować.
<BLOCKQUOTE>a) Konfiguracja jądra
W tym punkcie omówie poprawną konfiguracje jądra opierając się o wersje 2.4.31 oraz o wersje 2.6.12. Zacznijmy:
2.4.31
2.6.12Character Devices > I2C support --->Kod: Zaznacz cały
<M> I2C support <M> I2C bit-banging interfaces <M> I2C /proc interface (required for hardware sensors)
W Hardware Sensors Chip support wybieramy taki sensor jaki jest na naszej płycie. Jeśli nie wiesz jaki sensor posiada Twoja płyta, to:Device Drivers > I2C support --->Device Drivers > I2C support > I2C Algorithms --->Kod: Zaznacz cały
<*> I2C support <*> I2C device interface
Device Drivers > I2C support > I2C Hardware Bus support --->Kod: Zaznacz cały
<*> I2C bit-banging interfaces
Device Drivers > I2C support > Hardware Sensors Chip support --->Kod: Zaznacz cały
<*> ISA Bus support <*> Nazwa Chipsetu Płyty Głównej
Kod: Zaznacz cały
<*> Winbond W83627HF, W83627THF, W83637HF, W83697HF
*) przejdź do instalacji lm_sensors i po zainstalowaniu uruchom # sensors-detect
*) sprawdź na swojej płycie
*) sprawdź w instrukcji od płyty głównej.
Oczywiście można zaznaczyć te rzeczy jako moduły, ale potem trzeba będzie je ładować. W dalszej części artykułu będe opierał się o wbudowaną obsługe.
b)Instalacja standardowa
Jak już wcześniej wspomniałem, zarówno proces konfiguracji jądra, jak i instalcji lm_sensors troche się od siebie różni na różnych wersjach jądra.
2.4.31 ściągamy i2c oraz lm_sensors
instalacja i2c:
Kod: Zaznacz cały
# tar xzf i2c-2.9.1.tar.gz
# cd i2c-2.9.1
# make
# make install
# depmod -a
instalacja lm_sensors
Kod: Zaznacz cały
# tar xzf lm_sensors-2.9.1.tar.gz
# cd lm_sensors-2.9.1
# make
# make install PREFIX=/usr
instalacja lm_sensors
Kod: Zaznacz cały
# tar xzf lm_sensors-2.9.1.tar.gz
# cd lm_sensors-2.9.1
# make user
# make user_install PREFIX=/usr
c) Instalacja przez SlackBuild
Na swoje potrzeby stworzyłem SlackBuild, wszystkie potrzebne pliki są poniżej:
Plików nie ma ponieważ zginęły na serverze. Będą jak uda mi się je odtworzyć
Po ściągnięciu wystarczy wydać polecenie # chmod 700 lm_sensors.SlackBuild i uruchomić # ./lm_sensors.SlackBuild. Jak wszystko pójdzie ok, to w /tmp będzie paczka, wystarczy ją zainstalować:
# installpkg /tmp/lm_sensors-2.9.1-i486-1.tgz
To wszystko. Możesz już przejśc do konfiguracji lm_sensors.</BLOCKQUOTE>
3. Konfiguracja lm_sensors
Konfiguracja lm_sensors przebiega w dwóch etapach, ale polecenie # sensors ma tutaj istotne znaczenie, ponieważ to dzięki niemu będzie aktualizować zmiany w pliku /etc/sensors.conf.
<BLOCKQUOTE>a) Pierwsza konfiguracja
Zaczniemy od wykrycia sensorów, do tego służy polecenie # sensors-detect. Jest to konfigurator tekstowy, a pytać będzie o czynności jakie ma wykonać. Zaczynamy:
Kod: Zaznacz cały
We can start with probing for (PCI) I2C or SMBus adapters.
You do not need any special privileges for this.
Do you want to probe now? (YES/no): YES
We will now try to load each adapter module in turn.
Load `rivatv' (say NO if built into your kernel)? (YES/no): no < tego modułu nie ma w jądrze
Load `i2c-nforce2' (say NO if built into your kernel)? (YES/no): no < ten moduł mamy wkompilowany
To continue, we need module `i2c-dev' to be loaded.
If it is built-in into your kernel, you can safely skip this.
i2c-dev is not loaded. Do you want to load it now? (YES/no): no < ten moduł mamy wkompilowany
Do you want to scan the ISA bus? (YES/no): YES
Do you want to scan for Super I/O sensors? (YES/no): YES
Do you want to scan for secondary Super I/O sensors? (YES/no): YES
I will now generate the commands needed to load the I2C modules.
Sometimes, a chip is available both through the ISA bus and an I2C bus.
ISA bus access is faster, but you need to load an additional driver module
for it. If you have the choice, do you want to use the ISA bus or the
I2C/SMBus (ISA/smbus)? ISA
Do you want to generate /etc/sysconfig/lm_sensors? (YES/no): no
b) Polecenie sensors
Ten program wyświetla nam aktualne temperatury naszych podzespółów oraz napięcia. Program jest dosyć prosty w użyciu, opisz tutaj najczęściej stosowane paramtery:
# sensors - pokazuje pomiary z czujników
# sensors -s - ustawia nowe wartości zmienione w pliku /etc/sensors.conf
# sensors -f - pokazuje temperatury w stopniach fahrenheit
# sensors -c /ścieżka/sensors.conf - wgrywa alternatywny config
Należy pamiętać aby po każdej zmianie w pliku /etc/sensors.conf wydać polecenie # sensors -s.
c) Plik /etc/sensors.conf
W tym pliku przechowywane są inforamcje dotyczące konfiguracji wszystkich Chipów, dlatego najlepszym wyjściem jest skasowanie tego co jest nam niepotrzebne. W pliku powinny zostać wpisy pomocy(czyli to na początku pliku co jest zahaszowane[#]) i wpis dotyczący naszego chipu(zaczynający sie od jego nazwy np. chip "w83627thf-*" "w83637hf-*"). Posłuże się tutaj przykładem konfiguracji Chipu w83627thf-*. Jak zapewne zauważyliście po wydaniu polecenia # sensors pokazuje nam temp1: zamiast np. M/B Temp: to wszystko właśnie zmienia sie w pliku konfiguracyjnym.
Kod: Zaznacz cały
# Ten wpis oznacza że wszystko co jest poniżej dotyczy tego Chipa
chip "w83627thf-*" "w83637hf-*"
# Cały wpis poniżej ustawia nam nazwy dla odczytów poszczególnych napięć,
# możemy to zostawić tak jak jest, nic nie trzeba zmieniać.
label in0 "VCore"
label in1 "+12V"
label in2 "+3.3V"
label in3 "+5V"
label in4 "-12V"
label in7 "V5SB"
label in8 "VBat"
# Tutaj są skomplikowane obliczenia więc dajmy sobie spokój z ich zmianą.
compute in1 ((28/10)+1)*@, @/((28/10)+1)
compute in3 ((34/51)+1)*@, @/((34/51)+1)
compute in4 (5.14*@)-14.91, (@+14.91)/5.14
compute in7 ((6.8/10)+1)*@ , @/((6.8/10)+1)
# Ustawienia granic dla alarmu. Ustawiałem wartości wg standardu ATX 2.01.
# Jak spojrzymy pare linijek wyżej zobaczymy że "in0" odpowiada za "VCore" itd.
set in0_min vid * 0.95
set in0_max vid * 1.05
set in1_min 12 * 0.955
set in1_max 12 * 1.05
set in2_min 3.3 * 0.96
set in2_max 3.3 * 1.04
set in3_min 5.0 * 0.95
set in3_max 5.0 * 1.05
set in4_min -12 * 0.955
set in4_max -12 * 1.05
set in7_min 5 * 0.95
set in7_max 5 * 1.05
set in8_min 3.0 * 0.80
set in8_max 3.0 * 1.20
# Wpis poniżej określa typ czujnika jaki jest zainstalowany do pomiaru.
# 1 = dioda, 3435 = thermistor w przypdaku mojego chipsetu.
set sensor1 3435
set sensor2 1
set sensor3 3435
# Ustalamy jak mają sie nazywać poszczególne odczyty z czujników.
label temp1 "M/B Temp"
label temp2 "CPU Temp"
label temp3 "NB Temp"
# Zakres w jakim ma sie włączać alarm
# tempX_over - alarm sie włącza, tempX_hyst - alarm sie wyłącza.
# Zalecane jest aby tempX_hyst było a pare stopni niższa niż tempX_over
# Wartości 52 oraz 47 to minimum.
set temp1_over 40
set temp1_hyst 35
set temp2_over 60
set temp2_hyst 50
set temp3_over 52
set temp3_hyst 47
# Włączanie alarmu, jeśli wiatraczki kręcą się później.
# 2675 obrotów to minimum. Dlatego poniżej odczytuje jako 0.
set fan1_min 4500
set fan2_min 2675
# Nadajemy nazwy wiatraczkom
label fan1 "NB Fan"
label fan2 "CPU Fan"
# Ignorujemy reszte, której nie chcemy:
ignore fan3
ignore vid
ignore alarms
# Włączamy alarm przez pc_speaker
set beep_enable 1
4. Konfiguracja fancontrol
Program fancontrol służy do regulowania obrotów wentylatorów zależnie od temperatury. Żeby fancontrol zadziałał musimy pierw go skonfigurować. Do tego służy polecenie pwmconfig. Po uruchomieniu powinniśmy ujrzeć coś podobnego:
Kod: Zaznacz cały
Found the following PWM controls:
0-0290/pwm1
0-0290/pwm2
0-0290/pwm3
Found the following fan sensors:
0-0290/fan1_input current speed: 4856 RPM
0-0290/fan2_input current speed: 2973 RPM
0-0290/fan3_input current speed: 0 ... skipping!
Warning!!! This program will stop your fans, one at a time,
for approximately 5 seconds each!!!
This may cause your processor temperature to rise!!!
If you do not want to do this hit control-C now!!!
Hit return to continue:
Kod: Zaznacz cały
Testing pwm control 0-0290/pwm1 ...
0-0290/fan1_input ... speed was 4856 now 0
It appears that fan 0-0290/fan1_input
is controlled by pwm 0-0290/pwm1
Would you like to generate a detailed correlation (y)?
Kod: Zaznacz cały
PWM 255 FAN 5075
PWM 240 FAN 5075
PWM 225 FAN 5000
PWM 210 FAN 4787
PWM 195 FAN 4530
PWM 180 FAN 4245
PWM 165 FAN 3947
PWM 150 FAN 3668
PWM 135 FAN 3375
PWM 120 FAN 3040
PWM 105 FAN 2700
PWM 90 FAN 0
Fan Stopped at PWM = 90
Kod: Zaznacz cały
0-0290/fan2_input ... speed was 2973 now 0
It appears that fan 0-0290/fan2_input
is controlled by pwm 0-0290/pwm2
Would you like to generate a detailed correlation (y)?
Kod: Zaznacz cały
PWM 255 FAN 2973
PWM 240 FAN 2960
PWM 225 FAN 2800
PWM 210 FAN 0
Fan Stopped at PWM = 210
Kod: Zaznacz cały
Did you see/hear a fan stopping during the above test (n)?
Kod: Zaznacz cały
The fancontrol script can automatically respond to temperature changes
of your system by changing fanspeeds.
Do you want to set up its configuration file now (y)?
Kod: Zaznacz cały
Select fan output to configure, or other action:
1) 0-0290/pwm3 4) Change INTERVAL 7) Show configuration
2) 0-0290/pwm2 5) Just quit
3) 0-0290/pwm1 6) Save and quit
select (1-n):
Kod: Zaznacz cały
Current temperature readings are as follows:
0-0290/temp1_input 22
0-0290/temp2_input 33
0-0290/temp3_input 33
Select a temperature sensor as source for 0-0290/pwm1:
1) 0-0290/temp1_input
2) 0-0290/temp2_input
3) 0-0290/temp3_input
4) None (Do not affect this PWM output)
select (1-n):
Kod: Zaznacz cały
Enter the low temperature (C)
at which the fan should be switched off (0):
Kod: Zaznacz cały
Enter the high temperature (C)
at which the fan should be switched to full speed (60):
Kod: Zaznacz cały
Enter the minimum PWM value (0-255)
at which the fan STARTS spinning (press t to test) (150):
Kod: Zaznacz cały
Now we increase the PWM value in 10-unit-steps.
Let the fan stop completely, then press return until the
fan starts spinning. Then enter 'y'.
We will use this value +20 as the starting speed.
Setting 0-0290/pwm1 to 10...
Setting 0-0290/pwm1 to 20...
Setting 0-0290/pwm1 to 30...
Setting 0-0290/pwm1 to 40...
Setting 0-0290/pwm1 to 50...
Setting 0-0290/pwm1 to 60...
Setting 0-0290/pwm1 to 70...70
OK, using 90
Kod: Zaznacz cały
Enter the minimum PWM value (0-255)
at which the fan STOPS spinning (press t to test) (100):
Kod: Zaznacz cały
Now we decrease the PWM value in 10-unit-steps.
Let the fan reach full speed, then press return until the
fan stops spinning. Then enter 'y'.
We will use this value +20 as the minimum speed.
Setting 0-0290/pwm1 to 245...
Setting 0-0290/pwm1 to 235...
Setting 0-0290/pwm1 to 225...
Setting 0-0290/pwm1 to 215...
Setting 0-0290/pwm1 to 205...
Setting 0-0290/pwm1 to 195...
Setting 0-0290/pwm1 to 185...
Setting 0-0290/pwm1 to 175...
Setting 0-0290/pwm1 to 165...
Setting 0-0290/pwm1 to 155...
Setting 0-0290/pwm1 to 145...
Setting 0-0290/pwm1 to 135...
Setting 0-0290/pwm1 to 125...
Setting 0-0290/pwm1 to 115...
Setting 0-0290/pwm1 to 105...
Setting 0-0290/pwm1 to 95...
Setting 0-0290/pwm1 to 85...
Setting 0-0290/pwm1 to 75...
Setting 0-0290/pwm1 to 65...
Setting 0-0290/pwm1 to 55...
Setting 0-0290/pwm1 to 45...45
OK, using 65
Kod: Zaznacz cały
Current interval is 10 seconds.
Enter the interval at which fancontrol should update PWM values (in s):
Kod: Zaznacz cały
Loading configuration from /etc/fancontrol ...
Common settings:
INTERVAL=5
Settings for 0-0290/pwm1:
Depends on 0-0290/temp3_input
Controls
MINTEMP=20
MAXTEMP=60
MINSTART=100
MINSTOP=65
Settings for 0-0290/pwm2:
Depends on 0-0290/temp2_input
Controls 0-0290/fan1_input
MINTEMP=10
MAXTEMP=60
MINSTART=100
MINSTOP=95
Enabling PWM on fans...
Starting automatic fan control...
Kod: Zaznacz cały
#!/bin/sh
#
# /etc/rc.d/rc.local: Local system initialization script.
#
# Put any local setup commands in here:
# Przeładowanie konfiguracji /etc/sensors.conf
/usr/bin/sensors -s
# Uruchomienie fancontrol
/usr/sbin/fancontrol 1> /dev/null &
Artykuł jest troche długi i troche bałaganu w nim, ale to co tutaj opisałem wcale nie wygląda na takie trudno i zagmatwane.
Autor: sayetan
Poprawki: bocian, difrost