RPi400extBrd auf dem RPi5 unter RaspiOS (bookworm) in Betrieb nehmen -- FTDI-UART, RTC, I2S-Soundkarte

  • Inbetriebnahme des RPi400extBrds am RPi5

    Inhaltsverzeichnis dieses Threads
    • Beitrag #1 (dieser Beitrag)
      Inbetriebnahme am grafischen Desktop unter Raspberry Pi OS bookworm Desktop (Audiosystem PipeWire)
    • Beitrag #5
      Inbetriebnahme unter Raspberry Pi OS bookworm lite (Audiosystem ALSA)

    Hier beschreibe ich die Inbetriebnahme meines RPi400extBrds auf einem Raspberry Pi 5 unter Raspberry Pi OS bookworm Desktop vom 05.12.2023. Dieses Tutorial soll vor allem dazu dienen, folgende Komponenten des Boards auf dem RPi5 unter bookworm zum Laufen zu bringen:

    Es ist nämlich im Gegensatz zu früher beim RPi5 mitnichten so, dass man eine SD-Karte für einen RPi <= 4 einsteckt und die Sache läuft. Der 5er ist eine Diva, die will schon etwas mehr Aufmerksamkeit :bussi2: Die Probleme sind aber nicht spezifisch für mein RPi400extBrd, sondern treten genauso bei kleinen RTC-Breakoutboards (z.B. von Adafruit) auf oder bei den diversen I2S-Soundkarten von HiFiBerry.

    Dieses Tutorial wurde unter Raspberry Pi OS bookworm Desktop vom 05.12.2023 in beiden Varianten, 32bit und 64bit getestet. Wenigstens diesbezüglich gibt es keine Unterschiede.
    Alle Programmausgaben und Screenshots beziehen sich auf die 64bit-Variante.
    Mein Dank gilt insbesondere Jürgen Böhm , der mir seinen RPi5 zum Testen zur Verfügung gestellt hat :danke_ATDE:

    1. Anforderungen an die Leser des Tutorials
    • Flashen einer SD-Karte mit einem Image von Raspberry Pi OS.
    • Öffnen eines Terminalfensters in der Desktopumgebung von Raspberry Pi OS
    • Grundsätzliche Anwendung von Texteditoren (z.B. nano)
    • Bedeutung von /boot/firmware/config.txt,
      insbesondere die Tatsache, dass die jetzt (ab bookworm) unter /boot/firmware liegt und nicht mehr unter /boot. Siehe u.a. hier
    2. Betriebssystem herunterladen und vorbereiten, raspi-config

    Die Betriebssystem-Images wurde von https://www.raspberrypi.com/software/operating-systems/ heruntergeladen und anschließend auf eine SD-Karte geflasht. Wie dies z.B. mit dem RPi-Imager gemacht wird, ist hier beschrieben und ich unterstelle das entsprechende Wissen des Lesers.

    Nach dem ersten Hochfahren das System aktualisieren. Dazu wird in der Eingabezeile des Terminalfensters folgendes Kommando abgesetzt:
    sudo apt-get update && sudo apt-get upgrade

    Kontrolle der Version des Betriebssystems:
    uname -a

    Code
    Linux raspberrypi 6.1.0-rpi8-rpi-2712 #1 SMP PREEMPT Debian 1:6.1.73-1+rpt1 (2024-01-25) aarch64 GNU/Linux

    Hier ist wichtig, dass nach dem Update eine Version vom 25.01.2024 oder neuer vorliegt!

    Konfiguration des Betriebssystems mit raspi-config:
    sudo raspi-config

    In raspi-config werden in folgenden Menüpunkten die Einstellungen angepasst:

    3 Interface Options
        I1 SSH          Would you likle the SSH server to be enabled?  yes (nicht zwingend notwendig, aber immer wieder praktisch...)
        I4 I2C          Would you like the ARM I2C interface to be enabled?)  yes
        I5 Serial Port  Would you like a login shell to be accessible over serial?  no
                        Would you like the serial port hardware to be enabled?  yes
    5 Localisation Options
        L4 WLAN Country Select the country in which the Pi is to be used  DE

    3. UART-Verbindung von USB (FT232RNL) nach RPi-UART: GPIO14 (TxD) und GPIO15 (RXD)

    Voraussetzung ist, dass die beiden linken UART-Jumper (rot markiert) gebrückt sind, damit zwischen FTDI-RXD und RPi-GPIO14 (TXD) sowie zwischen FTDI-TXD und RPi-GPIO15 (RXD) eine Verbindung besteht, siehe Bild:

    Außerdem muss der FTDI-UART über die USB-Mini-Buchse des RPi400extBrds mit einem USB-Anschluss des RPi5 verbunden werden.

    Prüfen, ob die Gerätedateien der UART-Schnittstellen vorhanden sind:
    ls -l /dev/tty????

    Code
    crw-rw---- 1 root dialout 204, 64  4. Feb 22:11 /dev/ttyAMA0
    crw-rw---- 1 root dialout 188,  0  4. Feb 22:52 /dev/ttyUSB0

    Dabei ist /dev/ttyAMA0 die UART-Schnittstelle an den RPI-GPIOs und /dev/ttyUSB0 die vom FTDI-Chip per USB zur Verfügung gestellte Schnittstelle.

    Zum Test der seriellen Schnittstelle wird das Konsolenprogramm minicom installiert:
    sudo apt-get install minicom
    Der Test der seriellen Verbindung von USB zum RPi-UART mit minicom ist im Beitrag #37 meines Threads RPi400extBrd: schlizbäda's Extension Board für den Raspberry Pi 400 mit Soundkarte, RTC und UART beschrieben.

    Fazit:

    1. Die serielle Schnittstelle des RPi5 wird wie bei den Vorgängermodellen entweder mit raspi-config über den Menüpunkt 3 Interface Options --> I5 Serial Port oder (gleichwertig) über den Eintrag dtparam=uart0=on in /boot/firmware/config.txt aktiviert.
    2. Die FTDI-Schnittstelle des FT232RNL über USB wird durch den Linuxkernel zur Verfügung gestellt, sobald er über USB am RPi5 angesteckt wird.
    3. Am RPi (nicht nur beim 5er) funzt der FTDI sowohl an den USB2- als auch an den USB3-Ports.
    4. Real Time Clock (RTC)

    Der RPi5 hat im Gegensatz zu seinen Vorgängern bis einschließlich RPi4(00) eine eingebaute RTC, die als Gerätedatei /dev/rtc0 zur Verfügung gestellt wird. Weitere externe RTCs wie die DS3232 auf dem RPi400extBrd werden dann als /dev/rtc1 etc. bereitgestellt. Bei den RPis < 5 fehlt die on-board-RTC und externe RTCs werden als /dev/rtc0 angelegt. Das wäre jetzt weiter nicht soo schlimm, aber das Blöde ist, dass der symbolische Link /dev/rtc immer auf /dev/rtc0 zeigt. (Nicht nur) die grafische Oberfläche von Raspberry Pi OS verwendet die Gerätedatei /dev/rtc und damit beim RPi5 die interne RTC.

    Um dieses Schlamassel zu beseitigen, müssen in der /boot/firmware/config.txt folgende Einträge vorgenommen werden:

    Code
    dtparam=rtc=off
    dtoverlay=i2c-rtc,ds3231

    Die erste Zeile deaktiviert die interne RTC des RPi5
    Die zweite Zeile lädt den entsprechenden Treiber für die externe RTC auf dem RPi400extBrd. Die DS3232 ist kompatibel zur DS3231, hat aber zusätzlich noch 234 Bytes frei verwendbaren batteriegepufferten RAM-Speicher.

    Überprüfung mit
    ls -l /dev/rtc*

    Code
    lrwxrwxrwx 1 root root      4  4. Feb 22:11 /dev/rtc -> rtc0
    crw------- 1 root root 252, 0  4. Feb 22:11 /dev/rtc0
    5. I2S-Audio

    Hier ist der Witz, dass die I2S-Soundkarten in der dtoverlay-Zeile von /boot/firmware/config.txt als slave deklariert werden müssen:

    Code
    dtoverlay=hifiberry-dacplus,slave

    Dann muss nicht einmal mehr die ursprünglich vorhandene Audioeinstellung

    Code
    dtparam=audio=on

    auskommentiert werden.


    Im Desktop muss man jetzt rechts oben nur noch auf das Lautsprechersymbol rechtsklicken und die Soundkarte snd_rpi_hifiberry_dacplus als Default wählen, siehe Bild. Das System merkt sich diese Einstellung und die I2S-Soundkarte ist nach jedem Reboot ausgewählt.


    Und hier die /boot/firmware/config.txt:

    config.txt

  • RPi400extBrd auf dem RPi5 unter RaspiOS (bookworm) in Betrieb nehmen -- FTDI-UART, RTC, I2S-Soundkarte? Schau mal ob du hier fündig wirst!

  • Der 5er hat doch einen eigenen RTC, warum also "Deinen" zweiten nutzen ?!?!

    Nachtrag:
    Ok, habe bei Deinen Ausklapptexten gelesen, dass Du darauf eingehst und den internen RTC deaktivierst, warum auch immer.
    Warum das ein Schlamassel sein soll, ist mir auch nicht ganz klar.
    Ich kenne Deine Platine nicht aber kann man da nicht auch den RTC deaktivieren/ignorieren ??

    ;) Gruß Outi :D
    Pis: 2x Pi B (Rente) / 1x Pi B+ (Rente) / 1x Pi 2 B (Rente) / 2x Pi 3 B (RaspberryMatic / Repetier Server) / 2x Pi Zero 1.2 (B. Lite) / 2x Pi Zero 1.3 (B. Lite) / 2x Pi Zero W 1.1 (B. Lite) / 1x Pi Zero 2 (mal so, mal so) / 1x Pi 3 B+ (Tests) / 1x Pi 4 B 4GB (BW Lite (Webserver)) / Pi 400 (BW) / 1x Pi 5 (BW) / 2x Pi Pico / 2x Pi Pico W
    Platinen: Sense HAT / HM-MOD-RPI-PCB / RPI-RF-MOD / PiFi DAC+ V2.0 / TV HAT / Pi 5 Kühler HAT
    Kameras: orig. Raspberry Pi Camera Module V1 & V3 / PS3 Eye

  • Ich kenne Deine Platine nicht aber kann man da nicht auch den RTC deaktivieren/ignorieren ??

    Warum sollte man das tun? Mit der RPi400extBrd hat man schon einen Aufnahme für eine CR2032 und kann sich somit die 5-8 Euronen für die RTC-Batterie am RPi 5 schenken.

  • Outlaw
    Es geht eigentlich darum, wenn man die RTC auf meinem Board (oder irgendein anderes RTC-Board) nutzen will und nicht die interne RTC vom RPi5, z.B. weil man einen existierenden und funktionierenden Aufbau für einen RPi <= 4 hat. Im Spoiler 4 meines obigen Beitrags beschreibe ich, wie man den Treiber für die interne RTC des RPi5 deaktivieren kann und dann einen beliebigen anderen Treiber (hier für DS3231) aktiviert.
    Ein "Schlamassel" (ok, das Wort ist an dieser Stelle etwas hart!) ist es deswegen, weil der symbolische Link /dev/rtc bei allen RPis auf /dev/rtc0 zeigt, was beim RPi5 etwas anderes ist (nämlich die interne RTC) als bei den älteren RPis. Einen Linux-Dauernoob wie mich kann so etwas ganz schön ausbremsen...

    Ich kenne Deine Platine nicht aber kann man da nicht auch den RTC deaktivieren/ignorieren

    Ich plane ja immer noch, das RPi400extBrd nach Beseitigung kleinerer Fehlerchen in verschiedenen Konfigurationen zu vertreiben und da gibt es dann auch eine Variante ohne bestückter RTC. Ferner werde ich den I2C-Bus per Jumper-Steckbrücke abtrennbar gestalten.

  • Inbetriebnahme meines RPi400extBrds auf einem Raspberry Pi 5 unter Raspberry Pi OS bookworm lite vom 05.12.2023.

    Die Komponente UART wird wie in der Desktop-Variante des Betriebssystems installiert, siehe Beitrag #1

    Der Hauptunterschied besteht im Linux-Audiosystem:
    Während in der grafischen Desktopvariante PipeWire zum Einsatz kommt, das auf ALSA aufsetzt, wird bei lite das Audiosystem ALSA ohne zusätlich drübergestülpter Software verwendet. Dies hat zur Folge, dass Einträge in der Datei /etc/asound.conf oder bei benutzerspezifischer Festlegung in ~/.asoundrc vorgenommen werden müssen. --> Das hat es jetzt doch nicht gebraucht...

    Und während des Tests musste ich feststellen, dass die Sache derzeit nur mit 2023-12-11-raspios-bookworm-armhf-lite.img (32bit) läuft. Mit 2023-12-11-raspios-bookworm-arm64-lite.img werden Audiodaten nur mit halber Geschwindigkeit wiedergegeben!
    Im englischen Forum der RPi-Foundation habe ich hier eine Meldung abgesetzt: https://forums.raspberrypi.com/viewtopic.php?t=365943 (ich hoffe, die wird auch gelesen...)

    Aber der Reihe nach:

    1. Betriebssystem Raspberry Pi OS bookworm lite vorbereiten, raspi-config

    Nach dem Flashen der SD-Karte das System hochfahren. In der lite-Version erscheint kein Desktop, sondern nur ein Textbildschirm mit Login. Mit dem eingerichteten Benutzer sodann anmelden.
    Das System wird an dieser Stelle noch nicht aktualisiert (geupdatet), das kommt später...

    Kontrolle der Version des Betriebssystems:
    uname -a

    Code

    Code
    Linux raspberrypi 6.1.0-rpi7-rpi-v8 #1 SMP PREEMPT Debian 1:6.1.63-1+rpt1 (2023-11-24) aarch64 GNU/Linux

    Konfiguration des Betriebssystems mit raspi-config:
    sudo raspi-config

    In raspi-config werden in folgenden Menüpunkten die einstellungen angepasst:

    3 Interface Options
        I1 SSH          Would you likle the SSH server to be enabled?  yes (nicht zwingend notwendig, aber immer wieder praktisch...)
        I5 Serial Port  Would you like a login shell to be accessible over serial?  no
                        Would you like the serial port hardware to be enabled?  yes
    5 Localisation Options
        L4 WLAN Country Select the country in which the Pi is to be used  DE

    --> Jetzt einen Reboot durchführen.

    2. UART-Funktion testen

    Voraussetzung ist, dass die beiden linken UART-Jumper (rot markiert) gebrückt sind, damit zwischen FTDI-RXD und RPi-GPIO14 (TXD) sowie zwischen FTDI-TXD und RPi-GPIO15 (RXD) eine Verbindung besteht, siehe Bild:

    Außerdem muss der FTDI-UART über die USB-Mini-Buchse des RPi400extBrds mit einem USB-Anschluss des RPi5 verbunden werden.

    Prüfen, ob die Gerätedateien der UART-Schnittstellen vorhanden sind:
    ls -l /dev/tty????

    Code

    Code
    crw-rw---- 1 root dialout 204, 64  4. Feb 22:11 /dev/ttyAMA0
    crw-rw---- 1 root dialout 188,  0  4. Feb 22:52 /dev/ttyUSB0

    Dabei ist /dev/ttyAMA0 die UART-Schnittstelle an den RPI-GPIOs und /dev/ttyUSB0 die vom FTDI-Chip per USB zur Verfügung gestellte Schnittstelle.

    Zum Test der seriellen Schnittstelle wird das Konsolenprogramm minicom installiert:
    sudo apt-get install minicom
    Der Test selbst besteht aus Senden und Emfpangen der seriellen Daten von der Gegenseite. Dazu in zwei Konsolen jeweils einmal eine minicom-Sitzung starten:
    minicom -D /dev/ttyAMA0 -b 9600 # in der Startkonsole, die durch Drücken von <Ctrl-F1> aktiviert wird
    minicom -D /dev/ttyUSB0 -b 9600 # in der zweiten Konsole, die durch Drücken von <Ctrl-F2> aktiviert wird
    Jetzt in beiden Konsolen ein paar Zeichen eingeben. Die erscheinen in der jeweils anderen Konsole.

    Details zur minicom-Konfiguration (RTS/CTS-Hanshake) beider seriellen Endpunkte ist im Beitrag #37 meines Threads RPi400extBrd: schlizbäda's Extension Board für den Raspberry Pi 400 mit Soundkarte, RTC und UART beschrieben.

    Fazit:

    1. Die serielle Schnittstelle des RPi5 wird wie bei den Vorgängermodellen entweder mit raspi-config über den Menüpunkt 3 Interface Options --> I5 Serial Port oder (gleichwertig) über den Eintrag dtparam=uart0=on in /boot/firmware/config.txt aktiviert.
    2. Die FTDI-Schnittstelle des FT232RNL über USB wird durch den Linuxkernel zur Verfügung gestellt, sobald er über USB am RPi5 angesteckt wird.
    3. Am RPi (nicht nur beim 5er) funzt der FTDI sowohl an den USB2- als auch an den USB3-Ports.date
    3. I2S-Audio

    aplay -l liefert:

    Code
    **** List of PLAYBACK Hardware Devices ****
    card 0: vc4hdmi0 [vc4-hdmi-0], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: vc4hdmi1 [vc4-hdmi-1], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
      Subdevices: 1/1
      Subdevice #0: subdevice #0

    --> Dies sind die beiden HDMI-Soundkarten

    Einfügen der Treiberdefinition für den PCM5122 in der /boot/firmware/config.txt:
    dtoverlay=hifiberry-dacplus,slave

    Jetzt den RPi5 neu starten, um die Änderungen in der config.txt zu aktivieren.

    aplay -l liefert nach Neustart:

    Code
    **** List of PLAYBACK Hardware Devices ****
    card 0: sndrpihifiberry [snd_rpi_hifiberry_dacplus], device 0: HiFiBerry DAC+ HiFi pcm512x-hifi-0 [HiFiBerry DAC+ HiFi pcm512x-hifi-0]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: vc4hdmi0 [vc4-hdmi-0], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 2: vc4hdmi1 [vc4-hdmi-1], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
      Subdevices: 1/1
      Subdevice #0: subdevice #0

    Hinzugekommen ist jetzt als card 0 die HiFiBerry-kompatible Soundkarte sndrpihifiberry.

    Test mit
    speaker-test -c 2 -t wave # Parameter -t wave: Eine Frauenstimme sagt, aus welchem Lautsprecher der Ton kommt.

    oder mit Musik:
    sudo apt install alsaplayer-text # Textvariante des Alsaplayers installieren
    alsaplayer <Audiodatei>

    Jetzt das Betriebssystem updaten, damit dann auch die RTC aktiviert werden kann:
    sudo apt update && sudo apt upgrade
    reboot

    Wenn jetzt nach dem Update die Audioausgabe zu langsam ist, dann wurde versehentlich(?) mit bookworm lite 64bit gearbeitet. Hier muss auf eine Antwort der RPi-Foundation zu meiner Meldung gewartet werden...

    4. Real Time Clock (RTC)

    Um die RTC auf dem RPi400extBrd unter Raspberry Pi OS bookworm lite in Betrieb nehmen zu können, muss das Betriebssystem aktualisiert worden sein! Erst dann beißen in der /boot/firmware/config.txt die folgenden Zeilen an.

    Da der RPi5 bereits über eine eingebaute RTC verfügt, muss diese deaktiviert werden, wenn man die vom RPi400extBrd verwenden will. Details siehe Spoiler 4 von Beitrag #1.
    In der ersten Zeile wird die onboard-RTC des RPi5 deaktiviert,
    in der zweiten wird der Treiber der RTC des RPi400extBrds geladen.

    Code
    dtparam=rtc=off
    dtoverlay=i2c-rtc,ds3231

    Überprüfung mit
    ls -l /dev/rtc*

    Code
    lrwxrwxrwx 1 root root      4  4. Feb 22:11 /dev/rtc -> rtc0
    crw------- 1 root root 252, 0  4. Feb 22:11 /dev/rtc0
  • Den Effekt mit der halben Geschwindigkeit hatte ich auch.

    MfG

    Jürgen

    Edit: Eine Hifiberry DACplus macht das auch.

  • Ich habe noch einen Fehler gefunden:

    Code
    speaker-test -c 2 -t wave
    
    speaker-test 1.2.8
    
    Wiedergabe-Gerät ist default
    Stream-Parameter sind 48000 Hz, S16_LE, 2 Kanäle
    WAV-Datei(en)
    ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Verbindung verweigert
    
    Fehler beim Öffnen des Gerätes: -111, Verbindungsaufbau abgelehnt

    Audacious läuft aber, mit halber Geschwindigkeit.

    Das ist jetzt die Hifiberry DAC+, aber den abgelehnten Verbindungsaufbau hatte ich auch mit der rpi400extbrd

    MfG

    Jürgen

    Edit: Hier handelt es sich um einen RPi5 mit Bookworm64-Lite und nachträglich aufgesetzten Mate-Desktop.

  • Und während des Tests musste ich feststellen, dass die Sache derzeit nur mit 2023-12-11-raspios-bookworm-armhf-lite.img (32bit) läuft. Mit 2023-12-11-raspios-bookworm-arm64-lite.img werden Audiodaten nur mit halber Geschwindigkeit wiedergegeben!

    Da müssen ja auch doppelt so viele bits abgespielt werden. :lol:

    SCNR! :stumm:


    Vielleicht spuckt bezüglich halbe Geschwindigkeit dmesg irgendwas brauchbares aus? :conf:

  • Da müssen ja auch doppelt so viele bits abgespielt werden. :lol:

    Stimmt! Daran habe ich ja noch gar nicht gedacht :D

  • speaker-test -c 2 -t wave

    Code
    dmesg -T
    [Mo Feb 26 20:33:44 2024] pcm512x 1-004d: No SCLK, using BCLK: -2
    [Mo Feb 26 20:33:44 2024] pcm512x 1-004d: No SCLK, using BCLK: -2
    [Mo Feb 26 20:34:10 2024] pcm512x 1-004d: No SCLK, using BCLK: -2
    Code
    journalctl
    Feb 26 20:33:45 raspi29 pulseaudio[8710]: Failed to find a working profile.
    Feb 26 20:33:45 raspi29 pulseaudio[8710]: Failed to load module "module-alsa-card" (argument: "device_id="1" name="platform-107c706400.hdmi" card_name="alsa_card.platform-107c706400.hdmi" namereg_fail=false tsched=no fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1""): initialization failed.
    Feb 26 20:33:45 raspi29 kernel: pcm512x 1-004d: No SCLK, using BCLK: -2
    Feb 26 20:33:45 raspi29 kernel: pcm512x 1-004d: No SCLK, using BCLK: -2

    Edit: Trotz hdmi, ich habe eine Bass-Männerstimme mit dem Kopfhörer gehört

    MfG

    Jürgen

  • Moment, da ist noch mehr:

    Das ist das was ich der Soundkarte zuordnen konnte.

    MfG

    Jürgen

  • Ich tippe da auf ein Treiberproblem.

    BTW Bei https://support.hifiberry.com/ werden wohl die Leitungen glühen, denn da kommt nur "Service Unavailable".


    Jürgen Böhm Du hast ein OS mit Desktop oder liege ich da falsch? Die Frage nur aus Interesse wegen "pipewire".

  • Du hast ein OS mit Desktop oder liege ich da falsch?

    Bookworm64-Lite mit aufgesetzem Mate-Desktop

    Gerade gefunden, siehe letzter Abschnitt:
    Pi5 compatibility with HiFiBerry products | HiFiBerry

    MfG

    Jürgen

  • Hi Jürgen,

    du bist ja gleich fleißiger als ich bei der Inbetriebnahme meines Boards auf dem RPi5!
    Ich danke Dir ganz herzlich!

  • du bist ja gleich fleißiger als ich bei der Inbetriebnahme meines Boards auf dem RPi5!

    Läuft trotzdem nur mit halber Geschwindigkeit.
    Der Bug ist noch da.

    MfG

    Jürgen

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!