Bei allen Modellen des Raspberry Pi gilt das Prinzip möglichst wenig Energie zu verbrauchen. Aber zugleich wird mit jeder neuen Computergeneration eine Beschleunigung erwartet – was nicht ganz einfach ist. Beim Raspberry Pi 4 ist nun ein 15 Watt Netzteil notwendig, es können damit bis zu 3 Ampere bei 5 Volt Versorgungsspannung abgegeben werden. In einem geschlossenen Gehäuse wird der Raspberry Pi 4 auch ohne Last richtig heiß. Für die nachfolgende Beschreibung wird zunächst von einem Raspberry Pi 4 ausgegangen, der ohne Gehäuse direkt auf einer Tischplatte liegt. Es läuft Raspbian Buster (10.7.2019) und ein Flachbildschirm ist über ein MicroHDMI auf HDMI Kabel verbunden. Bei einer Raumtemperatur von ca. 23° C kann man nach 10 Minuten Ruhebetrieb eine CPU-Temperatur von 58°C ablesen. Das ist leider deutlich höher als bei allen zuvor produzierten Modellen. So entstehen ein paar Fragen, die beim Pi 4 wichtiger sind als bei allen Vorgängermodellen:
Wie stark kann man die CPU-Temperatur per Kühlkörper senken?
Ist ein aktiver Lüfter notwendig?
Welches Gehäuse ist geeignet?
Prozessortemperatur und Prozessorlast können direkt in der Statusleiste des RPi-Desktop angezeigt werden – und das sollten Sie jetzt auch tun, um die nachfolgenden Schritte besser nachvollziehen zu können:
CPU-Temperatur und Prozessorlast als Leisten-Einstellung im RPi-Desktop
Zur Messung der Prozessortemperatur wird das Skript pi4_sysbench.sh eingesetzt. Und um den Prozessor zur Vollbeschäftigung zu führen, gibt es das Programm sysbench das über pi4_sysbench.sh automatisch installiert wird. Zur Thematik Pi4 und Prozessortemperatur gibt es u.a. folgenden Blogbeitrag:
Dort wird ein von Christopher Barnatt gemachtes Video angeboten, in dem der Prozessor ebenfalls mit sysbench beschäftigt wird, um dann die Temperatur zu messen. Da man in einem geschlossenen Gehäuse ohne Lüftungsschlitze die Temperatur sehr stark nach oben treibt (auch wenn nur ein Prozessorkern des Pi 4 beschäftigt ist) verzichte ich auf diesen Test und lese lieber etwas über Peltier-Elemente.
Temperaturmessungen zum offiziellen Pi 4 Gehäuse und einen Pi 4 im leicht angepassten Pi 3 Gehäuse finden Sie z.B. auf
Ganz sicher hat der Raspberry Pi 4 im derzeitigen offiziellen Gehäuse ein Hitzeproblem. Neue Versionen von Raspbian Buster (siehe release notes) werden daran grundsätzlich nichts ändern. Eine gewisse Entlastung könnte darin bestehen, den CPU-Takt im RPi-Desktop generell abzusenken und erst dann anzuheben, wenn Programme gestartet werden. Bei einer Dauerlast am Pi 4 helfen aber nur ein Lüfter oder eine passive Kühlung weiter.
Die CPU Temperatur des Raspberry Pi 4 mit kleinem Kühlkörper
Wie schon zuvor beim Raspberry Pi 3B+ ist der Pi 4 bzw. dessen SoC mit einem sogenannten „Heatspreader“ als metallene Abdeckung versehen. Damit wird die Abwärme der CPU besser abgeleitet als bei Kunststoff. Der Raspberry Pi 4 zeigt ohne Last 57°C auf dem RPi-Desktop an. Nun wird ein kleiner Kühlkörper mit 1,9*1,9 cm Grundfläche auf den metallen verkapselten SoC Chip gelegt. Die Temperatur sinkt sofort auf 50°C ab, steigt aber dann nach etwa 2 Min wieder auf 57°C an. Was ist dabei geschehen? Kurzzeitig hat der Kühlkörper eine ordentliche Temperatursenkung bewirkt, die aber nur darauf zurückzuführen ist, daß auch der Kühlkörper eine Wärmekapazität hat. Ein Kühlkörper kühlt nicht, sondern vergrößert lediglich die Fläche auf der eine Wärmequelle abstrahlt. Die Kontaktfläche zwischen SoC und Kühlkörper liegt bei etwa 1,4 cm² – unabhängig davon wie groß der Kühlkörper ist. Und über diese kleine Fläche muß die gesamte Abwärme der CPU abgeführt werden.
Die CPU des Raspberry Pi 4 ohne/mit Kühlkörper
Um mit einem so kleinen Kühlkörper wieder den Anfangswert von 50°C zu erreichen, müssen wir ordentlich „Wind machen“ bzw. genau die Energiemenge „abtragen“, die die CPU generiert. Der Abtransport von Wärmeenergie kann entweder durch direkte Wärmeableitung, durch Konvektion oder durch einen Lüfter erfolgen – also passive oder aktive Kühlung. Wenn sich ein Raspberry Pi in einem vollständig geschlossenen PVC-Gehäuse befindet, dann nutzt ein Kühlkörper immer nur zur Spitzenlastabfederung aber nicht bei bei 4 CPU-Kernen im Dauerbetrieb! Es kommt eben auch sehr darauf an, welche Temperatur im Gehäuse vorliegt! Doch zum Gehäuse kommen wir später…
Die CPU-Temperatur mit pi4_sysbench.sh überwachen
Fast jede moderne CPU hat einen Sensor, der permanent die Temperatur erfasst und die Taktfrequenz senkt, wenn die CPU zu heiß werden sollte. Beim Raspberry Pi stehen die Temperaturen der CPU und der GPU zur Verfügung und können mit Bash Kommandos abgefragt werden:
Während bei „measure_temp“ ein Wert in °C mit vorangestelltem „temp=“ herauskommt, ist „getT“ eine Bashfunktion für die Umrechnung eines 5 stelligen Integerwerts in eine Zahl mit einer Kommastelle. Da im SoC bisher nur ein Sensor verbaut ist, gibt es messtechnisch keinen Unterschied. Aber „getT“ ist etwas genauer, weil vcgencmd derzeit immer nur „.0“ liefert.
Wenn Sie das Skript pi4_sysbench.sh erstmals nach dem Download anwenden, muß zuerst für dessen Ausführbarkeit gesorgt werden:
chmod +x pi4_sysbench.sh
Das Skript installiert sysbench – soweit noch nicht vorhanden. Bei allen weiteren Aufrufen sorgt pi4_sysbench.sh für eine Primzahlenberechnung bis zu einem einstellbaren oberen Grenzwert. Nach jedem Zyklus wird die Temperatur gemessen. Direkt nach dem Programmstart werden die Raspbian Version, das Raspberry Pi Modell, dessen Speicher und auch „uptime“ ausgegeben. Dann folgt die Auswahl der Testkonfiguration:
Description: Raspbian GNU/Linux 10 (buster) Raspberry Pi 4 Model B Rev 1.1 MemTotal: 1933248 kB 13:00:36 up 0:03, 2 users
Im Skript pi4_sysbench.sh wird das Testprogramm sysbench mit der Berechnung von Primzahlen beschäftigt. Dabei kann die Berechnung auf mehrere Threads (und damit Prozessorkerne) verteilt werden. Dies geschieht für alle Zyklen bis zu MaxPrim als oberem Grenzwert. Die Gesamtlaufzeit ergibt sich aus dem Produkt der Spalten „sec“ und „Zyklen“. Mit „Nr=1“ hätten Sie also einen 60 sec Kurztest. Und über „Nr=0“ erfolgt lediglich eine zyklische Temperaturmessung ohne nennenswerte Prozessorlast durch das Skript. Aber geeignet, wenn Sie zeitgleich die Temperatursteigerung durch die CPU-Last eines anderen Skripts oder Programms bestimmen möchten.
Die nachfolgend ausgegebenen Messwerte sind auf einem Pi4 bei 23,3°C Raumtemperatur und einem kleinen auf die CPU aufgelegten Kühlkörper entstanden:
Bei „Nr=4“ dauert jeder Zykus etwa 30 Sekunden bei insgesamt 20 Zyklen bzw. gemessenen Temperaturen. Dieser 600 sec Test hat zeitweise zu Temperaturen über 80° C geführt. Kurzzeitig mindert solch eine Belastung nicht die Lebensdauer der CPU. Das liegt aber nur daran, daß bei thermischer Überlastung automatisch die CPU-Taktfrequenz gesenkt wird. Bei jeder Überlastung erscheint ein Thermometer auf dem RPi-Desktop und zugleich eine orangefarbige Linie bei der Temperaturanzeige. Diese Line wäre rot, wenn die Temperatur über 85°C steigt – akute Lebensgefahr für die CPU. Das Temperatursymbol in der rechten oberen Bildschirmecke ist bei obigem Test mit dem Skript erstmals nach ca. 500 sec Laufzeit aufgetaucht. Die Icons zu den Firmwarewarnungen sehen Sie hier:
Anzeige einer Temperaturwarnung auf dem RPi-Desktop
Bei einer sommerlichen Raumtemperatur von 28° wäre die Temperaturwarnung bzw. das „throttled back“ (Drosselung der Taktfrequenz) allerdings schon wesentlich früher eingetreten und der Pi 4 wird schlicht langsamer – und zwar nicht nur bei der Primzahlberechnung. Ein kleiner Kühlkörper ist aber auf jeden Fall besser als kein Kühlkörper auf dem Raspberry Pi. Für den Pi 4 ist ein Kühlkörper wirklich wichtig! Der gesamte Test fand ohne Gehäuse statt – die Abluft konnte problemlos nach oben entweichen.
Ein Kühlkörper zum Pi 4 im Eigenbau
Im vorangegangenen Test hätte Wärmeleitpaste unter einem 3,6 cm² Kühlkörper sicherlich eine Verbesserung bewirkt – aber vielleicht nicht sehr signifikant. Der nun eingesetzte Kühlkörper „RPI COOL 40X30“ hat eine Klebefolie und konnte früher einmal bei Reichelt bestellt werden. 3M 9448A ist ein Doppelklebeband mit Papierträger. Ein gutes Wärmeleitpad oder Wärmeleitpaste wären besser geeignet. Der unveränderte Kühlkörper (40*30 mm) würde den WLAN/BT5.0 Chip verdecken, was zu schlechteren Empfangsbedingungen führen könnte. Deshalb habe ich eine Ecke des Kühlkörpers herausgesägt, die zugleich als Kühlkörper für den Ethernet Chip verwendbar ist.
Ein Raspberry Pi 4 mit aufgeklebtem großem Kühlkörper
Die Temperatur stabilisiert sich leider nicht bei 75°C – was aber erst durch einen weiteren Aufruf des Skripts und nach weiteren 5 min klar wird. Bei einer höheren Zimmertemperatur (z.B. 28° statt 23°) wäre es noch eher zur Drosselung ab 80°C gekommen. Beachten Sie bitte, daß die Warmluft in diesem Test ungehindert nach oben abziehen konnte. Es genügt also nicht einen relativ großen Kühlkörper zu verwenden, es muß eine noch stärkere Wärmeableitung erfolgen.
So stellt z.B. das Flirc-Gehäuse eine rein passive Lösung dar, um die Betriebstemperatur möglichst signifikant unter die kritischen 80°C zu drücken. Die Frage ist dabei nur ob das auch noch funktioniert, wenn die volle Last auf 4 CPU-Kernen nicht nur 10 Minuten sondern stundenlang anhält. Die eleganteste Lösung wäre die Verwendung einer Heatpipe im Kühler – aber so, daß es zugleich ein geschlossenes Gehäuse gibt. Doch zurück zur Realität, die kostengünstige Lösungen fordert und damit zum Lüfter führt.
Ein Raspberry Pi 4 im Gehäuse mit Lüfter
Ein Raspberry Pi 4 im STACKBT Gehäuse
Die Versuche im Gehäuse wurden teilweise vor dem Aufkleben des großen Kühlkörpers durchgeführt und sollen nun betrachtet werden. Dabei wurde ein Gehäuse aus einzelnen Kunststoffscheiben eingesetzt die übereinander gestapelt werden. Dieser Gehäusetyp hat den Vorteil der Erweiterbarkeit nach oben und unten, wenn man längere Schrauben und neue Seitenteile verwendet. Bei „RPI CASE STACKBT“ gehört ein 3*3cm Lüfter zum Lieferumfang. Diesen Pi-Fan-Lüfter mit 7mm Höhe kann man einblasend/absaugend sowie auf/im Gehäuse montieren.
Der Pi-FAN-Lüfter zum STACKBT Gehäuse (hier blasend im Gehäuse)
Der Geräuschpegel des Lüfters ist bei 0.2 A nicht unerheblich, wird aber später durch einen Vorwiderstand gesenkt. Die Versuche bei voller Prozessorlast (Nr=4) beginnen ganz ohne Kühlkörper:
In obiger Tabelle sehen Sie links Temperaturen bis zu 60° bei einem absaugenden Lüfter im Gehäuse. In der rechten Spalte wurde die Spannungsversorgung für den Lüfter testweise abgeklemmt. Durch den stehenden Lüfter und weitere kleine Öffnungen konnte etwas warme Luft entweichen. Trotzdem habe ich nach 210 sec den Test abgebrochen um die CPU keinesfalls zu gefährden. Fazit: 60°C in Kombination mit einem Lüfter sind zuviel – auch wenn man berücksichtigt, daß ein zielgenau einblasender Lüfter wirksamer ist als ein absaugender Lüfter.
Der Raspberry Pi 4 bekommt jetzt Kühlkörper. Bei den Messungen mit pi4_sysbench.sh wird zuerst ein kleiner 1,9*1,9cm Kühlkörper, und dann der zugeschnittene große Kühlkörper verwendet. Erneut gilt Vollast für die CPU (Nr=4). Die Luft wird jeweils eingeblasen:
Einblasender 3*3 cm Lüfter im Gehäuse. CPU-Kühlkörper mit 3,6 cm²
Einblasender 3*3 cm Lüfter im Gehäuse. Großer CPU-Kühlkörper
Im Vergleich (pi4_sysbench.sh) schneidet der größere Kühlkörper (mit Doppelklebeband) nicht besser ab als der lediglich aufgelegte kleine Kühlkörper. Die Kühlung tritt letztlich nur durch den kräftigen Lüfter ein. Immerhin: unter 50°C nach 10 Minuten Vollast auf allen 4 Prozessorkernen können sich sehen lassen. Einen schon aufgeklebten Kühlkörper kann man nicht wieder entfernen ohne den Chip danach mühsam zu reinigen. So gesehen finden Experimente mit dem kleinen Kühlkörper nun ihr Ende.
Ein Pi-FAN Lüfter mit Turboschalter – leise und doch effektiv
Ein großer Kühlkörper gibt eine gewisse Sicherheit, wenn eine hohe Prozessorlast nicht zu lang andauert. In der Praxis ist es allerdings schwierig die Abwärme ohne Lüfter abzuführen. Mögliche Lösungen sind dabei massive Gehäuse aus Aluminium die ihren Preis haben, aber durch die metallene Verkapselung ggf. einen schlechteren WLAN-Empfang verursachen.
Pi4 mit leisem Lüfter durch den Vorwiderstand
Die Drehzahl eines Lüfters hängt von der Stromstärke ab. Und tatsächlich: Ein Vorwiderstand von 16 Ω führt bei 0,13 A zu einem kaum mehr hörbaren Pi-FAN-Lüfter. Überbrückt man diesen Widerstand durch einen einfachen Schalter, dann hat man wieder die volle Leistung – z.B. während der Mittagspause, wenn der Compiler läuft. Der Pi-FAN-Lüfter wird hier über ein USB-Kabel mit Energie versorgt. So kann die oberste Acrylplatte mit dem Lüfter auch im laufenden Betrieb leicht abgenommen werden.
In obiger Tabelle sehen Sie, daß ein sanft einblasender Lüfter mit 16 Ohm Vorwiderstand ausreicht, um nach 10 Minuten Dauerlast (Primzahlenberechnung) lediglich auf 50° C zu kommen. Nach 3 weiteren Minuten ohne Last wird wieder die Ausgangstemperatur von 38°C erreicht. Im Turbomodus kommen Sie bei bei 22,6°C im Raum während der Dauerlast auf ca. 45° C und ohne nennenswerte Last im RPi-Desktop sind sogar 35°C als CPU-Temperatur möglich – um den Preis eines hörbaren Lüfters. Ganz ohne Deckel und Lüfter steigt die Temperatur wieder auf 57° an. Mit Deckel und stillstehendem Lüfter lassen sich ca. 63°C mit Chromium und dieser Webseite messen. Einen kupfernen Deckel mit federnder und wärmeleitender Verbindung zum Kühlkörper habe ich noch nicht ausprobiert. Der Turboschalter zum Pi-FAN-Lüfter ist nun (vorläufig) meine Dauerlösung für den Raspberry Pi 4 in diesem Gehäuse.
Wenn Sie selbst mit (zunächst nur aufgelegten) Kühlkörpern experimentieren wollen, achten Sie bitte unbedingt darauf keinen Kurzschluß zu verursachen. Sie können bei pi_sysbench.sh übrigens auch mehrere Tests konfigurieren und die Ausgabe kommentieren:
Nr=4 0 # Münzen als Kühlkörper, 25°Raum
Durch „4“ erfolgt zuerst eine intensive Prozessorlast und dann durch „0“ eine weitere Messung ohne Last auf der CPU. So können Sie beliebige Testszenarien hintereinander ausführen und leicht protokollieren.
Der Aufbau einer aktiven Kühlung für ein 19 Zoll Server Rack mit bis zu 10 Raspberry Pi Computern wird auf beeindruckende Weise auf folgender Webseite beschrieben:
Ein Kupferzylinder als CPU-Kühlkörper – Pi 4 passiv gekühlt
Die passive Kühlung einer Raspberry Pi 4 CPU ist in vielen Punkten weitaus anspruchsvoller als einen Lüfter einzubauen. Warum ist das so? Vergleichen Sie bitte die Materialeigenschaften aus folgender Tabelle :
Neben der Form sind die Wärmeleitfähigkeit und die Wärmekapazität relevante Eigenschaften des Kühlkörpers und jedes Wärmeübergangs. Für einen Kupferzylinder mit 5 cm Höhe und 2 cm Durchmesser lässt sich ein Volumen von 15,7 cm³ und eine Wärmekapazität von 53,5 J/K berechnen. Das selbe Volumen Wasser käme auf 64,9 Joule pro Kelvin. Wenn Sie die Zahlenwerte mit denen von Luft vergleichen, zeigt sich daß Luft eine sehr geringe Wärmekapazität hat und zugleich ein sehr schlechter Wärmeleiter ist. Es gibt allerdings den Effekt der „natürlichen Konvektion“, der sich mit steigender Temperaturdifferenz verstärkt. Erwärmte Luft steigt nur relativ langsam auf, wenn der Lüfter fehlt. Kühlrippen von lediglich 4 mm Länge (bei einem 5 mm hohen Kühlkörper) reichen oft nicht aus, um eine natürliche Konvektion in Gang zu setzen.
Ein Kupferzylinder auf der CPU des Raspberry Pi 4
Eine rein passive Kühlung erhalten Sie, wenn ein 5 cm hoher Kupferzylinder mit 2 cm Durchmesser direkt auf der CPU steht. Eine Pappschablone bildet dabei vorläufig den Gehäusedeckel und es entstehen folgende Messwerte mit dem Skript pi_sysbench.sh :
Vor dem Test wurde der Raspberry Pi 4 frisch gebootet und nach etwa 2 Minuten pi_sysbench.sh gestartet. Nach 10 Minuten Leerlauf im RPi-Desktop hat die CPU 44.7°C erreicht. Der Stresstest bzw. die Primzahlenberechnung findet dann in 4 Blöcken bei insgesamt 40 Minuten statt. Im 4. Block steigt die Temperatur auf etwa 75°C als Maximaltemperatur. Ohne Last sinkt die Temperatur nach 10 Minuten auf ca. 62°C ab. Und nach weiteren 50 Minuten gelten 52°C als CPU-Temperatur ohne nennenswerte Last im RPi-Desktop.
Der Kupferzylinder führt zu deutlich besseren Resultaten als der 40*30 mm Kühlkörper aus Aluminium. Warum ist das so?
Der Kupferzylinder hat eine erheblich höhere Wärmekapazität.
Die Zylinderoberfläche ist größer als die Grundfläche des 40*30 mm Kühlkörpers.
Zu kurze Kühlrippen lösen keine natürliche Konvektion aus
Der direkt auf der CPU aufliegende Kupferzylinder hat trotz möglicher Lufteinschlüsse einen besseren Wärmeübergang als ein Doppelklebeband.
Ein Kühlkörper dessen Grundfläche eben ist, aber die Fläche der Pi4 CPU überragt, kann dazu beitragen, daß ein warmes, statisches Luftpolster zwischen der Kühlkörperunterseite und der Platine entsteht.
Der Wärmeanteil, der nicht über den Kühlkörper/Kupferzylinder nach oben abgeleitet wird, wärmt zwangsläufig die Platine und damit das Gehäuse auf. Dieser Wärmeanteil kann nur langsam über Gehäuseöffnungen entweichen.
Wie die Hitzeentwicklung auf einem Raspberry Pi 4 ohne Kühlkörper und Gehäuse aussieht hat Gareth Halfacree festgehalten:
Das von der genannten Webseite übernommene Falschfarbenbild zeigt die Temperaturverteilung auf dem Raspberry Pi 4 ohne Nutzung der USB 3.0 Schnittstelle. Nach 10 Minuten Last auf allen 4 CPU-Kernen kommt der Sensor im SoC auf über 80°C. Da die metallene Verkapselung die Hitze verteilt, entspricht das „hellrot“ etwa 75°C. Man erkennt deutlich, wie sich die Abwärme von der CPU ausgehend über die Platine ausdehnt.
Im Blogbeitrag „Ein Kühlturm für den Raspberry Pi 4“ erfahren Sie, wie man eine rein passive Kühlung auf Basis des Kupferzylinders aufbauen kann.