Jak regulować obroty wentylatora w Ubuntu Server 16?
Jeżeli przeszkadza nam hałas wentylatora w naszym komputerze, to najprawdopodobniej odpowiadają za to wiatraki w nim zainstalowane. Można wymienić je na cichsze, albo zmniejszyć ich prędkość obrotową, o ile nie wpłynie to negatywnie na temperatury podzespołów. W nowszych konstrukcjach producent płyty głównej oferuje nam regulację prędkości obrotowej wentylatorów. Poniższy artykuł dotyczy kontroli wentylatorów za pomocą funkcji PWM, dostępnej w wiatrakach z wtyczką czteropinową. Czarny i czerwony odpowiadają za dostarczenie prądu do silniczka, żółty za zliczanie obrotów, a niebieski za przerwania, które spowodują obniżenie prędkości obrotów. Dla wtyczek trzy i dwupinowych istnieją rozwiązania regulacji napięcia podawanego na wentylator, za pomocą układów na płycie głównej, bądź dodatkowego modułu.
Na mojej płycie głównej można ustawić tylko prędkość wiatraka (poziomy: 1-9), po przekroczeniu wskazanej temperatury (minimum 45°C). Wyłączamy podobne ustawienia, ponieważ po zakończonej konfiguracji, prędkością obrotów w zależności od temperatury będzie sterował nasz system. Wentylator musi być wyposażony we wtyk czteropinowy.
Instalujemy lm-sensors, który pozwoli nam odczytywać wartości sensorów na płycie głównej, a także fancontrol, którego będziemy używać do sterowania prędkością wentylatorów.
apt-get install lm-sensors fancontrol
Uruchamiany program do wyszukiwania sensorów dostępnych w naszym komputerze. Postępujemy zgodnie z instrukcjami, zgadzając się na kolejne testy.
sensors-detect
Now follows a summary of the probes I have just done. Just press ENTER to continue: Driver `w83627ehf': * ISA bus, address 0x290 Chip `Winbond W83627DHG-P/W83527HG Super IO Sensors' (confidence: 9) Driver `k8temp' (autoloaded): * Chip `AMD K8 thermal sensors' (confidence: 9) To load everything that is needed, add this to /etc/modules: #----cut here---- # Chip drivers w83627ehf #----cut here---- If you have some drivers built into your kernel, the list above will contain too many modules. Skip the appropriate ones! Do you want to add these lines automatically to /etc/modules? (yes/NO)y Successful!
Zgodnie z sugestią uruchamiamy usługę.
/etc/init.d/kmod start
Jeżeli nie ma żadnych odczytów, to najlepiej uruchomić system ponownie
reboot
Teraz już możemy uruchomić odczyt z sensorów
sensors
Po uruchomieniu programu sensors naszym oczom powinien ukazać się podobny obrazek
w83627dhg-isa-0290 Adapter: ISA adapter Vcore: +1.42 V (min = +0.00 V, max = +1.74 V) in1: +1.82 V (min = +0.53 V, max = +1.28 V) ALARM AVCC: +3.46 V (min = +2.98 V, max = +3.63 V) +3.3V: +3.46 V (min = +2.98 V, max = +3.63 V) in4: +1.73 V (min = +0.58 V, max = +1.66 V) ALARM in5: +1.75 V (min = +1.70 V, max = +1.03 V) ALARM in6: +1.89 V (min = +0.11 V, max = +1.74 V) ALARM 3VSB: +3.54 V (min = +2.98 V, max = +3.63 V) Vbat: +3.14 V (min = +2.70 V, max = +3.63 V) fan1: 0 RPM (min = 981 RPM, div = 32) ALARM fan2: 3013 RPM (min = 2033 RPM, div = 8) fan3: 0 RPM (min = 8437 RPM, div = 32) ALARM fan4: 0 RPM (min = 1240 RPM, div = 32) ALARM fan5: 0 RPM (min = 1205 RPM, div = 32) ALARM temp1: +27.0°C (high = +6.0°C, hyst = +125.0°C) sensor = thermistor temp2: +28.5°C (high = +80.0°C, hyst = +75.0°C) sensor = thermistor temp3: +34.5°C (high = +80.0°C, hyst = +75.0°C) sensor = thermistor cpu0_vid: +1.400 V intrusion0: ALARM k8temp-pci-00c3 Adapter: PCI adapter Core0 Temp: +26.0°C Core1 Temp: +26.0°C
W tym przypadku fan2, to wartość, która mnie najbardziej interesuje. Ukazuje ona prędkość wentylatora na procesorze, który kręci się zbyt szybko w stosunku do jego temperatury, przez co generuje zbyt duży hałas. temp1, 2 i 3 są to czujniki temperatury na płycie głównej. Najprawdopodobniej odpowiadają one za odczyt temperatury pod procesorem (temp1), temperaturę mostka południowego (temp2) oraz temperaturę mostka północnego (temp3). Co ciekawe czujniki zamontowane na procesorze (Core0 1) wskazują temperatury dla dwóch rdzeni, mimo że ten procesor... jest jednordzeniowy. Wynika to zapewne z faktu, żę AMD w tym czasie wypuszczało na jednej, wspólnej płytce procesory jedno i dwurdzeniowe, stąd w obydwu przypadkach są dwa czujniki temperatury.
Kolejnym programem, który trzeba uruchomić jest pwmconfig (dostarczone wraz z pakietem fancontrol). Służy on do wyszukania wentylatorów i stworzenia ich profili. Postępujemy zgodnie z instrukcjami, zgadzając się na kolejne testy. Jeżeli urządzenia nie zostaną wykryte w trybie automatycznym, to uruchamiamy program jeszcze raz, lecz tym razem nakazując ręczne kontrolowanie ustawień.
pwmconfig
W trakcie testów PWM, program powinien wykryć zmiany obrotów wentylatora i zaproponować nam zbudowanie korelacji, na co się zgadzamy.
Testing pwm control hwmon1/device/pwm2 ... hwmon1/device/fan2_input ... speed was 3125 now 969 It appears that fan hwmon1/device/fan2_input is controlled by pwm hwmon1/device/pwm2 Would you like to generate a detailed correlation (y)? y PWM 255 FAN 3125 PWM 240 FAN 3125 PWM 225 FAN 2960 PWM 210 FAN 2960 PWM 195 FAN 2860 PWM 180 FAN 2636 PWM 165 FAN 2481 PWM 150 FAN 2481 PWM 135 FAN 2220 PWM 120 FAN 2083 PWM 105 FAN 2083 PWM 90 FAN 1814 PWM 75 FAN 1638 PWM 60 FAN 1638 PWM 45 FAN 1383 PWM 30 FAN 1188 PWM 28 FAN 1188 PWM 26 FAN 1155 PWM 24 FAN 1125 PWM 22 FAN 1110 PWM 20 FAN 1110 PWM 18 FAN 1074 PWM 16 FAN 1068 PWM 14 FAN 1068 PWM 12 FAN 1035 PWM 10 FAN 1022 PWM 8 FAN 1022 PWM 6 FAN 992 PWM 4 FAN 986 PWM 2 FAN 986 PWM 0 FAN 964
Po zakończeniu testów dostajemy propozycję zapisania konfiguracji, a po zaakceptowaniu ukazuje nam się menu
Select fan output to configure, or other action: 1) hwmon1/device/pwm2 3) Just quit 5) Show configuration 2) Change INTERVAL 4) Save and quit select (1-n):
Wybieramy opcję pierwszą, żeby skonfigurować ustawienia dla naszego wentylatora. Zostaniemy zapytani o wybór czujnika temperatury.
Devices: hwmon0 is nouveau hwmon1/device is w83627dhg hwmon2/device is k8temp Current temperature readings are as follows: hwmon1/device/temp1_input 32 hwmon1/device/temp2_input 33 hwmon1/device/temp3_input 33 hwmon2/device/temp1_input 32 hwmon2/device/temp3_input 32 Select a temperature sensor as source for hwmon1/device/pwm2: 1) hwmon1/device/temp1_input 2) hwmon1/device/temp2_input 3) hwmon1/device/temp3_input 4) hwmon2/device/temp1_input 5) hwmon2/device/temp3_input 6) None (Do not affect this PWM output) select (1-n):
Wybieramy czujnik odpowiadający za temperaturę procesora. W moim wypadku jest to dowolony z dwóch, ostatnich czujników. Kolejne etapy przechodziłem na domyślnych ustawieniach, które w większości wypadków są zadowalające.
Enter the low temperature (degree C) below which the fan should spin at minimum speed (20): Enter the high temperature (degree C) over which the fan should spin at maximum speed (60): Enter the PWM value (0-255) to use when the temperature is over the high temperature limit (255):
Po zakończeniu konfiguracji ponownie trafiamy do menu, gdzie tym razem zapisujemy konfiguracje i opuszczamy program (5). Ostatnim etapem jest uruchomienie usługi, by wystartowała.
service fancontrol start
Powinniśmy usłyszeć obniżony hałas powodowany przez wentylator. Na koniec możemy sprawdzić jaką obecnie prędkość ma nasz wentylator, ponownie wpisując komendę "sensors". Mój wynik jest taki:
fan2: 1854 RPM (min = 2033 RPM, div = 8) ALARM