web-dev-qa-db-fra.com

Pas d'audio sur HDMI sur le NVIDIA GeForce GTX 1050 Ti

J'utilise le noyau v4.13.0-36-generic sur Ubuntu 17.10 sur un HP Omen 15. J'ai une carte graphique hybride NVIDIA Optimus. Je double-amorce Windows 10, qui peut lire de l'audio à partir du même moniteur externe via le même câble HDMI que j'essaie d'utiliser dans Ubuntu. Je peux voir la vidéo sur mon moniteur externe dans Ubuntu.

J'ai essayé commutation de mon périphérique de sortie audio dans les paramètres de son intégrés dans l'interface utilisateur graphique d'Ubuntu et le contrôle du volume Pulse Audio , mais dans l'ancien, aucun périphérique audio HDMI n'apparaît et, dans ce dernier, tous les périphériques HDMI apparaissent comme étant débranchés .

J'ai eu le plus de succès avec le pilote propriétaire nvidia-384 installé via l'onglet Pilotes supplémentaires de Logiciels et mises à jour. À l'aide de ce pilote, je peux voir des vidéos sur mon moniteur externe, lire de l'audio via les haut-parleurs de mon ordinateur portable et démarrer de manière fiable.

J'ai essayé d'utiliser nvidia-387 et nvidia-390 de ppa: graphics-drivers/ppa avec bumblebee, bumblebee-nvidia et primus installé , mais je ne parviens même pas à démarrer ou à voir la vidéo sur mon moniteur externe utilisant ces pilotes de manière fiable. J'ai constaté que /etc/bumblebee/xorg.conf.nouveau et /etc/bumblebee/xorg.conf.nvidia avaient détecté ma GeForce GTX 1050 Ti en tant que carte graphique discrète, ce qui, à mon avis, est incorrect, mais je ne sais pas comment redéfinir ces paramètres pour indiquer que ma carte graphique est un système hybride.

J'ai mis nouveau sur la liste noire, car je ne parviens pas à démarrer de manière fiable avec le nouveau activé.

J'ai installé NVIDIA-Linux-x86_64-390.25.run , mais après le redémarrage, je suis resté bloqué dans une boucle de démarrage. J'ai donc lancé Sudo nvidia-uninstall.

Je n'ai pas de noyau lowlatency installé.

J'ai désactivé Wayland au cas où cela poserait des problèmes.

J'ai désactivé le démarrage sécurisé.

J'ai essayé d'utiliser le noyau v4.15.4, mais je n'ai trouvé que plus difficile encore de démarrer de manière fiable.

J'ai essayé nouvelle analyse du bus PCI sur le pont PCI auquel mon GPU est connecté . Je ne sais pas comment passer du mode graphique hybride au mode graphique dédié, comme le suggère l'auteur de cette solution, c'est peut-être pour cela que cela n'a pas fonctionné pour moi.

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC295 Analog [ALC295 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

$ lspci
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers (rev 05)
00:01.0 PCI bridge: Intel Corporation Skylake PCIe Controller (x16) (rev 05)
00:02.0 VGA compatible controller: Intel Corporation Device 591b (rev 04)
00:04.0 Signal processing controller: Intel Corporation Skylake Processor Thermal Subsystem (rev 05)
00:14.0 USB controller: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller (rev 31)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-H Thermal subsystem (rev 31)
00:16.0 Communication controller: Intel Corporation Sunrise Point-H CSME HECI #1 (rev 31)
00:17.0 SATA controller: Intel Corporation Sunrise Point-H SATA Controller [AHCI mode] (rev 31)
00:1c.0 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #1 (rev f1)
00:1c.4 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #5 (rev f1)
00:1c.5 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #6 (rev f1)
00:1c.6 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #7 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Sunrise Point-H LPC Controller (rev 31)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-H PMC (rev 31)
00:1f.3 Audio device: Intel Corporation Device a171 (rev 31)
00:1f.4 SMBus: Intel Corporation Sunrise Point-H SMBus (rev 31)
01:00.0 3D controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Mobile] (rev a1)
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS522A PCI Express Card Reader (rev 01)
04:00.0 Network controller: Intel Corporation Wireless 7265 (rev 61)
05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)

Un grand merci à tous ceux qui ont atteint ce stade. Toutes les suggestions seraient grandement appréciées.

5
lighthunter

https://github.com/hhfeuer/nvhda#install-using-dkms résolu mon problème. Il tire parti de la même stratégie que celle décrite ci-dessus par Ping et moi-même . setpci -s 01:00.0 0x488.l=0x2000000:0x2000000 n'a probablement pas fonctionné avec la configuration matérielle.

1
lighthunter

Merci beaucoup à Rudi Daemen . Le problème audio de ma GTX 1060 a été résolu par sa solution. Vous pouvez essayer sa solution:

  1. Créer le fichier /etc/systemd/system/fix-hdmi-audio.service

    [Unit]
    Description=nVidia HDMI Audio Fixer
    Before=systemd-logind.service display-manager.service
    After=module-init-tools.service
    
    [Service]
    Type=oneshot
    ExecStart=/usr/local/bin/fix-hdmi-audio.sh
    
    [Install]
    WantedBy=multi-user.target
    
  2. Créer le fichier /usr/local/bin/fix-hdmi-audio.sh

    #!/bin/sh
    setpci -s 01:00.0 0x488.l=0x2000000:0x2000000
    rmmod nvidia-uvm nvidia-drm nvidia-modeset nvidia
    sh -c 'echo 1 > /sys/bus/pci/devices/0000:01:00.0/remove'
    sh -c 'echo 1 > /sys/bus/pci/devices/0000:00:01.0/rescan'
    modprobe nvidia nvidia-modeset nvidia-drm nvidia-uvm
    

    et le définir sur runnable: chmod +x /usr/local/bin/fix-hdmi-audio.sh

  3. Activer le service: systemctl enable fix-hdmi-audio.service

  4. Installez apt install pavucontrol puis lancez "Contrôle du volume PulseAudio". Dans l'onglet "Configuration", vous ne pouvez voir que "Audio interne".

  5. Redémarrez. Branchez HDMI et écoutez de la musique. Démarrez "Contrôle du volume PulseAudio". Dans l'onglet "Configuration", vous devriez voir "Audio interne" et "HDA NVidia".
    Dans l'onglet "Lecture", il y a un bouton sur le côté droit de votre lecteur de musique. Vous pouvez choisir "Audio interne" ou "HDA NVidia". Choisissez "HDA NVidia".

Remarque

Après le redémarrage, vous pouvez voir

01:00.1 Audio device: NVIDIA Corporation Device 10f1 (rev a1)

dans les sorties de lscpi.

3
Ping Chu Hung

Notez que ceci s’applique à une GTX 970M mais s’applique à 1060 et autres.

Le problème pour moi avec la route setpci est la réinitialisation de plusieurs écrans car lightdm est rechargé. Peut-être parce que j'ai trois moniteurs:

  • Téléviseur 50 "connecté via une carte HDMI intégrée câblée HDMI à nVidia
  • Écran interne 17 "piloté par Intel iGPU
  • Téléviseur 32 "connecté via Thunderbolt et piloté par Intel iGPU

Le problème le plus important est la complexité de la configuration des scripts systemd et bash.

La solution basée sur le noyau c, trouvée sur ce lien: https://bugs.freedesktop.org/show_bug.cgi?id=75985#c est de loin supérieure. J'ai inclus l'essentiel du lien ci-dessous avec quelques modifications sur ma plate-forme.


Mes spécifications système:

i7-6700HQ + GTX 970M
Linux kernel version: 4.13.0-26-generic
Nvidia driver Version: 384.130
OS: Ubuntu 16.04.5 LTS

Je peux confirmer que le module de noyau, posté par Maik Freudenberg [Commentaire 27], fonctionne correctement sur mon système. Merci pour la réparation. Le périphérique audio HDMI fonctionne maintenant comme il se doit.

Je télécharge et extrait le fichier nvhda.tar.xz . J'ai créé le répertoire ~/nVidia pour l'extraction.

Exécuter des commandes dans le terminal:

cd ~/nVidia
make
Sudo make install
echo nvhda | Sudo tee -a /etc/initramfs-tools/modules
echo "options nvhda load_state=1" | Sudo tee /etc/modprobe.d/nvhda.conf
Sudo update-initramfs -u # This updated newest kernel 4.15.0-26
Sudo update-initramfs -u -k `uname -r` # Update booted 4.13.0-36
reboot

Avec ce correctif, je n’ai remarqué aucun problème de gestion de l’alimentation ou de stabilité du système. L’audio HDMI fonctionne au démarrage du système, après la sortie du mode veille, après le branchement/débranchement du câble HDMI.

2
WinEunuuchs2Unix