Tldr; jak ktoś ma asus rog…

Tldr; jak ktoś ma asus rog gl702zc i miał problemy z overheatingiem, słabą kontrolą i wsparciem dla chłodzenia na linuxie, to zapraszam do lektury, bo teraz problem powinien zniknąć.

Manjaro i Asus GL702ZC – konfiguracja chłodzenia Ryzen 7 1700 na Linuxie

W tym roku wymieniłem swój stary, leciwy już laptop, chodzący na Pentiumie jeszcze, na nowiutkiego, 8 rdzeniowego potwora z Ryzenem 7 1700, 32 GB RAM i 256 GB SSD PCI-E M2 na pokładzie.

Przeskok oczywiście niesamowity, niemniej jednak zaniepokoiło mnie coś, o czym pisałem już w innymi wpisie – wysokie temperatury i ogólne problemy ze wsparciem sprzętu.

W skrócie – kernel jeszcze nie obsługiwał tej konkretnej konfiguracji zbyt dobrze, przez co laptop rozgrzewał się do temperatur o wiele wyższych, niż mógłbym sobie tego życzyć.

Jednakże niedawno, mimo całego zamieszania wokół świata Linuxa, wyszła wersja 4.19 jądra. Przeglądając changelog natknąłem się tam na wzmiankę o czymś takim jak steronwnik k10temp, oraz rzekomo lepsze wsparcie dla pewnych procesorów z rodziny Ryzen/Threadripper. Zaświeciła mi się lampka.

Nie zrozumcie mnie źle, Windows nie jest zły – jak pisałem, to tylko narzędzie, ale fajnie by jednak było móc siedzieć sobie na Linuxie jako hoście. Oj tak.

A więc postanowiłem się trochę pobawić i sprawdzić, czy faktycznie coś się zmieniło.

# Manjaro to the rescue!

Dystrybucje, które najszybciej adaptują nowe kernele bez większych problemów, to zazwyczaj te, które mają cykl wydawniczy Rolling Release – oznacza to tyle, że nia ma tam jakiś konkretnych wersji, które są wspierane przez X czasu, nasz system jest ciągle aktualizowany po prostu.

Jedną z takich dystrybucji jest dystrybucja Manjaro. Świetna sprawa, ogółem super system, polecam.

W każdym razie. Zainstalowałem i zacząłem bój. I co?

Otóż, wyobraźcie sobie, udało się. Niżej przedstawiam jakie kroki podjąłem – jeśli ktoś z was również korzysta z tej konfiguracji sprzętowej, to być może skorzysta.

Pierwszą rzeczą, którą musiałem zrobić, to upewnienie się, czy posiadam zainstalowane dwie paczki tak w zasadzie – lm_sensors oraz lib32-lm_sensors.

Jeśli takowe posiadamy, (ja miałem je zainstalowane domyślnie), to wskakujemy do kochanej konsoli i wpisujemy:

sudo sensors-detect

Po czym wszystko potwierdzamy. Na koniec moim oczom ukazała się taka oto wiadomość:

Driver `k10temp’ (autoloaded):

– Chip `AMD Family 17h thermal sensors’ (confidence: 9)

Wiedziałem, że jestem w domu. Po tem jeszcze wpisałem sensors , które faktycznie wydrukowało mi wskaźniki temperatur!

Po chwili googlowania, wyczytałem, iż dobrze by było zainstalować jeszcze: asus-fan-dkms-git

Kluczem do sukcesu okazała się jednak paczka nbfc

Zainstalować ją można prosto z AUR’a, ale do wyboru są dwie paczki – nbfc i nbfc-git

Ja wybrałem tą drugą, gdyż może ona być kapkę nowsza czasem, a mi zależało na jak najświeższej wersji.

Jak instalować z AURa? Potrzebny nam yaourt

Czyli:

sudo pacman -Syu yaourt
yaourt nbfc-git

W zależności od potrzeby, czasem do tego yaourta trzeba dorzucić sudo, ale z tym bym uważał, bo to paczki z AUR’a jednak, a potrafią być one niebezpieczne (bardzo, bardzo rzadko), ale jednak.

Zgodnie z dokumentacją nbfc , odpalam serwis.

systemctl start nbfc.service

Potem już tylko

nbfc config -r

które ma mi zasugerować jaki config powinienem wybrać dla mojego sprzętu. Niestety dla laptopa GL702ZC takowy nie istniał, ale dostałem rekomendację zbliżonego – GL702VM, który co prawda sprzętowo jest zupełnie inny, ale cóż… A może zadziała?

Odpalam zatem następujące polecenie:

nbfc config -a „Asus ROG GL702VM”

Niestety, rzuca mi błędem. Podobnież znany problem, wystarczyło wpisać:

mv /opt/nbfc/Plugins/StagWare.Plugins.ECSysLinux.dll /opt/nbfc/Plugins/StagWare.Plugins.ECSysLinux.dll.old

I ponowić próbę.

Chwila prawdy i…. Działa. Wiatrak zaczyna pracować inaczej. Sukces.

Teraz tylko problem, bo dalej nie chodzi tak, jak chciałem – a to wiatrak od GPU się nie załącza kiedy trzeba, a to wiatrak od CPU za szybko i głośno chodzi. Coś ten config mi nie odpowiadał i to bardzo. Cóż miałem zatem zrobić, jak nie napisać swój. Biorę się do roboty zatem.

Okazało się to nie za trudne – jedynie męczące było ustalenie odpowiednich rejestrów Embedded Controllera, które odpowiadają za kontrolowanie prędkości wiatraczków, niemniej jednak narzędzie ec-probe przyszło mi z pomocą. Jak? A no albo rzucasz ec-probe monitor —clearly lub co jakiś czas ec-probe dump to wyświetla nam rejestry, tylko skąd wiedzieć, który jest odpowiedni?

Wybrałem prostą metodę – obciążając mocno CPU/GPU wymuszałem szybszą pracę wiatraków, wtedy też od razu zmieniały się wartości w rejestrze, co sugerowało, że to ten poszukiwany. Jak to zrobić? Do obciążania CPU/pamięci/dysku jest fajna paczka – stress , po jej instalacji wystarczy wpisać, w przypadku ryzena 7:

stress –cpu 16 –timeout 60

I już przez 60 sekund nasze CPU będzie w 100% obciążone, co wymusi szybkie odpalenie się wiatraczków. Rejestr ustalony.

Dla GPU analogicznie, tylko zamiast stress, korzystam z glmark2 .

Jak się okazuje, za wiatraczki odpowiadają rejestry spod adresów 0xA0 i 0xA6, czy też raczej 160, 166. No to wstawiam je do configu, metodą prób i błędów ustalam jakie prędkości będą dobre przy jakich temperaturach tak, żeby za głośno laptop nie chodził przypadkiem jeśli temperatura jest niska, ale i żeby na wyższych dobrze chłodził. Ostatecznie coś takiego mi wyszło:

„`

GL702ZC
grski
500
false
90

151
151
0
8
false
0
0
true
8
CPU

30
0
0

45
40
12.5

65
50
37.5

70
60
50

75
65
75

79
72
100

85
75
100

152
152
0
8
false
0
0
true
8
GPU

30
0
0

45
40
12.5

65
50
37.5

70
60
50

75
65
75

79
72
100

85
75
100

Set
OnWriteFanSpeed
160
10
true
10
Set
CPU FAN

Set
OnWriteFanSpeed
166
10
true
10
Set
GPU FAN

Teraz już tylko zapisanie tego pliku do „/opt/nbfc/Configs/Asus ROG GL702ZC.xml”

oraz odpalenie

nbfc config -a „Asus ROG GL702ZC”

Finito. Działa wszystko tak, jak chciałem. A jak działa, to czemu by się z kimś nie podzielić – zrobiłem zatem PR’kę do repo nbfc i czekam teraz na odpowiedź.

Na koniec przydałoby się jednak jeszcze to, by ta usługa odpalała się automatycznie po uruchomieniu komputera, a więc jeszcze:

systemctl enable nbfc.service

Teraz już serio gotowe. Śmiga, lapek raczej poniżej 60 trzyma, co jak na to cpu jest spoko podczas pracy.

Męczący, to był dzień i wyzwanie, zajęło mi to kilka godzin, ale fajnie. Lubię takie przygody.

Jak coś to zajrzeć można też do mnie na bloga: grski.pl albo na steemit – tam też piszę.

#programowanie #linux