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/ppa のnvidia-387
とnvidia-390
を使用してみました bumblebee
、bumblebee-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
を実行しました。
セキュアブートを無効にしました。
カーネル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)
ここまで来てくれた人に感謝します。どんな提案も大歓迎です。
https://github.com/hhfeuer/nvhda#install-using-dkms 問題を解決しました。 Pingと自分の両方によって上記でリンクされた同じ戦略 を活用します。ほとんどの場合、setpci -s 01:00.0 0x488.l=0x2000000:0x2000000
は私のハードウェア設定では機能しませんでした。
Rudi Daemen に感謝します。 GTX 1060のオーディオの問題は、彼のソリューションによって解決されました。彼の解決策を試すことができます:
ファイルを作成/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
ファイルを作成/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
サービスを有効にします:systemctl enable fix-hdmi-audio.service
apt install pavucontrol
をインストールしてから、「PulseAudio Volume Control」を開始します。 「構成」タブには、「内部オーディオ」のみが表示されます。
リブート。 HDMIを接続し、音楽を再生します。 「PulseAudio Volume Control」を開始します。 [構成]タブに、[内部オーディオ]と[HDA NVidia]が表示されます。
[再生]タブでは、音楽プレーヤーの右側にボタンがあります。 「内部オーディオ」または「HDA NVidia」を選択できます。 「HDA NVidia」を選択します。
注
再起動後、次を確認できます。
01:00.1 Audio device: NVIDIA Corporation Device 10f1 (rev a1)
lscpi
の出力。
これはGTX 970M用ですが、1060などに適用されます。
setpci
ルートの問題は、lightdm
がリロードされるため、複数の画面がリセットされることです。おそらく、3つのモニターがあるからです。
より大きな問題は、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ケーブルの抜き差し後に機能します。