Manuell drehen

Das Display kann Mithilfe von diesem Befehl gedreht werden:

sudo bash -c "echo 1 > /sys/devices/virtual/graphics/fbcon/rotate"

echo 0 = 0°
echo 1 = 90°
echo 2 = 180°
echo 3 = 270°

Der Teil "sudo bash -c" ist notwendig, da das Schreiben in die rotate-Datei sudo-Rechte benötigt.

Bei Systemstart drehen

Mit dem Wissen aus dem vorherigen Abschnitt können wir nun einen systemd-Dienst erstellen, welcher nach jedem Neustart des Raspberry Pi ausgeführt wird.

  • Erstelle die Datei:
sudo nano /etc/systemd/system/rotate-display.service

Alternativ auch unter https://swarkin.dev/blog/files/display/rotate-display.service verfügbar.

  • Füge diesen Text ein:
[Unit]
Description=Rotates the fbcon
Before=graphical.target
Requires=graphical.target
ConditionPathExists=/sys/devices/virtual/graphics/fbcon/rotate

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=bash -c "echo 1 > /sys/devices/virtual/graphics/fbcon/rotate"
ExecStop=bash -c "echo 0 > /sys/devices/virtual/graphics/fbcon/rotate"

[Install]
WantedBy=graphical.target
Erklärung der systemd-Dienstdatei (Aufklappen)
OptionBeschreibung
BeforeGibt an, vor welchen Einheiten der Dienst ausgeführt werden soll.
RequiresDefiniert Abhängigkeiten des Dienstes.
ConditionPathExistsDieser Pfad muss existieren, damit der Dienst ausgeführt wird.
Type=oneshotDefiniert den Dienst als "oneshot", er wird einmalig ausgeführt.
RemainAfterExit=yesFührt dazu, dass der Dienst als aktiv angezeigt wird, auch wenn ExecStart derzeit nicht ausgeführt wird.
ExecStartBefehl, der beim Start ausgeführt werden soll.
ExecStopBefehl, der beim Stop ausgeführt werden soll.
WantedByDefiniert den benötigten Runlevel.

  • Aktiviere das graphical.target:
sudo systemctl set-default graphical.target

Das graphical.target ist eine Gruppierung an Diensten, die für eine grafische Benutzeroberfläche verwendet werden. Da wir uns auf einem Raspberry Pi OS Lite-System befinden, ist es standardmäßig nicht aktiviert, und es gibt keine Dienste, die darauf gebunden sind. Das rotate-display.service ist daher der erste Dienst, den wir dafür erstellt und aktiviert haben.

In anderen Seiten des Extras-Kapitel wird möglicherweise angenommen, dass dieses Runlevel bereits als Standard festgelegt wurde.

  • Aktiviere den automatischen Neustart des Dienstes:
sudo systemctl enable rotate-display
  • Teste die Funktionalität:
sudo systemctl start rotate-display

Falls Fehler auftreten, kannst du dir den Status mit diesem Befehl anzeigen:

sudo systemctl status rotate-display
  • Teste schlussendlich das automatische Neustarten des Dienstes mit sudo reboot.