Raspberry Pi 4 i chłodzenie

przychodzące samodzielnie lub w firmowym opakowaniu Raspberry Pi 4 może przyprawić o ból głowy. ten swoją drogą genialny komputer (nie pytajcie ile mam… ;) ), w wersji czwartej ma naprawdę szybki procesor Broadcoma BCM2711, zawierający cztery rdzenie ARM Cortex A72 taktowane zegarem do 1.5GHz oraz dedykowany procesor GPU.

problemy

ludzie raportują jednak dosyć poważne problemy z przegrzewaniem się oraz brakiem możliwości uzyskania stabilnego wyjścia 4k przy 60Hz (pamiętajcie - są dwa wejścia, ale 60Hz daje tylko ten bliżej zasilania USB-C).

moja przygoda początkowo przebiegała bez sensacji - zakupiłem sobie bowiem do wszystkich swoich czwórek obudowę aluminiową geekworm TB-2019-16-1 i wszystko było OK.

do czasu - przy odtwarzaniu natywnego obrazu 4k procesor(y) nawet z tą obudową skoczyły na poziom 55+ stopni Celsjusza i… działy się dwie rzeczy. albo padał interfejs sieciowy (niby w stanie ‘up’, ale już nie reagował z zewnątrz na ARPy i w zasadzie na nic), albo na ekranie zaczynała dziać się kolorowa sieczka, będąca dalekim odbiciem oryginalnego ekranu. prawdopodobnie jest to wynik bugów w obecnym mikrokodzie, który nie potrafi prawidłowo obsłużyć dynamicznego zwalniania zegara w przypadku przekroczenia konkretnego progu temperatury przez procesor główny lub graficzny.

tak czy inaczej, w powyższej obudowie CPU i GPU dochodziły w moim przypadku do 56 stopni Celsjusza. w internecie znajdziecie ludzi opisujących swoje doświadczenia z RBPi4 pracującymi z temperaturami typu 60-80 stopni i IMHO wydaje mi się to już nieco przesadą.

zastosowałem zatem na razie na szybko mały hack - stosując jeden z genialnych wiatraków firmy Noctua, zmodyfikowałem (jak widać na zdjęciu, bardzo topornie i rzeźnicko) oryginalną 4 pinową wtyczkę na trzy-pinową (obyłoby się bez tego, ale obudowa ma aluminiowy radiator również za pinami GPIO a zatem… nie było miejsca). wiatraki i zestawy do chłodzenia procesorów Noctua polecam wszystkim użytkownikom PeCetów. ja osobiście wywalam dowolne inne zawsze z obudów i zastępuje je Noctuami - są absolutnie bezgłośne a współczynnik przepływu powietrza bije na głowę konkurencję.

hack

czego nie zmierzysz, tego nie kontrolujesz…

do pomiarów wykorzystuje krótki skrypcik puszczony w pętli na RBPi 4. dla nielinuksowców - parametr po sleep kontroluje co ile sekund skrypt poda wynik. skrypt należy zapisać do pliku, ustawić mu uprawnienia do uruchomienia chmod +x nazwa_skryptu.sh i po prostu uruchomić, będzie wykonywał się w pętli aż do przerwania przez ctrl+c:

#!/bin/bash

while true
do
        cpu_x=`cat /sys/class/thermal/thermal_zone0/temp`
        echo "$(date) GPU: $((cpu_x/1000)) CPU: $(/opt/vc/bin/vcgencmd measure_temp)"
        sleep 10
done

dla mojej pierwotnej konfiguracji (bez wiatraka), skrypt wypluł (w trakcie odtwarzania wideo 4k):

Wed Dec 30 00:38:07 CET 2020 GPU: 56 CPU: temp=54.0'C
Wed Dec 30 00:38:17 CET 2020 GPU: 55 CPU: temp=54.7'C
Wed Dec 30 00:38:27 CET 2020 GPU: 56 CPU: temp=55.1'C
Wed Dec 30 00:38:37 CET 2020 GPU: 56 CPU: temp=54.7'C
Wed Dec 30 00:38:47 CET 2020 GPU: 55 CPU: temp=55.0'C

po dodaniu wiatraka:

Wed Dec 30 01:25:56 CET 2020 GPU: 36 CPU: temp=36.0'C
Wed Dec 30 01:26:06 CET 2020 GPU: 36 CPU: temp=35.0'C
Wed Dec 30 01:26:16 CET 2020 GPU: 35 CPU: temp=36.0'C
Wed Dec 30 01:26:26 CET 2020 GPU: 35 CPU: temp=36.0'C
Wed Dec 30 01:26:36 CET 2020 GPU: 36 CPU: temp=36.0'C
Wed Dec 30 01:26:46 CET 2020 GPU: 36 CPU: temp=36.0'C

20 stopni różnicy powinno zrobić różnicę. czy zrobi? dowiemy się za parę dni… intensywnego oglądania :)