3 votes

Ubuntu 20.04 ne diffuse le son qu'à travers un moniteur HDMI

Mon ordinateur de bureau ubuntu ne diffuse aucun son par les haut-parleurs, connectés à la carte son. Il est toujours diffusé par le moniteur HDMI, comme s'il s'agissait du seul périphérique de diffusion du son connecté.

J'ai ces paramètres, et la lecture se fait toujours via le moniteur HDMI. enter image description here

Lorsque je branche mes écouteurs, le système les voit dans le "périphérique de sortie", mais le son passe toujours par HDMI.

Lorsque je retire le moniteur HDMI (c'est mon moniteur secondaire), le son fonctionne bien.

UPD

cat /proc/asound/cards

 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xdf220000 irq 126
 1 [NVidia         ]: HDA-Intel - HDA NVidia
                      HDA NVidia at 0xdf080000 irq 17

Pouvez-vous nous aider ?

4voto

0voto

Ryan Davis Points 201

trouvé une meilleure option

L'utilisation de systemd comme décrit ci-dessous a fonctionné au démarrage mais pas lors du branchement de périphériques sur un système déjà en fonctionnement.

Pour ignorer le son lors du branchement à chaud et au démarrage, les règles udev sont la meilleure option.

Adapté de Dites à PulseAudio d'ignorer un périphérique USB en utilisant udev :

  1. utiliser lsusb pour identifier l'identifiant du vendeur/produit du dispositif que vous voulez ignorer.

    $ lsusb
    Bus 006 Device 003: ID 17e9:4307 DisplayLink LAPDOCK
    # <other devices I don't care about>

    le site ID partie qui nous donne les chiffres magiques

  2. créer un fichier de règles udev, par exemple /etc/udev/rules.d/80-ignore-audio-cards.rules qui définit une variable d'environnement pour l'impulsion audio.

    Pour moi, ça ressemblait à ça :

    ATTRS{idVendor}=="17e9", ATTRS{idProduct}=="4307", ENV{PULSE_IGNORE}="1"

    J'ai choisi le 80- pour le nom du fichier de façon arbitraire. Si vous avez des règles liées à pulseaudio, assurez-vous que votre nouveau fichier commence par un numéro plus bas

  3. redémarrez pour vous assurer qu'elle prend effet

Avec la règle udev en place, pulseaudio ignore complètement le périphérique.


réponse précédente :

J'ai rencontré le même problème, et les réponses données n'ont pas fonctionné pour moi à travers les redémarrages. Je pense que mon problème était une détection tardive des cartes ; lorsque pulseaudio a démarré, il n'a pas vu toutes les cartes, et une combinaison de module-switch-on-connect y module-switch-on-port-available était toujours en train de réinitialiser mes choix.

J'ai résolu ce problème en créant un unité utilisateur systemd à exécuter pactl set_card_profile "$MY_CARD_NAME" off quand je me suis connecté.

  1. trouvez le nom de la carte que vous ne voulez pas ; avec un peu de chance, le nom devrait suffire pour savoir laquelle :

    $ pactl list cards | grep -E '(Card|Name:)'
    Card #0
        Name: alsa_card.usb-DisplayLink_LAPDOCK_U3D2338486250-02
    Card #1
        Name: alsa_card.pci-0000_01_00.1
    Card #2
        Name: alsa_card.usb-Plantronics_Plantronics_Blackwire_5220_Series_2961D11C621649939CED8BF57E910BA5-00
    Card #3
        Name: alsa_card.usb-HD_Web_Camera_HD_Web_Camera_Ucamera001-02
    Card #4
        Name: alsa_card.pci-0000_00_1f.3

    Pour moi, c'était le "LAPDOCK" qui me volait mon audio.

  2. créer l'unité systemd, pour appeler pactl et désactiver la carte :

    $ mkdir -p ~/.config/systemd/user
    $ nano ~/.config/systemd/user/disable-cards.service

    Ajoutez ces contenus, en modifiant le ExecStart pour faire référence à la carte que vous voulez déposer :

    [Unit]
    Description=Disable card
    
    [Service]
    Type=simple
    Restart=on-failure
    ExecStart=pactl set-card-profile "alsa_card.usb-DisplayLink_LAPDOCK_U3D2338486250-02" off
    
    [Install]
    WantedBy=default.target
  3. activer le service : systemctl --user enable disable-cards

Maintenant, lorsque vous redémarrez, Systemd va continuer à essayer de déconnecter cette carte jusqu'à ce qu'il réussisse. Il y a probablement de meilleures systemd pour le faire fonctionner après le branchement du moniteur ; chaque appareil apparaît comme une "unité" (par exemple, dans la sortie de la commande systemctl --user ), ce qui pourrait être amélioré pour fonctionner lorsque vous branchez/débranchez des appareils.

L'autre solution consiste à modifier votre /etc/pulse/default.pa à utiliser module-switch-on-connect blacklist="REGEX_MATCHING_THE_CARD_NAME" mais cela n'a pas fonctionné pour moi ; il n'y a aucun moyen de personnaliser module-switch-on-port-available et je pense que c'est ce qui l'a sélectionné pour moi.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X