Sound Probleme mit einem Huawei Notebook und Ubuntu 24


Problem: Nach einem Upgrade von Ubuntu 22 zu Ubuntu 24 kam es bei einem Huawei Matebook zu einem Problem mit der Sound-Ausgabe. Es wurde kein Ton mehr abgespielt. 

Lösung: Durch die Verwendung der Skripte in diesem GitHub Repository von Smoren konnte das Problem gelöst werden. Die Soundausgabe funktioniert wieder.

Hintergrund: Das eigentliche Problem besteht darin, dass die Kopfhörer- und Lautsprecherkanäle im Soundkartentreiber vertauscht sind:

  • Wenn Kopfhörer angeschlossen sind, leitet das System den Ton fälschlicherweise über die Lautsprecher.
  • Sind die Kopfhörer nicht angeschlossen, versucht das System, den Ton über diese auszugeben.

Die Ursache liegt in einer ungewöhnlichen Hardware-Designentscheidung, bei der bestimmte Audio-Komponenten (sogenannte Widgets) nicht wie erwartet miteinander verbunden sind. Insbesondere ignoriert der interne Lautsprecher die Verbindungsauswahl und verwendet stattdessen den Wert der Kopfhörerbuchse. Zudem muss die Kopfhörerbuchse über GPIO-Befehle aktiviert werden, während der interne Lautsprecher explizit deaktiviert werden muss.

Zur Behebung dieses Problems implementiert das Repository einen Daemon, der das Ein- und Ausstecken der Kopfhörer überwacht und die Soundkarte entsprechend konfiguriert. Das Hauptskript huawei-soundcard-headphones-monitor.sh führt dabei folgende Schritte aus:

Initialisierung: Das Skript stellt sicher, dass es nicht mehrfach ausgeführt wird, und ermittelt den Index der Soundkarte.

Schleife zur Überwachung: In einer Endlosschleife wird der Status der Kopfhörerbuchse überprüft:
  • Wenn die Kopfhörer nicht angeschlossen sind, wird die Audioausgabe auf die Lautsprecher umgeleitet, der Lautsprecher aktiviert und die Kopfhörer deaktiviert.
  • Sind die Kopfhörer angeschlossen, wird die Ausgabe auf diese umgeleitet, der Lautsprecher deaktiviert und die Kopfhörer aktiviert.

Die Installation des Daemons erfolgt durch Ausführen des mitgelieferten install.sh-Skripts. Anschließend kann der Dienst mit systemd-Befehlen wie systemctl status huawei-soundcard-headphones-monitor überwacht und gesteuert werden.

Kommentare