Audio-Probleme Raspberry Pi 3 und 4

Problemsuche und Lösungsansätze

Immer wieder wird es belächelt, wenn man die 3.5mm-Klinkenbuchse für Audioausgaben nutzt.

Natürlich in ein Raspberry Pi keine hoch moderne Hifi-Anlage. Aber privat höre ich Musik oder Radio über ein Raspberry Pi 4.

Aber richtig ärgerlich ist es, wenn man nichts hört. Anleitungen gibt es hunderte in Foren, die bei mir nichts bewirkten. Deshalb zeige ich meinen Weg.

Das Packet alsa-utils installieren

Das Packet alsa-utils enthält einige Programme und Werkzeuge für die Nutzung von Alsa bereit. Beispiele sind hier aplay, alsamixer oder alsactl.

sudo apt install alsa-utils

Nur ein Beispiel: Mittels aplay -l kann man sich nun verfügbare Audiomodule zur Soundausgabe anzeigen.

Mitglied der Gruppe audio

Um etwas zu hören, muss man Mitglied der Gruppe audio sein.

Ob man das ist, erfährt man mit:

groups

Ist man kein Mitglied, muss man sich der Gruppe audio hinzufügen.

sudo adduser BENUTZER audio

Damit die Änderung wirksam wird, muss man sich abmelden und neu anmelden.

Standard-Gerät für Audio setzen

Möchte man die 3.5mm-Klinkenbuchse nutzen, muss sie als Standardgerät festgelegt werden. Das war bei mir nach Aktualisierung des Systems notwendig.

Mittels

cat /proc/asound/modules

erfährt man die Module für Audioausgaben, die das System erkannt hat. Man merkt sich die Zahl vor snd_bcm2835, das ist die Klinkenbuchse.

Nun editiert man mit Root-Rechten die Datei /usr/share/alsa/alsa.conf. Man sucht folgende Inhalte:


defaults.ctl.card 0
defaults.pcm.card 0

In diesen beiden Zeilen trägt man die entsprechende Zahl ein. Da Alsa im Kernel verankert ist, muss man das System neu starten, um die Änderung wirksam zu machen.

sudo reboot

Riesen Problem Raspberry Pi 4 mit HDMI und Klinkenbuchse

Ob dieses Problem beim Raspberry Pi 3 auch besteht, kann ich nicht sagen, da ich es nicht getestet habe.

Mein Raspberry Pi 4 hatte immer nichts zu tun. Also versuchte ich mal, einen Desktop-PC daraus zu machen. Ich gebe zu, ich bin ein wenig wahnsinnig.

Als ich da keinen Ton hatte, habe ich nach sinnlosem Umherkonfigurieren das Debian-Minimalsystem aufgespielt und hatte ... keinen Ton, obwohl es doch vorher ging.

Eher durch Zufall habe ich eine Lösung gefunden, die keine Lösung ist. Das ist mir klar.

Ich habe den HDMI-Stecker herausgezogen (Bildschirm ausschalten reicht nicht!), Raspberry Pi neu gestartet und es im Blindflug bedient.

Und siehe da, ich habe etwas gehört. Am laufenden System habe ich nun das HDMI-Kabel eingesteckt und alles ist gut. Das Komische dabei ist, dass erst eine Audioausgabe erfolgen muss, bevor man das HDMI-Kabel anschließt.

So habe ich mir einen Dienst gebastelt, der eine kurze Audioausgabe nach dem Booten erzeugt. Wenn ich diese höre, kann ich das HDMI-Kabel einstecken.

Ich erstellte die Datei /etc/systemd/system/myaudio.service mit folgendem Inhalt:


[Unit]
Description=Audio-Problem Analogausgang
# Andere Dienste erst starten lassen
#After=anderer.service nochEinAnderer.service

[Service]
Type=oneshot
RemainAfterExt=yes

# Bitte dein Benutzername eintragen
User=BENUTZERNAME

# Etwas warten, bis System bereit ist
# Ggf. Wartezeit erhöhen, wenn es so nicht stabil läuft
ExecStartPre=/usr/bin/sleep 3

# Eine Audiowiedergabe starten
ExecStart=/usr/bin/aplay /usr/share/sounds/alsa/Front_Left.wav

[Install]
WantedBy=multi-user.target

Ob Ihr dieses Beispiel für eine Audiowiedergabe nutzt oder ein ganzes Lied abspielen wollt, ist egal. Aber man hört es immer, wenn man das Raspberry Pi einschaltet. Damit es nicht irgendwann nervig wird, empfehle ich hier einen kurzen Jingle wiederzugeben.

Mittels

sudo systemctl start myaudio.service

kann man testen, ob der Dienst funktioniert. Und mittels

sudo systemctl enable myaudio.service

wird der Dienst beim Systemstart ausgeführt.

Also HDMI-Kabel raus, Raspberry Pi einschalten, warten bis man was hört, HDMI-Kabel einstecken.

Ich gebe zu, das ist ein Witz und keine Lösung. Und wie lange das HDMI-Stecker und Buchse mitmachen, .... Wenn jemand eine Lösung für dieses Problem gefunden hat, würde ich mich sehr freuen, wenn er mich hier teilhaben lässt. Bisher hatte ich nur eine Lösung gefunden, wo ich den Kernel selbst neu kompilieren müsste. Ich möchte aber doch bei originaler Firmware von Debian bleiben.

Standardmäßig nutze ich nun die Audiowiedergabe mittels Bluetooth, womit ich leben kann.

Audioqualität verbessern

Es wird immer auf den Audiochip geschimpft, dass er nicht gut ist. Meine Erfahrungen zeigten mir, dass es auch an der Software liegt, die den Chip anspricht.

Als Beispiel nehme ich das Programm ogg123 aus dem Packet vorbis-tools.

ogg123 mein_lied.ogg

Die Musik wird abgespielt. Aber da ist immer ein Kratzen oder Knattern dabei.

ogg123 -d au -f - mein_lied.ogg | aplay

Hierbei leitet ogg123 die Ausgabe auf STDOUT, was in der Pipe zu aplay übergeben wird.

Kein Knattern, kein Kratzen mehr. Wahrscheinlich kommt aplay mit der Hardware besser zurecht.

Das selbe stellte ich bei der Anwendung von espeak fest. Auch hier ist es als weiteres Beispiel möglich, aplay zu nutzen.

espeak -v de --stdout "Hallo Welt, schönes Wetter heute." | aplay