Parfois, le microphone de mon casque USB disparaît de la liste des périphériques d'entrée. La reconnexion du casque ne fonctionne pas, mais tuer Pulseaudio fait ce qui suit:
pulseaudio -k
Lorsque Pulseaudio démarre, mon casque USB s’affiche sous les périphériques d’entrée et de sortie et fonctionne correctement.
Le problème est que tuer Pulseaudio bloque également toutes les applications qui l'utilisent ou les laisse sans son. Cela signifie que je dois redémarrer Skype, Steam, XChat, tout lecteur vidéo en cours d'exécution (plantage de SMPlayer), tous les jeux en cours, etc.
Existe-t-il un moyen de forcer le rechargement de tous les périphériques sans tuer l'instance en cours de Pulseaudio?
Fait intéressant, lorsque je fais fonctionner mon casque USB en redémarrant Pulseaudio, la reconnexion du casque ne ferait apparaître que le périphérique de sortie. Je dois redémarrer Pulseaudio avec le casque connecté pour que le périphérique d'entrée s'affiche.
Edit: Checked pavuvontrol
sous "Configuration":
Après avoir redémarré Pulseaudio, un profil supplémentaire se terminant par "+ Entrée stéréo numérique" (ou quelque chose du genre) est disponible dans la liste et sélectionné par défaut.
Je souffre du même problème depuis un moment et j'ai enfin eu l'occasion de l'examiner. Il s'avère que le déchargement et le rechargement du module Pulseaudio responsable du périphérique audio fonctionnent pour moi.
Dans la fenêtre du terminal, entrez la commande
pacmd list-cards
et à partir de la sortie, recherchez le périphérique audio pour lequel il manque des profils. Vous obtiendrez probablement plusieurs cartes et devrez localiser la bonne. Le mien ressemble à ceci:
[...]
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 ...]
[...]
Dans votre sortie, recherchez la ligne "module propriétaire". C'est le module que vous devez décharger, mais vous devrez d'abord examiner ses paramètres pour pouvoir le recharger. Entrez la commande
pacmd list-modules
et localisez le module qui pilote votre carte. Encore une fois, la partie pertinente de la sortie dans mon cas ressemble à ceci ( index correspond module propriétaire à partir de la sortie de pacmd list-cards ):
[...]
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 ...]
[...]
Vous aurez besoin du nom du module et des arguments pour le recharger.
Pour décharger le module, entrez command (remplacez module-index par la valeur appropriée dans votre sortie)
pacmd unload-module module-index
Pour recharger le module après son déchargement, entrez command
pacmd load-module module-name module-arguments
Remplacez nom-module et module-arguments par les valeurs issues de la sortie de pacmd list-modules . Laissez les équerres.
Maintenant, le module doit être rechargé et, avec un peu de chance, vos profils de micro-casque sont de retour.
Les étapes ci-dessus représentent beaucoup de travail si vous devez souvent réinitialiser votre appareil, car l'index du module ne cesse de changer et vous devez le rechercher à chaque fois. J'ai écrit un script Shell pour automatiser le pire:
#!/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 ""
Lorsqu'il est exécuté sans arguments, le script répertorie les cartes connues de Pulseaudio. Lorsqu'une partie du nom d'une carte est donnée en argument, le script tente de décharger et de recharger le module Pulseaudio approprié.