web-dev-qa-db-ja.com

AMD Ryzen 7 4800HおよびNvidia RTX 2060を搭載したラップトップで20.04と同時に内部および外部モニターを動作させることはできません

ショートバージョン

Ubuntu 20.04では、内部モニターと外部モニターを同時に機能させることができません。既定のドライバーでのみ内部を持つことができますOR手動でインストールされたNVIDIAドライバーでのみ外部。ヘルプ!

私のシステムはASUS TUF A15ゲーミングラップトップ(FA506)です。 AMD®Ryzen™7 4800Hプロセッサーとグラフィックスを統合し、NVIDIA RTX 2060を搭載しています。

  • Ubuntu 20.04の新規インストール
  • グラフィックスを機能させるには、grubエントリにnouveau.modeset=0を設定する必要があります
  • 外部ディスプレイが検出されない
  • Ubuntu 20.04の[追加ドライバー]ダイアログに何も表示されない
  • nvidia-driver-440をインストールしてnvidia-xconfigを実行すると、nvidiaカードは機能しますが、外部ディスプレイ(usbcポート上のディスプレイポート)のみが検出され、内部ディスプレイは機能しません
  • /etc/X11/xorg.confを削除して再起動するだけで内部ディスプレイに戻ることができますが、外部ディスプレイとNVIDIAドライバーが使用されていません
  • nvidia-xconfigを再度実行して再起動することで、NVIDIAに戻すことができます

ロングバージョン

Ubuntu 20.04の新規インストール(プロプライエタリソフトウェアのインストールを有効にした後)の後、ラップトップはテキストでバックスクリーンにブートします

[    7.779369] ucsi_acpi USBC000:00: PPM init failed (-110)

ctrl + alt + F2で仮想端末に切り替えてログインできます。ログイン後、画面に1分以上スパムが送信され、次のメッセージが表示されます。

[   80.199703] nouveau 0000:01:00.0 fifo: SCHED_ERROR 08 []

に続く

[   80.206302] nouveau 0000:01:00.0 DRM: failed to idle channel 0 [DRM]

この後、ターミナルにアクセスできます。インターネットのアドバイスに基づいて、/etc/default/grubのa行を次のように変更して、LinuxのGrubエントリを変更できます。

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nouveau.modeset=0"

と実行

Sudo update-grub

再起動後、gdmログイン画面が表示され、グラフィカルセッションにログインできますが、外部に接続すると検出されません。 DisplayPort-USBCを介して接続する外部モニターの有無にかかわらず、xrandrの出力はHDMI

xrandr: Failed to get size of gamma for output default
Screen 0: minimum 1920 x 1080, current 1920 x 1080, maximum 1920 x 1080
default connected primary 1920x1080+0+0 0mm x 0mm
   1920x1080     77.00*

Nvidiaドライバーがインストールされていないため、最初にSudo apt updateSudo apt dist-upgradeを使用してシステムを更新し、再起動します。ソフトウェアとアップデートの「追加ドライバー」タブをチェックしましたが、「追加ドライバーはありません」と表示されています。 ubuntu-drivers devicesを実行しても何も表示されません。

次善の策は、aptを介してnvidiaドライバーをインストールすることです。

Sudo apt install nvidia-driver-440 

再起動後、モニターの状態は変更されていませんが、内部モニターのみです。 xrandr出力は同じですが、Nvidiaドライバーがインストールされています。 nvidia-smiは以下を示します:

Thu May 28 09:42:22 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.64       Driver Version: 440.64       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce RTX 2060    Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   46C    P0     9W /  N/A |      0MiB /  5934MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

nvidia-settingsは小さな空のウィンドウを示します。起動はターミナルプリントからです:

ERROR: Unable to load info from any available system


(nvidia-settings:2986): GLib-GObject-CRITICAL **: 09:45:58.786: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
** Message: 09:45:58.789: PRIME: No offloading required. Abort
** Message: 09:45:58.789: PRIME: is it supported? no

次に、Sudo nvidia-xconfigを実行して/etc/X11/xorg.confを生成します。再起動後、外部モニターIS機能している外部(ディスプレイポート)モニターに通常のgdmログイン画面が表示され、グラフィカルセッションにログインできます。残念ながら、内部モニターは検出されなくなり、 ASUSのロゴが表示されます。nvidia-settingsダイアログには、期待するすべてのオプションが含まれています(ターミナルから起動すると、以前と同じ出力が表示されます)。

kanehekiliの要求に応じて、xrandr -qの出力は次のようになります。

Screen 0: minimum 8 x 8, current 2560 x 1440, maximum 32767 x 32767
DP-0 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 597mm x 336mm
   2560x1440     60.00*+ 144.00   120.00    84.98  
   1920x1080     60.00    59.94    50.00  
   1680x1050     59.95  
   1440x900      59.89  
   1440x576      50.00  
   1440x480      59.94  
   1280x1024     75.02    60.02  
   1280x960      60.00  
   1280x720      60.00    59.94    50.00  
   1152x864      75.00  
   1024x768      75.03    70.07    60.00  
   800x600       75.00    72.19    60.32    56.25  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    72.81    59.94    59.93  
DP-1 disconnected (normal left inverted right x axis y axis)

lspci -vvの完全な出力は こちら です。ただし、グラフィックデバイスのエントリは次のとおりです。

01:00.0 VGA compatible controller: NVIDIA Corporation TU106 [GeForce RTX 2060] (rev a1) (prog-if 00 [VGA controller])
    Subsystem: ASUSTeK Computer Inc. Device 1e21
    Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
    Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    Latency: 0
    Interrupt: pin A routed to IRQ 94
    Region 0: Memory at fb000000 (32-bit, non-prefetchable) [size=16M]
    Region 1: Memory at b0000000 (64-bit, prefetchable) [size=256M]
    Region 3: Memory at c0000000 (64-bit, prefetchable) [size=32M]
    Region 5: I/O ports at f000 [size=128]
    Expansion ROM at fc000000 [virtual] [disabled] [size=512K]
    Capabilities: <access denied>
    Kernel driver in use: nvidia
    Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia

06:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Renoir (rev c6) (prog-if 00 [VGA controller])
    Subsystem: ASUSTeK Computer Inc. Renoir
    Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
    Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    Latency: 0, Cache Line Size: 64 bytes
    Interrupt: pin A routed to IRQ 255
    Region 0: Memory at d0000000 (64-bit, prefetchable) [size=256M]
    Region 2: Memory at e0000000 (64-bit, prefetchable) [size=2M]
    Region 4: I/O ports at c000 [disabled] [size=256]
    Region 5: Memory at fc500000 (32-bit, non-prefetchable) [size=512K]
    Capabilities: <access denied>
    Kernel modules: amdgpu

これを理解してください

私のインターネット検索から、このAMD/NVIDIAハイブリッドグラフィック構成と戦っているのは私だけではありません。聖杯は2つのグラフィックスカードをシームレスに統合して、可能な場合はバッテリーを節約し、必要に応じて個別のグラフィックスを使用しますが、両方のモニターが動作している状態で、永続的なパワーグズリングNVIDIAに満足します!

私の研究から、問題の核心は、nvidiaカードがディスプレイポートにハードワイヤードされており、統合されたグラフィックが内部モニターに接続されていることです。理想的には、nvidiaは統合されたグラフィックスにコピーできるバッファーにレンダリングできますが、詳細がわからず、これを構成する方法もわかりません。


注:一部のインターネットアドバイスでは、nvidiaドライバーをインストールする前にnvidia ppaを追加することを推奨しています。

Sudo add-apt-repository ppa:graphics-drivers/ppa
Sudo apt-get update

私は過去にこれを試しましたが、違いはありません。そのppaのnvidia-driver-440パッケージとubuntuリポジトリは同じバージョン440.82+really.440.64-0ubuntu6であり、[追加のドライバー]タブに変更はありません。

また、注意:セキュアブートが無効になっています


編集:この投稿 Ubuntu 20.04は2番目のモニターを認識しません

nvidia-driver-435のインストールを提案しますが、私の場合、これで問題が解決しません。


自分自身の質問に対して部分的な回答がありますが、それでもヘルプが必要です。

このreddit投稿を読んだ後 5.4であるUbuntu 20.04のカーネルバージョンが最新のAMD APUを適切にサポートしていないことが疑われました。これをテストするために、 こちら の手順を使用して、最新のカーネル5.6.15をインストールしました。新しいカーネルがインストールされたので、統合グラフィックスで実行しているときに、HDMIポートを外部モニターに使用できます。これは、xorg.conf Sudo rm /etc/X11/xorg.confを削除して再起動することです。しかし、nvidiaカードを使用する場合、私はまだ(usbc上の)ディスプレイポートしか使用できません。 NVIDIAを内部ディスプレイで使用できるようにしたいのですが。

3
gamblor

Ubuntu 20.04に同梱されているLinuxカーネルでルノワールの実験的なサポートを使用して、AMDグラフィックスを管理しました。

amdgpu.exp_hw_support=1/etc/default/grubに追加する必要があります。

これを行うには、編集するファイルをrootとして開きます。たとえば、次のように実行します。

Sudo edit /etc/default/grub

そして、GRUB_CMDLINE_LINUX_DEFAULT=で始まる行に、二重引用符で囲まれたパラメーターのリストに、amdgpu.exp_hw_support=1を追加します。たとえば、以前の内容に応じて、編集後の行は次のようになります。

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amdgpu.exp_hw_support=1"

ファイルを保存して終了し、次のコマンドを実行して変更を有効にします。

Sudo update-grub

そして再起動します。今、ヌーボードライバーをブラックリストに載せてください。これを行うには、例を使用して/etc/modprobe.d/に新しい構成ファイルを作成します

Sudo nano /etc/modprobe.d/blacklist-nouveau.conf

次のエントリを追加します。

blacklist nouveau
options nouveau modeset=0

変更を保存して終了します(nanoを使用している場合はctrl + x)。次にinitramfsを更新します

Sudo update-initramsfs -u

リブート。これは、内部ディスプレイと外部ディスプレイの両方をサポートします。

まだnvidiaグラフィックはありません。このマシン(Ryzen 7 4800HおよびRTX 2060を搭載したAsusTUF)でswitchabme AMD/Nvidiaグラフィックスを使用する方法を知っておくとよいでしょう。

編集:内部/外部モニター(HDMI)でのNVidiaカードのアクティブ化

統合グラフィックスのみ(amdgpuドライバー)を使用することに満足している場合は、これ以上読み進めないでください。 NVidiaグラフィックに変更するには、続行してください。

ターミナルで、NVidiaドライバの以前のインストールをすべて削除することから始めます。

Sudo apt-get remove --purge '^nvidia-.*'
Sudo apt-get install ubuntu-desktop
Sudo rm /etc/X11/xorg.conf (if present)

システムを再起動します。次に、NVidiaドライバを再インストールします

Sudo apt-get install nvidia-driver-440

Amdgpuおよびnvidiaドライバー用のX11構成ファイルを編集します。これらは/usr/share/X11/sorg.conf.d/にあります。まず、amdgpuのconfファイルを変更します。

Sudo nano /usr/share/X11/xorg.conf.d/10-amdgpu.conf

ファイルの内容を次のように変更します。

Section "OutputClass"
    Identifier "AMDgpu"
    MatchDriver "amdgpu"
    Driver "amdgpu"
    Option "PrimaryGPU" "no"
EndSection

次に、NVidiaのconfファイルを変更します。

Sudo nano /usr/share/X11/xorg.conf.d/10-nvidia.conf

次のエントリでファイルを編集します

Section "OutputClass"
   Identifier "nvidia"
   MatchDriver "nvidia-drm"
   Driver "nvidia"
   Option "AllowEmptyInitialConfiguration"
   Option "PrimaryGPU" "yes"
   ModulePath "/usr/lib/x86_64-linux-gnu/nvidia/xorg"
EndSection

システムを再起動します。この解決策は私にとってうまくいきました。これで、HDMIを使用した内部/外部両方のモニター構成用のNvidiaドライバーが動作するシステムができました(テスト用のディスプレイポートまたはUSB-Cはありません)。

Amdgpuに戻すには、「PrimaryGPU」エントリのフラグを「yes」から「no」に適宜切り替えます。このソリューションは最適ではないため、より堅牢なスワッピングソリューション(例:nvidiaオンデマンド)を引き続き探します。余談ですが、カーネルを更新しても適切に機能させることができませんでした(5.5.19および5.6.19を試しました)。新しいカーネルバージョンでこのラップトップに役立ついくつかの興味深い機能がありますが。 Nvidiaモジュールが私のインストールで正しくインストールされませんでした(おそらく、システムの他の部分との統合をコンパイルすると、より堅牢になる可能性があります)。

2
BertM