Mappen der UART Ports des Raspberry Pi Zero W

  • Lesedauer:3 min Lesezeit

Wie können wir beim Raspberry Pi UART mappen und warum sollten wir das tun?

Beim Raspberry Pi gibt es je nach Modell verschiedene UART Ports für USB, Bluetooth oder GPIOs. Die Standardeinstellungen sind durchaus unterschiedlich je nach Pi (Pi UART Doku). Um dem etwas entgegen zu wirken gibt es Alias’s für die Ports. Mit dem Alias serial0 zum Beispiel, wird der primary UART Port angesprochen. Das ist besonders dann sinnvoll, wenn eine SD-Karte in verschiedenen Pi’s genutzt wird.

Manchmal möchte man aber ändern, wo die Alias’s hin zeigen, weil man zum Beispiel eine stabile UART-Verbindung benötigt und deshalb nicht den mini UART Port ttyS0 verwenden möchte. Zum Glück können wir das recht einfach ändern. Eine Suche im Internet zeigt schnell, dass viel überflüssiges zu finden ist und die Anleitungen zum Teil umständlich oder falsch sind. Ich zeige daher eine sehr einfach Anleitung, die auch noch Bluetooth nicht deaktiviert.

Raspberry Pi Zero W UART mappen

Als Beispiel sehen wir uns einen Raspberry Pi Zero W an. Für diesen lassen wir uns ausgeben wie die Serial Alias’s gerade gemappt sind. Das geht über den Befehl ls -l /dev/serial*, der uns alles aus dem Ordner /dev/ auflistet, was mit serial beginnt:

Default Serial Port Mapping des Pi Zero
Standard Serial Port Mapping

Hier sehen wir, dass serial0 auf ttyS0 zeigt und serial1 auf ttyAMA0. ttyS0 ist der mini UART serielle Port, ttyAMA0 ist der Hardware serielle Port, der in der Standardeinstellung von Bluetooth verwendet wird.

Das lässt sich mittlerweile relativ leicht ändern. Wir öffnen die config.txt mit einem Editor unserer wahl.

sudo nano /boot/config.txt

Hier fügen wir eine Zeile hinzu, die ein Device-Tree-Overlay läd, welches für uns die Ports tauscht.

# Switch serial ports
dtoverlay=miniuart-bt

Damit ist Bluetooth auf mini UART gemappt und wir haben den „richtigen“ UART Port wieder für uns. Zusätzlich steht in der Pi Doku noch, dass die VPU Core Clock Frequenz auf einen fixen Wert gestellt werden muss, damit mini UART verwendet werden kann.

VPU Clock fixieren

Um das zu tun müssen wir einen Eintrag in der config.txt ergänzen. Dazu einfach die config.txt in einem beliebigen Editor öffnen, z.B. Nano oder über VS Code.

sudo nano /boot/config.txt

Wenn der mini UART als primary gesetzt ist (z.B. beim Raspberry Pi Zero W standardmäßig), dann fügt ihr die Zeile

enable_uart=1

hinzu. Dabei wir UART erst mal aktiviert und zusätzlich die VPU Clock fixiert.

Ist der mini UART auf secondary gemappt, dann müsst ihr die VPU Clock durch

core_freq=250

auf einen fixen Wert setzen.

Wir starten den Pi neu und sehen uns das Mapping an:

Serial Port Mapping mit Benutzung eines Device Tree Overlays
Serial Port Mapping mit Device Tree Overlay

Sieht gut aus! Der Raspberry Pi Zero W aus dem Beispiel hat nun umgemappte Ports und serial0 zeigt auf ttyAMA0.

Dieser Beitrag hat einen Kommentar

Schreibe einen Kommentar