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.
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.