Šta je novo?

Arch Linux - Kontrola brzine ventilatora (Fancontrol GUI)

alex303

Moderator
Urednik
Super Moderator
Učlanjen(a)
19.04.2005
Poruke
3,925
Poena
2,095
Uputstvo je za Arch Linux (SystemD) i hardware koji je podržan u kernelu i od strane lm_sensors paketa. Kompletnu listu podržanih čipova možete videti ovde. Uputstvo može, a i ne mora raditi na drugim distroima. Podrazumevam da je instaliran YAY ili neki sličan AUR helper, i da komande sensors, pwmconfig, i fancontrol rade i očitavaju parametre vašeg hardware-a.

Prvo je potrebno instalirati grafički frontend za fancontrol.

Kod:
yay -S fancontrol-gui-git --noconfirm

Nakon instalacije je potrebno generisati default fancontrol config koji se nalazi u /etc/fancontrol U terminalu kucajte komandu:
Kod:
sudo pwmconfig

Nakon toga trebali bi da vidite output sličan ovom:

Kod:
# pwmconfig version 3.6.0+git
This program will search your sensors for pulse width modulation (pwm)
controls, and test each one to see if it controls a fan on
your motherboard. Note that many motherboards do not have pwm
circuitry installed, even if your sensor chip supports pwm.

We will attempt to briefly stop each fan using the pwm controls.
The program will attempt to restore each fan to full speed
after testing. However, it is ** very important ** that you
physically verify that the fans have been to full speed
after the program has completed.

Found the following devices:
   hwmon0 is acpitz
   hwmon1 is nvme
   hwmon2 is coretemp
   hwmon3 is asus
   hwmon4 is corsaircpro

Found the following PWM controls:
   hwmon4/pwm1           current value: 255
   hwmon4/pwm2           current value: 255
   hwmon4/pwm3           current value: 255
   hwmon4/pwm4           current value: 255
   hwmon4/pwm5           current value: 255
   hwmon4/pwm6           current value: 255

Giving the fans some time to reach full speed...
Found the following fan sensors:
   hwmon4/fan1_input     current speed: 1492 RPM
   hwmon4/fan2_input     current speed: 989 RPM
   hwmon4/fan3_input     current speed: 1483 RPM
   hwmon4/fan4_input     current speed: 1522 RPM
   hwmon4/fan5_input     current speed: 1485 RPM
   hwmon4/fan6_input     current speed: 1612 RPM

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:

Pritisnite enter nakon čega bi trebalo da vidite output sličan ovom:

Kod:
Testing pwm control hwmon4/pwm1 ...
 hwmon4/fan1_input ... speed was 1492 now 0
 It appears that fan hwmon4/fan1_input
 is controlled by pwm hwmon4/pwm1
Would you like to generate a detailed correlation (y)?

Odgovorite sa Y na svako sledeće pitanje. Napominjem da ovo testiranje može da potraje jako dugo. Sve zavisi od toga koliko podržanih uređaja imate u sistemu, i na koliko su obrtaja ventilatori čija se kontrola vrši. Za potrebe ovog uputstva, ja koristim Corsair Commander Pro na koji je zakačeno 5 ventilatora od kućišta + ventilator od CPU coolera. Nakon što pwmconfig završi sa testiranjem, trebalo bi da vidite ovo:

Kod:
Testing is complete.
Please verify that all fans have returned to their normal speed.

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)? y
What should be the path to your fancontrol config file (/etc/fancontrol)? 
Loading configuration from /etc/fancontrol ...

Select fan output to configure, or other action:
1) hwmon4/pwm6         5) hwmon4/pwm2         9) Save and quit
2) hwmon4/pwm5         6) hwmon4/pwm1        10) Show configuration
3) hwmon4/pwm4         7) Change INTERVAL
4) hwmon4/pwm3         8) Just quit
select (1-n):

Na pitanje Do you want to set up its configuration file now ( y) ? odgovorite sa Y i pritisnite enter. Na pitanje What should be the path to your fancontrol config file (/etc/fancontrol)? samo pritisnite enter a nakon toga u sekciji Select fan output to configure, or other action: odgovorite sa 9 nakon čega bi trebali da vidite ovo:

Kod:
Saving configuration to /etc/fancontrol...
Configuration saved

Omogućite fancontrol servis tako što ćete kucati:

Kod:
sudo systemctl enable fancontrol && systemctl start fancontrol

Sada imamo sve što je potrebno za uspešnu kontrolu. Pokrenite fancontrol GUI kucajući

Kod:
fancontrol_gui

Ako se program ne startuje i izbaci grešku "QT GLX Error" u terminalu kucajte:

Kod:
export QT_XCB_GL_INTEGRATION=none

pa onda opet:

Kod:
fancontrol_gui

Ukoliko se program pokrene, ali prikazuje temperaturu u farenhajtima umesto u celziusima, pokrenite program kucajući:

Kod:
LANG=C fancontrol_gui

Prilikom pravilnog pokretanja, program izgleda ovako:

1632111674173.png

Kliknite na tab Fans, nakon čega bi trebalo da se pojavi ovo:

1632112132037.png

Kao što sam ranije spomenuo, ja koristim Corsair Commander Pro na kojem je zakačeno 6 ventilatora. Kao što se vidi na slici gore, prikazano je svih 6 ventilatora koje je moguće kontrolisati. Na svaki od ovih ventilatora je moguće odrediti koji senzor kontroliše broj obrtaja. Ja ću za potrebe ovog uputsva podesiti fan1 tako da njega kontroliše temperatura procesora, to jest package temperature. A to izgleda ovako:

1632112414807.png
Fan curve, odnosno kriva koja kontroliše broj obrtaja ventilatora u zavisnosti od temperature je jednostavna. Ako ste ikada koristili neki program za kontrolu brzine obrtaja ventilatora, ili ste se igrali sa krivom za broj obrtaja u BIOS-u, i ovde je princip isti, tako da to neću objašnjavati. Samo ću napomenuti da su sve promene koje vrši fancontrol-gui aplikacija, instant. Dakle, ako u aplikaciji postavite broj obrtaja ventilatora na 0RPM i ako ploča to podržava, nakon što pritisnete Apply dugme ventilator ide na 0 RPM. Takođe moram da napomenem da GUI aplikacija ne kontrolište ventilatore direktno. Ona samo vrši promenu u /etc/fancontrol config fajlu koju fancontrol service odmah primećuje i primenjuje. Nakon što ste sve podesili, i ako ste sigurno da više nije potrebno nikakvo podešavanje parametara, fancontrol-gui aplikaciju možete slobodno uninstalirati koristeći:

Kod:
yay -Rns fancontrol-gui-git

Kontrola i dalje ostaje i ponaša se onako kako ste podesili. Ukoliko nakon reboot-a primetite da se fancontrol service nije startovao, to jest startovao se, ali kontrola ne radi, a pri tome se startuje ako ga pokrenete ručno, ovo je problem u SystemD init sistemu i načinu na koji on učitava servise. Dešava se da sistem pokuša da startuje fancontrol service, pre nego što se lm_sensors servis učitao. Da bi rešili ovaj problem, treba kao root editovati ovaj file /etc/systemd/system/fancontrol.service i dodati parametar ExecStartPre=/usr/bin/sleep 5 tako da ceo service file izgleda ovako:

Kod:
[Unit]
Description=Start fan control, if configured
ConditionFileNotEmpty=/etc/fancontrol
After=lm_sensors.service

[Service]
Type=simple
PIDFile=/run/fancontrol.pid
ExecStartPre=/usr/bin/sleep 5
ExecStart=/usr/sbin/fancontrol

[Install]
WantedBy=default.target

Ovo će omogućiti da se lm_sensors servis učita pre fancontrol servisa, jer fancontrol ima delay od 5 sec. Ja sam naveo 5 sec delay jer je to dovoljno za moj sistem koji se bootuje sa brzog SSD-a. Na laptopovima koji su spori ili nemaju SSD, ovu vrednost je poželjno staviti na 10 sec ili više.
 
Nazad
Vrh Dno