web-dev-qa-db-ja.com

NVIDIA GeForce GTX 1050 TiでHDMIを介したオーディオなし

HP Omen 15上のUbuntu 17.10でカーネルv4.13.0-36-genericを実行しています。ハイブリッドNVIDIA Optimusグラフィックカードがあります。 Ubuntuで使用しようとしているのと同じHDMIケーブルを介して同じ外部モニターからオーディオを再生できるWindows 10をデュアルブートします。 Ubuntuの外部モニターでビデオを見ることができます。

buntuの組み込みのサウンド設定GUIとPulse Audio Volume Controlでオーディオ出力デバイスを切り替える を試しましたが、前者ではHDMIオーディオデバイスが表示されず、後者ではすべてのHDMIデバイスが未接続として表示されます。

Software&UpdatesのAdditional Driversタブからインストールされた独自のnvidia-384ドライバーを使用して、私は最も成功しました。このドライバーを使用すると、外部モニターでビデオを表示したり、ラップトップスピーカーでオーディオを再生したり、確実に起動したりできます。

ppa:graphics-drivers/ppanvidia-387nvidia-390を使用してみました bumblebeebumblebee-nvidia、およびprimus installed 、ただし、これらのドライバーを使用して、外部モニターで確実に起動したり、ビデオを表示したりすることさえできません。 /etc/bumblebee/xorg.conf.nouveau/etc/bumblebee/xorg.conf.nvidiaがGeForce GTX 1050 Tiをディスクリートグラフィックカードとして検出しましたが、これは間違っていると思いますが、これらの設定をオーバーライドしてグラフィックカードがハイブリッドであることを示す方法がわかりません。

nouveauを有効にした状態で確実に起動できないため、nouveauをブラックリストに登録しました。

NVIDIA-Linux-x86_64-390.25.run をインストールしましたが、再起動後にブートループでスタックしたため、Sudo nvidia-uninstallを実行しました。

低遅延カーネルがインストールされていません。

問題が発生した場合に備えてWaylandを無効にしました。

セキュアブートを無効にしました。

カーネルv4.15.4を使用してみましたが、確実に起動するのがさらに難しいことがわかりました。

GPUが接続されているPCIブリッジのPCIバスを再スキャンする を試しました。しかし、そのソリューションの作者が示唆しているように、ハイブリッドから専用のグラフィックモードに切り替える方法がわかりません。

$ 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)

ここまで来てくれた人に感謝します。どんな提案も大歓迎です。

5
lighthunter

https://github.com/hhfeuer/nvhda#install-using-dkms 問題を解決しました。 Pingと自分の両方によって上記でリンクされた同じ戦略 を活用します。ほとんどの場合、setpci -s 01:00.0 0x488.l=0x2000000:0x2000000は私のハードウェア設定では機能しませんでした。

1
lighthunter

Rudi Daemen に感謝します。 GTX 1060のオーディオの問題は、彼のソリューションによって解決されました。彼の解決策を試すことができます:

  1. ファイルを作成/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. ファイルを作成/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
    

    実行可能に設定します:chmod +x /usr/local/bin/fix-hdmi-audio.sh

  3. サービスを有効にします:systemctl enable fix-hdmi-audio.service

  4. apt install pavucontrolをインストールしてから、「PulseAudio Volume Control」を開始します。 「構成」タブには、「内部オーディオ」のみが表示されます。

  5. リブート。 HDMIを接続し、音楽を再生します。 「PulseAudio Volume Control」を開始します。 [構成]タブに、[内部オーディオ]と[HDA NVidia]が表示されます。
    [再生]タブでは、音楽プレーヤーの右側にボタンがあります。 「内部オーディオ」または「HDA NVidia」を選択できます。 「HDA NVidia」を選択します。

再起動後、次を確認できます。

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

lscpiの出力。

4
Ping Chu Hung

これはGTX 970M用ですが、1060などに適用されます。

setpciルートの問題は、lightdmがリロードされるため、複数の画面がリセットされることです。おそらく、3つのモニターがあるからです。

  • nVidiaカードに組み込まれた内蔵HDMI経由で接続された50インチTV
  • Intel iGPUで駆動される17インチ内部ディスプレイ
  • Thunderbolt経由で接続され、Intel iGPUで駆動される32インチTV

より大きな問題は、systemdおよびbashスクリプトのセットアップの複雑さです。

このリンクにあるc言語、カーネルベースのソリューション: https://bugs.freedesktop.org/show_bug.cgi?id=75985#c ははるかに優れています。プラットフォームにいくつかの変更を加えて、以下のリンクの大部分を含めました。


私のシステム仕様:

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

Maik Freudenbergによって投稿されたカーネルモジュール[コメント27]が私のシステムで正常に動作していることを確認できます。修正していただきありがとうございます。 HDMIオーディオデバイスが正常に機能するようになりました。

ファイルをダウンロードして解凍しました nvhda.tar.xz 。抽出用のディレクトリ~/nVidiaを作成しました。

ターミナルでコマンドを実行します。

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

この修正により、電源管理やシステムの安定性に関する問題に気付きませんでした。 HDMIオーディオは、システムの起動時、スリープからの再開後、HDMIケーブルの抜き差し後に機能します。

2