RetroPie: Erfahrungen zu aktiver und passiver Kühlung

Gerade beim Spielen von emulierten Spielen über RetroPie, gerät der Raspberry Pi an seine Grenzen. Gerne wird der Pi aus Performancegründen noch zusätzlich übertaktet. Damit die erforderliche Leistung auch dauerhaft zur Verfügung steht, muss die CPU-Temperatur unter 85°C liegen. Anderenfalls fährt der Pi die Leistung automatisch herunter. Im schlimmsten Fall kommt es sogar zu einem kompletten Systemabsturz oder zu Schäden an der Hardware selbst.

Viele schicke RetroPie-Gehäuse, wie z.B das NESPI-Gehäuse, bieten die Möglichkeit einen Lüfter einzubauen. Das NESPI-Gehäuse bietet sogar zwei eigene Steckerpins dafür an.

Ich haben in den letzten Wochen einige RetroPie-Systeme für Freunde und Familie zusammengebaut. Von Mal zu Mal versuche ich das System zu optimieren. Ich werde nun regelmäßig über das Thema berichten und starte die Reihe mit diesem Beitrag.

Meine Erfahrungen zum Thema Kühlung und Lüftung möchte ich in diesem ersten Beitrag mit euch teilen.

Passive Kühlkörper

Es gibt Haufenweise Kühlkörper für den Raspberry Pi. Diese liegen preislich meist bei 1 EUR. In der Regel erhält man drei Stück. Für CPU, GPU und den RAM. Ihr solltet allerdings darauf achten, dass Ihr in einem Set zwei große und einen kleinen Kühlkörper bekommt. Oftmals musste ich die Erfahrung machen, dass diese Billig-Sets einen großen und zwei kleine Kühlkörper beinhalten.
Kühlkörper allein können bei maximaler Belastung – Dazu zähle ich N64-Spiele und eine Übertaktung >1300 MHz – die Temperaturen nicht ausreichend abführen. Erfahrungsgemäß senkt ein Kühlkörper allein die Temperatur um maximal 5-6 °C.

Kupfer oder Alu?

Hier streitet sich die Community. Aus meiner Sicht macht es keinen Unterschied, da die passiven Kühlkörper nur einen kleinen Anteil an der Kühlleistung haben. Richtig sinnvoll wird das ganze ohnehin nur mit einem aktiven Lüfter. Ich habe bislang auf Alu-Kühlkörper gesetzt und damit bislang gute Erfahrungen gehabt.

Lüfter und geschlossene Gehäuse

Mein Lieblingsgehäuse, das NESPI-Case, bietet neben einer Aussparung für einen 5V-Lüfter, auch Pins zur Spannungsversorgung an. Der Lüfter wird so montiert, dass er von oben direkt auf die CPU bläst. Diese Option solltet Ihr auch nutzen. Allerdings in Verbindung mit passiven Kühlkörpern. In Kombination ist es eine sehr gute Lösung um die Temperaturen auch bei Hochlast im Rahmen zu halten. Ohne jegliche Art von Kühlung staut sich die Hitze im Gehäuse sehr schnell an. Ich durchte auch bereits Bekanntschaft mit dem „Thermometer“ machen, das eingeblendet wird, sobald die Temperatur in den kritischen Bereich kommt. Kurz danach folgte meist das Einfrieren des Systems.
Sicherlich werdet Ihr feststellen, dass die billigen 5-V-Lüfter sich teilweise anhören wie eine Flugzeugturbine.

Da gibt es mehrere Lösungen:

  1. Am Ende des Beitrags ist eine Liste an „guten“ Billig-Lüftern, die ich aus eigener Erfahrung als „leise“ einstufen kann.
  2. Einen 5-V-Lüfter an 3,3 V betreiben. à Theoretisch möglich, aber nicht empfehlenswert. Weniger Leistung des Lüfters und ggf. sogar noch schlimmere Brummgeräusche.
  3. Etwas mehr investieren und die gute (wenn nicht sogar beste) Lösung wählen: Raspberry Pi Dual Fan. Dabei handelt es sich um einen langen Aluminiumkühlkörper, der auf GPU und CPU aufgeklebt wird. Auf dem Rücken des Kühlkörpers sind zwei sehr leise Lüfter verschraubt. Ich habe viele Lüfter ausprobiert und bin letztendlich bei dieser Variante hängen geblieben. Sie ist leise, macht optisch ebenfalls einen guten Eindruck und führt ordentlich Wärme ab. Im NESPI-Gehäuse ist bei dieser Lösung dann allerdings kein Gehäuselüfter an der vorgesehenen Position mehr möglich. Aber auch nicht notwendig.
  4. Eine aktive Lüftersteuerung, die den Lüfter nur einschaltet, wenn er gebraucht wird. (Diese Lösung kann ebenfalls für die Dual Fans genutzt werden.)
  5. Die Lösung aus 4. nutzen und den Lüfter über PWM runterfahren: Habe ich probiert, kam aber bisher auf keine gute Kombination aus DutyCycle und Frequenz. Das „ Drosseln“ der Lüfter über PWM endete bei mir immer in einem unerträglichen Fiepsen.

Aktive Lüftersteuerung

Einen 5-V-Lüfter kaufen und den Stecker auf 5 V und GND stecken kann jeder, doch als Bastler gibt man sich damit natürlich nicht zufrieden…
Schöner ist es doch, wenn man den Lüfter nur starten lassen kann, sofern es notwendig ist. Dazu muss zuerst eine kleine Schaltung aus Widerstand und einem Transistor aufgebaut werden. Hier reicht das Wald-und-Wiesen-Bauteil-BC547 und ein 1kOhm-Transistor in der Basis. Das Ganze kann auf einem kleinen Stück Streifenrasterplatine aufgebaut werden. Nun kann auch schon das Python-Programm geschrieben werden.

Die Schaltung ist schnell gebaut und die Basis des Transistors habe ich an PIN 16 angeschlossen.

„Da fehlt die Freilaufdiode!“, werden nun einige schreien. Diese Lüfter sind meist bürstenlose Motoren und haben eine interne Elektronik. Die internen Dioden reichen in der Regel aus. Da die Mini-Lüfter eine sehr geringe Totzeit besitzen, habe ich die Angelegenheit als unkritisch eingeschätzt. Ich übernehme keine Haftung, kann aber sagen, dass ich in meinem Raspberry-Pi-Leben mehr als genug Lüfter „ungeschützt“ auf die Steckerleiste gesteckt habe und noch keinen Verlust zu beklagen hatte.

Dementsprechend einfach schreibt sich das Python-Programm:

import commands, time
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)
fan = 16
GPIO.setup(fan, GPIO.OUT)
GPIO.output(fan, GPIO.LOW)

While True:

    temp= commands.getoutput("/opt/vc/bin/vcgencmd measure_temp")
    temp = temp[5:-2]
    if float(temp) >= 75:
        GPIO.output(fan, GPIO.HIGH)
    else:
        GPIO.output(fan, GPIO.LOW)

    time.sleep(60)

Das Programm habe ich in /home/pi/fan.py abgelegt. Einmal gestartet, prüft das Programm, ob die CPU-Temperatur > 75 °C beträgt und schaltet dann den Lüfter für 60 Sekunden ein. Nach 60 Sekunden wird wieder die Temperatur abgefragt. Sollte diese nun unter 75°C liegen, schaltet der Lüfter wieder ab oder läuft halt weitere 60 Sekunden weiter, sofern die Temperatur noch immer zu hoch ist. Das Programm ist nur mit Python 2.x kompatibel.

Wer Python 3 nutzen möchte, kann commands nicht nutzen, sondern muss die Temperatur über subprocess in Erfahrung bringen:

import subprocess

temp=subprocess.Popen("/opt/vc/bin/vcgencmd measure_temp",shell=True, stdout=subprocess.PIPE).stdout.read()temp = (temp[5:9])

Das Programm habe ich bei mir im Einsatz und bin mit dem Effekt bisher recht zufrieden. Es tut was es soll.
Damit die Lüftersteuerung direkt bei jedem Start der RetroPie-Konsole aktiv ist, starte ich das Programm bei jedem Neustart über einen Cronjob:

@reboot python /home/pi/fan.py

 

Spannungseinbruch durch Lüfter oder NESPI-Gehäuse

Ich habe beobachtet, dass zusätzliche Lüfter beim Anlaufen dazu führen, dass der gelbe Blitz erscheint. Bisher habe ich das allerdings nur bei USB-Ladegeräten feststellen können (z.B. iPhone / iPad Ladegerät) Um den gelben Blitz loszuwerden, habe ich im verlinkten Beitrag zwei softwareseitige Lösungen vorgestellt. Zusätzlich kann ich weiterhin nur das offizielle Raspberry Pi Netzteil empfehlen.

Ich habe Berichte gelesen, dass Leute das Problem der permanenten Unterspannung haben, wenn Sie das NESPI-Gehäuse verwenden. Die Lösungen dafür reichen vom Austausch der internen Leitungen und dem einfräsen einer neuen Öffnung auf der Rückseite, um den Micro-USB-Stecker direkt in den Raspberry Pi zu stecken und nicht die die NESPI-Platine. Ich jedoch habe bisher keine Verschlechterung durch den Einsatz des Gehäuses festgestellt. Es scheint da wohl etwas Fertigungstoleranzen zu geben.

Fertigungstoleranzen habe ich allerdings auch beim Raspberry Pi selber feststellen können. Das äußert sich darin, dass ich bei genau dem gleichen Setup (Hardware sowie Software) in einem System eine permanente Unterspannung angezeigt bekomme und im anderen System nicht. Zudem kann ich feststellen, dass auch bei gleicher Art der Kühlung ein System schneller heiß wird als das andere.

Eine richtige Lösung dafür habe ich nicht gefunden, aber ich konnte eine Besserung feststellen, wenn ich das „empfindlichere“ System etwas zurücktakte. Meine Standardtaktung für die CPU eines Raspberry Pi 3 sind 1350 MHz. Damit konnte ich eine gute Performance erreichen und die entstehende Wärme noch ausreichend schnell abführen. Bei einem „empfindlichen“ System gehe ich auf 1300 MHz runter. Der Blitz erscheint dann deutlich weniger.

Eine ultimative Universal-Lösung habe ich also noch nicht gefunden, ich arbeite jedoch an einem Eigenbau-Netzteil mit 5,3 V Ausgangsspannung….Das Ergebnis ist aber noch ungewiss…

Zum Abschluss folgt eine Teileliste aller Komponenten die ich in dem Beitrag erwähnt habe und auch selbst getestet und für gut befunden habe:

Teileliste zum Thema RetroPie und Kühlung

  • Leiser 5-V-Lüfter (aus eigener Erfahrung) [eBay-Link]
  • Sehr leistungsfähiger und leiser Dual-Fan [eBay-Link]
  • NESPI-Gehäuse einzeln [Amazon-Link] oder als Komplettset [Amazon-Link] (Beim Komplettset ist leider ein Lüfter- Ungeheuer dabei, über das sich selbst die Nachbarn freuen werden)
  • Passendes Kühlkörper-Set [Amazon-Link]
  • Raspberry Pi Netzteil [Amazon-Link]

3 Gedanken zu „RetroPie: Erfahrungen zu aktiver und passiver Kühlung

  1. Hab mir mal zu Testzwecken den kleinen Lüfter aus China bestellt Den du empfiehlst ja er ist deutlich leiser als der im komplettset aber gefühlt nur die ersten 10 Minuten und wird dann Schritt für Schritt immer lauter probiere den jetzt mal soweit ich es hin bekomme zu entkoppeln für Tipps gerne zu haben ansonsten halt doch so ein dual fan wenn der deutlich leiser sein sollte

    Aber nichts desto trotz toller Artikel und danke für die Erfahrungen

  2. habe mir den dual lüfter besorgt. mit nano eine fan2.py datei mit deinem script erstellt.direkt im retropie ordner, also noch vor dem home ordner

    habe dann noch bei crontab -e unten eben @reboot python /fan2.py eingegeben. jedoch läuft der lüfter immer durch.
    was muss ich denn tun dass er eben immer aus ist und sich nur einschaltet wenn er zu heiss wird?

    irgendwo ist da der wurm drin. bitte um hilfe

Kommentar verfassen