19.11.2022

Raspberry Pi 4 Model B Rev 1.5 mit Armbian (Ubuntu) 22.04 effektiv und sicher tunen (knapp 2.3 GHz)

Um die Stromrechnung zu „minifizieren“ verwende ich zumindest zum „Programmieren, Surfen und Mailen“ einen  Raspberry Pi 4 Model B Rev 1.5 mit Armbian (Ubuntu) 22.04 . Im Netz gefundene Anleitungen zum Tunen haben entweder nicht funktioniert oder Bedenken vor einer Überhitzung geweckt.

Mit ein wenig Frickeln hab ich es aber hinbekommen:

UnumgĂ€ngliche Vorarbeit: FĂŒr KĂŒhlung sorgen!

Wer auch immer meint, das probieren zu wollen, sollte sich Gedanken um die KĂŒhlung machen. Auch an einer 5-Watt Birne vom Fahrradlicht kann man sich die Finger verbrennen. Bei mir tut es ein MetallgehĂ€use, welches sich unter dem Stichwort „Raspberry Pi 4 GehĂ€use, Pi 4 Heavy Duty Aluminium Passive KĂŒhlung GehĂ€use nur fĂŒr Raspberry Pi 4B Silber“ um die 13 € findet. Das sieht zwar toll aus, allerdings strahlen schwarze GerĂ€te die WĂ€rme angeblich besser ab. Eine Lösung mit einem rotierendem LĂŒfter wollte ich „par tout“ nicht. Bisher - mit dem hier vorgestelltem Tuning - hat die Temperatur die Marke von 70′C noch nicht „gerissen“. Wie das wird, wenn im Sommer die Temperaturen in der Wohnung steigen, wird sich zeigen. 

Die Einstellungen:

Um den Raspberry Pi 4 Model B Rev 1.5 mit Armbian (Ubuntu) 22.04 effektiv und sicher zu auf die oben angezeigten Werte tunen wird auf vielen Webseiten vorgeschlagen, eine Datei '/boot/config.txt' zu bearbeiten. Das fĂŒhrt jedoch auf meinem Rechner zu keinem Ergebnis.

Die richtige Datei ist ganz einfach '/boot/firmware/config.txt' .

Dort sind folgende Einstellungen hinzufĂŒgen bzw. zu aktivieren:

[pi4]
max_framebuffers=2
over_voltage=8
arm_freq=2275
gpu_freq=750

Danach muss der Raspi einmal neu gebootet werden. Nicht wundern, das dauert etwas lÀnger. Allerdings zeigt mein kleines Pythonskript nicht an, das der Raspi tatsÀchlich mit der höheren Taktfrequenz lÀuft.

Der Grund ist einfach:

Im Verzeichnis '/sys/devices/system/cpu/cpu0/cpufreq' finden sich (unter anderem) folgende Dateien

  • cpuinfo_max_freq → Diese Datei zeigt an, welche Taktfrequenz maximal genutzt werden kann und wurde beim Booten vom Kernel mit dem neuen Wert (ĂŒbrigens '2300000') gefĂŒllt.
  • cpuinfo_minfreq → Diese  Datei zeigt an, welche Taktfrequenz minimal genutzt werden kann und wurde beim Booten vom Kernel dem Default-Wert (ĂŒbrigens '600000') gefĂŒllt.
  • scaling_max_freq → Diese  Datei zeigt an, welche Taktfrequenz vom Skalierer maximal genutzt werden kann und wurde beim Booten vom Kernel nicht(!) mit dem neuen Wert (soll '2300000' sein) gefĂŒllt.
  • scaling_min_freq → Diese  Datei zeigt an, welche Taktfrequenz minimal genutzt werden kann und wurde beim Booten vom Kernel nicht mit dem von mir gewĂŒnschtem Wert (ĂŒbrigens '1500000') gefĂŒllt. Klar, Den hab ich ja bisher auch nirgendwo angegeben

Tunen und vor Überhitzung schĂŒtzen

Um die neuen Frequenzen einzustellen und gleichzeitig einer Überhitzung (mit einer gewissen Reserve bei einer Prozessortemperatur ĂŒber 70′C) vorzubeugen habe ich folgendes Bash-Skript geschrieben:

#!/bin/bash
# File:/opt/setCpuSpeed
maxTemp=70000; #′C *1000
tmp=$(cat /sys/devices/virtual/thermal/thermal_zone0/temp);
maxFreqAkt=$(cat /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq);
if [ -n "$tmp" -a $tmp -lt $maxTemp -a ! -e /dontSetCpuSpeed ]; then
    if [ -n "$maxFreqAkt" -a $maxFreqAkt -ne 2300000 ]; then
        cpufreq-set -r --cpu 0 --min 1500000  --max 2300000;
        echo "Frequenz der CPU erhöht" | logger -t 'TUNING';
    fi
else
    cpufreq-set -r --cpu 0 --min 600000& --max 1500000
    echo "Temperatur ĂŒber 70′C: Frequenz der CPU verringert" | logger -t 'TUNING';
fi

Das muss jetzt nur noch regelmĂ€ĂŸig gestartet werden, MinĂŒtlich sollte reichen.

Also habe ich mit dem Befehl

sudo crontab -e -u root

und folgendem Eintrag:

* * * * * /opt/setCpuSpeed

genau dafĂŒr gesorgt. Wer das Skript angeschaut hat wird schnell merken, dass das Erzeugen einer Datei namens /dontSetCpuSpeed, also auf dem Dateiystemroot, z.B. mit

sudo touch /dontSetCpuSpeed

das Hochsetzen abschaltet und sogar das Tuning zurĂŒck setzt. Löscht man diese Datei oder benennt sie um wird das Tuning wenig spĂ€ter (binnen 1 Minute) wieder automatisch wirksam. Noch schneller geht beides, wenn man nach dem Erzeugen oder Löschen der Datei

/opt/setCpuSpeed

einmal manuell ausfĂŒhrt.

Kontrolle

Die mache ich mit dem bereits angesprochenen Python-Skript, welches ich in einem Terminal mit

watch -n1 -t cpufreq.py

starte.

watch -n1 -t cpufreq-info -fm
und
watch -n1 -t cat /sys/devices/virtual/thermal/thermal_zone0/temp
gĂ€nge auch, ist aber weder so bequem noch, „Ă€h“, hĂŒbsch wie mein Skript.

2 Kommentare:

andreas skrziepietz hat gesagt…

Super, Herr Reinholz. Aber zum GlĂŒck bin ich nicht so abgebrannt wie Sie, so daß ich nicht sparen muß.

Ich hat gesagt…

Mein lieber Andeas Skriepietz,

da ich Dich ja ein wenig kenne, glaube ich fest daran, dass Du in mehrerer Hinsicht „abgebrannt“ bist. Eine der Hinsichten ist die geistige.

Du hast keinen blassen Schimmer, um was ein in dem Artikel ĂŒberhaupt geht.

GrĂŒĂŸe nach Hannover.

Kommentar veröffentlichen