Raspberry Pi 4 Desktop Overclocking mit PWM-Kühlung
Was ist das? Hierbei handelt es sich um ein Projekt, mit dem ein Raspberry Pi 4 B 8GB mit einer SSD als Desktop-Ersatz aufgebaut wird, welcher auch übertaktet wird und mittels eines PWM-Kühlers die Temperaturen niedrieg gehalten werden. Es ist eine Schritt-für-Schritt Anleitung, die es jedem ermöglichen sollte, dieses Projekt nachzubauen. Bei Fragen bitte mich einfach kontaktieren, ansonsten viel Spaß beim Nachbauen! Wer Tippfehler findet, darf sie behalten - Inhaltliche Fehler oder Verbesserungsanregungen können jederzeit an mich gemailt werden.
Benötigte Hardware: (Alle Links sind Affiliate-Links mit denen du mich unterstützt)
Benötigte Software:
Benötigter 3D-Druck:
Benötigtes Werkzeug: (Alle Links sind Affiliate-Links mit denen du mich unterstützt)
Inhaltsverzeichnis:
- Schritt 1 - 3D Druck
- Schritt 2 - Raspberry Pi OS auf Micro-SD Karte schreiben
- Schritt 3 - SSD Einbau
- Schritt 4 - CPU Kühler vorbereiten
- Schritt 5 - Noctua-Kühler mit PWM Steuerung Testaufbau
- Schritt 6 - Raspberry einrichten
- Schritt 7 - PWM Steuerung einrichten
- Schritt 8 - Testaufbau entfernen und fix verdrahten
- Schritt 9 - CPU Kühler mit Wärmeleitpaste und Lüfter ins Gehäuse montieren
- Schritt 10 - CPU Lasttest durchführen
- Schritt 11 - CPU Overclocken
- Schritt 12 - Gehäuse zusammenbauen
- Optional 1 - Lüfterdrehzahl auslesen
- Optional 2 - Lüfterdrehzahl und CPU-Temperatur auslesen
- Optional 3 - Extremer CPU Lasttest
Lade dir die Druckvorlagen aus dem Link oben von Thingiverse herunter und drucke alle benötigten Teile mit einem 3D Drucker aus. Sollte der Thingiverse-Link nicht mehr funktionieren, kontaktiere mich für einen Alternativlink.
Schritt 2 - Raspberry Pi OS auf Micro-SD Karte schreiben:
Dazu die Micro-SD Karte mittels einem Adapter oder Kartenlesegerät am PC anschließen.
Dann den Rasperry Pi Imager starten. Wir wählen unter nun unter dem Menüpunkt "Raspberry Pi OS (other)" das "Raspberry Pi OS Full (32-bit)" aus sowie die zuvor eingelegte Micro-SD Karte (Achtung! Wird ein falsches Laufwerk gewählt, werden alle Daten darauf gelöscht!).
Bevor wir den Schreibvorgang starten, legen wir noch erweiterte Optionen fest, indem wir [Strg]+[Shift]+[X] drücken. Hier definieren wir nun einen Hostnamen, aktivieren SSH und legen dazu ein Passwort für den Benutzer 'pi' fest. Weiters empfiehlt es sich auch gleich das Wifi einzurichten, sofern man nicht via Ethernet arbeiten möchte. Das passende Tastaturlayout einzustellen wäre hier auch ein guter Zeitpunkt.
Wir können bereits die nächsten Schritte fortsetzen, bis der Schreibvorgang abgeschlossen ist.
Die SSD Platte in das entsprechende Gehäuseteil einbauen und alle 4 seitlichen Montageschrauben festziehen. Da der USB 3.0 SATA Adapter sich nun leider nicht anstecken lässt, entfernen wir mit dem Dremel bei den beiden Holmen links und rechts (siehe rote Markierungen im Bild) einige Millimeter, bis der Adapter sich leichtgängig auf die Ports der SSD schieben lässt. Lieber immer nur sehr wenig Material abtragen und öfters zwischendurch die Passung probieren, bevor man zu viel weg nimmt.
Schritt 4 - CPU Kühler vorbereiten:
Nun können wir den Ice Tower Cooler vorbereiten, indem die beiden Drahtbügel am vormontierten Lüfter entfernt werden und die Montageschienen am Träger angebracht werden.
Schritt 5 - Noctua-Kühler mit PWM Steuerung Testaufbau:
Für den Noctua-Kühler wollen wir eine PWM-Steuerung einrichten, welche es uns erlaubt, die Drehzahl des Lüfters automatisch mit der CPU Last zu regeln.
Den schwarzen Draht vom Lüfter verbinden wir mit GND auf PIN 6 des Raspberry Pi GPIO. Den gelben Draht vom Lüfter verbinden wir dann mit Pin 4, welcher 5 Volt liefert. Den blauen Draht vom Lüfter verbinden wir mit Pin 33, GPIO13 (PWM1).
Nun kommt das Breadbord zum Einsatz: Den grünen Draht vom Lüfter verbinden wir über das Breadboard mit einem weiteren grünen Draht, welcher an Pin 18 (GPIO 24) am Raspberry Pi angeschlossen wird. Den orangen Draht von Pin 17 (3,3 Volt) verbinden stecken wir auf einen neuen freien Platz am Breadboard. Die Reihe mit dem orangen Draht und die mit den beiden grünen Drähte verbinden wir nun mit dem 1k Ohm Widerstand.
Schritt 6 - Raspberry einrichten:
Nachdem unsere SD-Karte mittlerweile fertig mit dem Raspberry Pi OS beschrieben wurde, stecken wir sie in den Raspberry Pi ein und stecken das Netzteil ebenfalls an - der Raspberry bootet nun und der Lüfter sollte sich ebenfalls drehen (Tipp: richte ihn temporär so, dass er auf die CPU des Raspberry bläst).
Wir können uns jetzt mittels putty per SSH verbinden. Wie man die zugehörige IP rausfindet, erklärt dir eine Suchmaschine deines Vertrauens, falls es dir nicht bekannt ist.
Wir loggen uns mit dem User 'pi' und dem in der Einrichtung des OS festgelegten Passwort ein.
Als erstes aktualisieren wir nun das OS mit folgendem Befehl:
sudo apt update && sudo apt upgrade -y
Das OS wird nun aktualisiert.
Bevor wir nun weiter machen, ziehen wir gleich von der Micro-SD Karte auf die SSD um, wir beginnen mit einem weiteren Update, wir aktualisieren die Firmware:
sudo rpi-update
Jetzt verbinden wir die SSD mit dem USB Kabel mit dem blauen USB 3.0 Port des Raspberry und stellen auch die Stromversorgung für die SSD her und starten anschließend den Raspberry mit folgendem Befehl neu.
sudo reboot now
Nachdem wir uns erneut mittels putty verbunden und als 'pi' eingeloggt haben, laden wir uns von GitHub ein tool zum Klonen der Micro-SD Karte auf die SSD herunter:
git clone https://github.com/billw2/rpi-clone.git
Wir kopieren das Tool nun in den sbin Ordner:
cd rpi-clone
sudo cp rpi-clone rpi-clone-setup /usr/local/sbin
Wir testen nun die Konfiguration. Statt 'testhostname' geben wir den richtigen Hostname des Raspberry Pi ein, welchen wir in der Einrichtung der OS gewählt haben:
sudo rpi-clone-setup -t testhostname
Jetzt laden wir uns den aktuellen Bootloader für den Raspberry ins EEPROM, sofern verfügbar:
sudo rpi-eeprom-update -d -a
Wir ändern nun die Konfiguration des Raspberry Pi, indem wir festlegen, dass wir künftig von USB booten wollen anstatt von der Micro-SD Karte:
sudo raspi-config
Wir gehen zu den "Advanced Options":
Wir wählen nun die "Boot Order" auf "USB Boot":
Wenn das geklappt hat, erhalten wir folgende Info:
Wieder in den "Advanced Options" wählen wir diesmal als "Bootloader Version" "Latest" aus:
Damit diese nicht nur beim nächsten Reboot gewählt sind, sondern immer, wählen wir bei der folgenden Frage "No":
Wir beenden das Configuration Tool nun mit "Finish" und die Frage, ob wir rebooten möchten unbedingt mit "No" beantworten! Wir müssen ja zuerst die Micro-SD Karte auf die SSD klonen, bevor wir davon auch tatsächlich booten können.
Den aktuellen Bootloader können wir übrigens mit folgendem Befehl prüfen:
vcgencmd bootloader_version
Jetzt suchen wir unsere SSD raus, entweder mit 'lsblk' oder 'sudo ls -l /dev/disk/by-uuid/' wird sie uns jedenfalls angezeigt:
Unsere SSD ist also die 'sda' - die mmcblk0 wäre übrigens die Micro-SD Karte. Darunter sieht man die Partitionen darauf. Entsprechend passen wir folgenden Befehl an:
sudo rpi-clone sda
Wir bestätigen die Frage mit "yes" und lassen das optionale label für das Dateisystem leer. Daraufhin beginnt das Klonen der Micro-SD Karte auf die SSD, bitte den Prozess nicht abbrechen, er dauert ein paar Minuten! Die Aktivitäts-LED auf der SSD blinkt währenddessen.
Nachdem das Klonen erfolgreich war, bestätigen wir mit "Enter" und rebooten unseren Raspberry Pi, damit der neue Bootloader geladen wird:
sudo reboot now
Nachdem wir uns wieder mit SSH verbunden haben, prüfen wir erneut die Version des Bootloaders:
vcgencmd bootloader_version
Nun fahren wir den Raspberry herunter - nachdem dieser heruntergefahren ist, entfernen wir die Stromversorgung und die Micro-SD Karte und stellen die Stromversorgung wieder her - der Raspberry bootet nun ohne Micro-SD Karte direkt von der SSD.
sudo shutdown now
Um nun die ganze Kapazität der SSD nutzen zu können, expandieren wir das Dateisystem ('Advanced Options'->'Expand Filesystem') und rebooten anschließend:
sudo raspi-config
Das Tool zum Klonen der Micro-SD Karte auf die SSD wird nicht mehr benötigt und kann nun entfernt werden:
sudo rm -rf /usr/local/sbin rpi-clone
sudo rm -rf /usr/local/sbin rpi-clone-setup
Schritt 7 - PWM Steuerung einrichten:
Wir wollen nun unseren Lüfter mittels PWM steuern, dazu ist es zuerst nötig das PWM Signal zu prüfen. Das geht mit Wiring Pi, welches wir uns in der aktuellen Version installieren:
cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
Mit folgendem Befehl bekommen wir das GPIO Layout angezeigt. Wichtig ist dabei, dass die Pin Nummer sowie die Raspberry GPIO Nummer NICHT identisch ist mit der Wiring Pi Nummer! Wir sehen, unser blauer Draht auf Pin 33, GPIO13 (PWM1) ist Wiring Pi Nummer 23
gpio readall
Wir schalten nun PWM auf Wiring Pi Port 23 ein:
gpio mode 23 pwm
Der Lüfter sollte nun aufgehört haben zu drehen. Indem wir im folgenden Befehl [nummer] durch eine Zahl zwischen 0 und 1023 ersetzen, können wir nun manuell die Lüfterdrehzahl regeln:
gpio pwm 23 [nummer]
Wir laden uns nun von meinem Git-Repository das Steuerskript runter:
cd ~
mkdir -p Scripts
cd Scripts/
wget https://git.kmpr.at/kamp/Raspberry-Pi-PWM-Fan-Control/raw/branch/master/fan_control.py
Wir können darin nun den Pin auf den von uns genutzten anpassen (wenn du den Pin aus der Anleitung verwendest, ist hier keine Änderung nötig):
sudo nano fan_control.py
Im Bereich "Configuration" ersetzen wir 'FAN_PIN = XX' durch den von uns genutzten Pin:
FAN_PIN = 13
Mit [Strg]+[S] und [Strg]+[X] speichern und schließen wir unsere geänderte Konfiguration. Wir starten nun das Steuerungsskript und die Lüfterdrehzahl sollte sich nun anpassen und ggf stehen bleiben, sofern die CPU-Temperatur unter 45 Grad ist:
python fan_control.py
Mit [Strg]+[C] beenden wir den ersten Testlauf des Skriptes. Wir möchten es nun automatisch beim Systemstart im Hintergrund laufen haben. Dazu bearbeiten wir folgende Datei:
sudo nano /etc/rc.local
Darin fügen wir folgende Zeile VOR 'exit 0' ein, was dem gerade erfolgreich getesteten Befehl zum Ausführen des Steuerungsskriptes entspricht. Das '&' am Zeilenende bewirkt, dass der Befehl im Hintergrund läuft, ansonsten würde unser Raspberry nicht mehr richtig funktionieren:
python /home/pi/Scripts/fan_control.py &
Abschließend starten wir nun unseren Raspberry neu und können ab sofort eine temperaturgesteuerte Lüftersteuerung mittels PWM genießen :) (beim Bootvorgang läuft der Lüfter noch auf voller Drehzahl, weil unser Skript erst regelt, sobald fertig gebootet ist).
Die aktuelle CPU-Temperatur können wir jederzeit mit folgendem Befehl prüfen:
vcgencmd measure_temp
Schritt 8 - Testaufbau entfernen und fix verdrahten:
Da wir unseren Testaufbau nun erfolgreich getestet haben, wollen wir das Breadboard los werden und eine fixe Verkabelung herstellen. Dazu verlöten wird die Kabel, Stecker und den Widerstand entsprechend dem verwendeten Schaltplan und verwenden Schrumpfschläuche um einem Kurzschluss vorzubeugen. So könnte das aussehen:
Nach dem Löten, schließen wir wieder alle Kabel an unseren Raspberry Pi an.
Schritt 9 - CPU Kühler mit Wärmeleitpaste und Lüfter ins Gehäuse montieren:
Zuerst befestigen wir unseren neuen Noctua Lüfter am Kühlkörper. Wir legen dazu den Lüfter auf und befestigen ihn mit Draht, ohne dabei die Kühlrippen zu verbiegen.
Nun setzen wir den Raspberry in das zugehörige mittlere Gehäuseteil ein. Wir nehmen nun die 4 Stück M3x16mm Schrauben und drehen sie von der Hinterseite des Raspberry-Gehäuseteiles ein und schrauben sie zur Hälfte ein (nicht ganz eindrehen!). Danach geben wir etwas von der MX-4 Wärmeleitpaste auf die CPU.
Nun setzen wir den Kühlkörper auf die CPU auf und drehen dann die 4 Schrauben ganz ein. Am Besten gelingt das, wenn man die Schrauben immer diagonal gegenüber gleichmäßig fest zieht. Abschließend mit den 4 dazugehörenden Muttern den Kühlkörper oben fixieren, hierbei können ggf. aufgetretene Niveauunterschiede ausgeglichen werden, osdass die Auflagefläche des Kühlkörpers genau auf die CPU passt. Aber die Muttern nicht ganz eindrehen, nur sodass der Kühlkörper gleichmäßig auf der CPU aufliegt. Abschließend die weiteren 4 Muttern als Kontermuttern aufschrauben.
Mit ein bischen Kabelmanagement könnte es nun so aussehen:
Nun stecken wir noch den Gehäuselüfter, der am Deckel montiert wird, auf GND und 3,3V am Raspberry Pi an. Alternativ kann auch auf 5V angeschlossen werden, falls man mehr Gehäusekühlung benötigt, wodurch aber der Geräuschpegel steigt.
Schritt 10 - CPU Lasttest durchführen:
Wir möchten nun aber auch sehen, was unsere CPU-Temperatur unter Last so macht, dazu laden wir uns ein Tool herunter:
sudo apt-get install stress
Jetzt führen wir den Test für 10 Minuten aus, um zu sehen, ob unser Pi gut gekühlt ist. Bei ca. 80℃ beginnt die CPU herunterzuregeln, was einen Leistungsverlust bedeutet und daher unbeding zu vermeinden ist. Wenn du bereits Overclocking gemacht hast solltest du vielleicht lieber den Takt etwas herabsetzen, wenn die CPU herabregelt, um Leistungsverlusten vorzubeugen.
while true; do vcgencmd measure_clock arm; vcgencmd measure_temp; sleep 10; done& stress -c 4 -t 900s
Wir haben nun eine sehr gute Kühlung unserer CPU erreicht. Jetzt bietet es sich an, den Raspberry auch etwas zu übertakten, um mehr Leistung zu bekommen. Die CPU läuft in der Werkseinstellung auf 1,5 GHz - doch die CPU kann deutlich mehr. Wir werden hier nun auf über 2,1 GHz übertakten. Dazu öffnen wir die boot-Config:
sudo nano /boot/config.txt
Wir suchen nun den Bereich mit dem auskommentierten #arm_freq und ersetzen ihn mit folgenden Zeilen:
arm_freq=2147
gpu_freq=750
over_voltage=6
Jetzt ist es Zeit für einen Reboot, bevor uns unser Pi davonläuft :)
sudo reboot now
Tipp: Die aktuelle maximale CPU Frequenz kann man mit folgendem Befehl auslesen:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
Ich habe mit den hier vorgestellten Overclocking-Settings beim Lasttest eine ziemlich konstante Temperatur zwischen 49 und 51℃ erreicht, daher kann ich die übertaktete CPU-Leistung völlig ohne Drosselung nutzen. Im Übrigen läuft der Pi damit bereits auch seit mehreren Tagen durchgehend stabil.
Schritt 12 - Gehäuse zusammenbauen:
Wir befestigen die beiden Standfüße auf den beiden Außenteilen des Gehäuses mittels 6 Stück 3,5x16mm Spanplattenschrauben.
Abschließend setzen wir das Gehäuse zusammen und schrauben die 4 Stück 3,5x50mm Spanplattenschrauben von der Seite der Kühlöffnung ein.
Nun werden die 4 Spanplattenschrauben 3,5x30mm verwendet, um die Lüfterabdeckung mit dem Lüfter am Deckel zu verschrauben.
Als letzter Schritt, werden die 4 selbstklebenden Dämpfer am Boden angebracht und unser Gehäuseeinbau ist nun fertig.
Optional 1 - Lüfterdrehzahl auslesen:
Wir laden uns dazu ein Skript aus meinem Git-Repository:
cd ~/Scripts/
wget https://git.kmpr.at/kamp/Raspberry-Pi-PWM-Fan-Control/raw/branch/master/read_fan_speed.py
und können es mit 'python read_fan_speed.py' starten. Uns wird nun jede Sekunde die aktuelle Drehzahl ausgegeben.
Optional 2 - Lüfterdrehzahl und CPU-Temperatur auslesen:
Wir laden uns dazu folgendes Skript aus meinem Git-Repository:
cd ~/Scripts/
wget https://git.kmpr.at/kamp/Raspberry-Pi-PWM-Fan-Control/raw/branch/master/read_fan_speed_and_cpu.py
und können es mit 'python read_fan_speed_and_cpu.py' starten. Uns wird nun jede Sekunde die aktuelle Drehzahl und die CPU Temperatur ausgegeben.
Optional 3 - Extremer CPU Lasttest:
Der Lasttest in Schritt 10 war nicht genug für deine CPU? Dieser hier geht noch einen Schritt weiter: Wenn dein Pi da Erfolgreich ist, hast du es geschafft!
https://core-electronics.com.au/tutorials/stress-testing-your-raspberry-pi.html