Ich habe eine Weile mit dem gleichen Problem gelitten und hatte endlich die Gelegenheit, es mir anzusehen. Es stellt sich heraus, dass das Entladen und Neuladen des für das Audiogerät verantwortlichen Pulseaudio-Moduls für mich funktioniert.
Entladen und Nachladen des Moduls von Hand
Geben Sie im Terminalfenster den Befehl ein
pacmd list-cards
Suchen Sie in der Ausgabe das Audiogerät, dem Profile fehlen. Sie werden wahrscheinlich mehrere Karten erhalten und müssen die richtige finden. Meins sieht so aus:
[...]
index: 8
name: <alsa_card.usb-Logitech_Logitech_USB_Headset-00-Headset>
driver: <module-alsa-card.c>
owner module: 27
properties:
alsa.card = "1"
alsa.card_name = "Logitech USB Headset"
[... more output ...]
[...]
Schlagen Sie in Ihrer Ausgabe die Zeile " Besitzermodul " nach. Das ist das Modul, das Sie entladen müssen, aber Sie müssen zuerst die Parameter überprüfen, damit Sie es neu laden können. Befehl eingeben
pacmd list-modules
und suchen Sie das Modul, das Ihre Karte steuert. Wiederum sieht der relevante Teil der Ausgabe in meinem Fall so aus ( Index stimmt mit dem Besitzermodul aus der Ausgabe von Pacmd-Listenkarten überein ):
[...]
index: 27
name: <module-alsa-card>
argument: <device_id="1" name="usb-Logitech_Logitech_USB_Headset-00-Headset" card_name="alsa_card.usb-Logitech_Logitech_USB_Headset-00-Headset" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes card_properties="module-udev-detect.discovered=1">
used: 2
load once: no
properties:
[... more output ...]
[...]
Sie benötigen den Modulnamen und die Argumente, um es neu zu laden.
Geben Sie zum Entladen des Moduls den Befehl ein (ersetzen Sie den Modulindex durch den entsprechenden Wert aus Ihrer Ausgabe).
pacmd unload-module module-index
Geben Sie den Befehl ein, um das Modul nach dem Entladen neu zu laden
pacmd load-module module-name module-arguments
Ersetzen Modul-Namen und Modul-Argumente mit den Werten aus Ausgabe von pacmd list-Module . Lassen Sie die spitzen Klammern weg.
Jetzt sollte das Modul neu geladen werden und mit etwas Glück sind Ihre Headset-Profile wieder da.
Automatisierung anwenden
Die oben genannten Schritte sind eine Menge Arbeit, wenn Sie Ihr Gerät häufig zurücksetzen müssen, da sich der Modulindex ständig ändert und Sie ihn jedes Mal nachschlagen müssen. Ich habe ein Shell-Skript für mich geschrieben, um das Schlimmste zu automatisieren:
#!/bin/bash
if [ -z "$1" ]; then
echo "Pulseaudio has these cards:"
pacmd list-cards | grep 'name: '
exit 0
fi
MODULE_INDEX=`pacmd list-modules | tac | grep -A 10 -e "argument: .*$1" | grep 'index:' | head -n 1 | cut -d ':' -f 2 | tr -d ' '`
MODULE_NAME=`pacmd list-modules | tac | grep -A 10 -e "argument: .*$1" | grep 'name:' | head -n 1 | cut -d ':' -f 2 | tr -d '<>'`
MODULE_ARGUMENTS=`pacmd list-modules | tac | grep -e "argument: .*$1" | head -n 1 | cut -d ':' -f 2 | tr -d '<>'`
echo "Module index is $MODULE_INDEX"
echo "Module name: $MODULE_NAME"
echo "Module args: $MODULE_ARGUMENTS"
if [ -z "$MODULE_INDEX" ]; then echo "Could not find module index"; exit 0; fi
if [ -z "$MODULE_NAME" ]; then echo "Could not find module name"; exit 0; fi
if [ -z "$MODULE_ARGUMENTS" ]; then echo "Could not find module arguments"; exit 0; fi
echo "Unloading module"
pacmd unload-module $MODULE_INDEX
echo ""
echo "Reloading module"
pacmd load-module $MODULE_NAME $MODULE_ARGUMENTS
echo ""
Wenn das Skript ohne Argumente ausgeführt wird, listet es die Karten auf, die Pulseaudio kennt. Wenn ein Teil des Kartennamens als Argument angegeben wird, versucht das Skript, das entsprechende Pulseaudio-Modul zu entladen und neu zu laden.