Linux

第二個螢幕辨識/連接但不顯示 - Ubuntu 18.04 / Arch Linux

  • May 8, 2019

我一直在嘗試讓我的第二台顯示器在全新安裝的 Ubuntu 18.04 LTS 上執行,儘管我也嘗試過 Arch Linux。我的主顯示器和輔助顯示器都顯示在顯示器的選項菜單中,並且解析度和刷新率的所有正確值似乎都是正確的。

我也可以將滑鼠和軟體視窗移動到另一個螢幕。它的作用就像它在幾乎所有方面都起作用,但實際上並沒有顯示任何東西。

有趣的是,從技術上講,顯示器正在接收信號,因為它沒有彈出“檢查信號線”(我的顯示器的“無信號”警告)。但是,它實際上並沒有在螢幕上顯示任何內容,而只是黑屏。

電腦規格/技術細節

我正在執行 1920x1080 顯示器(主要,工作)和 1280x1024 顯示器(次要,不工作)。我正在使用 AMD Radeon 380X。兩台顯示器都通過兩個 DVI 埠直接連接到顯卡。該設置在 Windows 10 中執行良好,這意味著我非常懷疑這是硬體問題。

診斷資訊

xrandr輸出:

Screen 0: minimum 320 x 200, current 3200 x 1080, maximum 16384 x 16384
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
HDMI-A-0 disconnected (normal left inverted right x axis y axis)
DVI-D-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 477mm x 268mm
  1920x1080     60.00*+
  1680x1050     59.88  
  1280x1024     75.02    60.02  
  1440x900      59.90  
  1280x960      60.00  
  1280x800      59.91  
  1152x864      75.00  
  1280x720      60.00  
  1024x768      75.03    70.07    60.00  
  832x624       74.55  
  800x600       72.19    75.00    60.32    56.25  
  640x480       75.00    72.81    66.67    59.94  
  720x400       70.08  
DVI-D-1 connected 1280x1024+1920+0 (normal left inverted right x axis y axis) 338mm x 270mm
  1280x1024     60.02*+  75.02  
  1280x800      60.02  
  1152x864      75.00  
  1280x720      60.02  
  1024x768      75.03    70.07    60.00  
  832x624       74.55  
  800x600       72.19    75.00    60.32    56.25  
  640x480       75.00    72.81    66.67    59.94  
  720x400       70.08  

我的兩個螢幕連接到 DVI-D-0(我的主要工作顯示器,即 1920x1080)和 DVI-D-1(我的“非工作”顯示器,即 1280x1024)。xrandr 說它們已連接,所以 xrandr 輸出看起來很好,因為我可以將滑鼠和所有東西移到第二台顯示器上,這似乎都是正確的,並且被 Ubuntu 和 Arch 辨識。

相關lspci -nnk輸出:

01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Tonga XT / Amethyst XT [Radeon R9 380X / R9 M295X] [1002:6938] (rev f1)
   Subsystem: Tul Corporation / PowerColor Radeon R9 380X [148c:2350]
   Kernel driver in use: amdgpu
   Kernel modules: amdgpu

那條線是唯一出現的 VGA 或與輸出相關的東西。如您所見,amdgpu 正在被使用,我將在後面的文章中更深入地討論它。

我也有一個可能提供圖形的英特爾處理器,但兩台顯示器都插入顯卡本身而不是主機板。英特爾圖形的 lspci 沒有顯示輸出,我也不認為應該這樣。

Xorg.0.log pastebin 連結:https ://pastebin.com/TCkfWjcg

我試過的

只是作為這一切的序言,我查看了整個網際網路並嘗試了我在一堆 Stack Exchange 網站和其他網站上看到的大多數修復程序。以下是我能記住的所有嘗試的列表。

  • **更改 xrandr 值:**我嘗試通過 xrandr 更改顯示器的值。我的 xrandr 輸出似乎事先很好,但是將它們更改為正確的值(即使 xrandr 已經表明監視器處於正確的值)並沒有解決我的問題。
  • **更改 xorg.conf:**我修改了 xorg.conf 以嘗試明確定義螢幕的功能,但這不起作用。為此,我在很大程度上遵循了 Arch wiki 上的說明。我只在 Arch 上對此進行了測試,但從我在網上閱讀的內容來看,這也應該適用於 Ubuntu。
  • 不同的發行版/全新安裝:我最初在 Arch 上遇到了這個問題,所以我在那裡更改了一些東西,然後進行了全新安裝以查看問題仍然存在。從那以後,我嘗試全新安裝 Ubuntu 18.04,但問題仍然存在。
  • **更新驅動程序:**我從 AMD 的網站下載了最新的 amdgpu 驅動程序並從那里安裝。重新啟動後它沒有破壞任何東西,我的主顯示器仍然工作正常,但沒有解決我的問題。
  • **驅動程序更改 amdgpu -> radeon:**我嘗試從 amdgpu 驅動程序更改為 radeon 驅動程序。儘管我通過 Arch Linux Wiki 頁面上的說明安裝了 radeon 驅動程序,但我無法讓我的系統真正使用它。amdgpu 一直被使用,當我通過 modprobe.d 中的 .conf 文件將其列入黑名單時,我的圖形顯示甚至無法啟動,我被迫返回終端並從那裡恢復所有內容,以便它重新開始.
  • **嘗試 amdgpu-pro:**我只在 Ubuntu 上嘗試過,但這並沒有解決我的問題,當我嘗試從 amdgpu 切換到 amdgpu-pro 時,由於它破壞了圖形 Ubuntu,因此我不得不重新安裝界面,不允許我輕鬆進入終端。
  • 降低非功能顯示器上的解析度:我嘗試將第二台顯示器的解析度降低到非常低的水平(800x600),因為顯然如果這樣可以解決問題,則表明可能存在驅動程序問題。我嘗試過的任何解析度都無法在顯示器上獲得任何類型的輸出。
  • **更改顯示器縱橫比:**我在某處看到使兩個顯示器具有相同的縱橫比可以解決此問題,因此我嘗試將輔助顯示器更改為 16:9,與我的主顯示器相同,但這並沒有解決我的問題。

我的懷疑

顯示器設置在 Windows 上執行良好,因此我將其作為沒有電線或連接器損壞且不是硬體問題的證據。

這可能也不是 xrandr (或 xorg 或 x server 或其他任何東西——我不太熟悉這些差異)的問題,因為那裡的所有輸出對我來說似乎都很好且正確。

我相信這可能是我的驅動程序設置的問題,因為它顯然已連接並獲得某種信號但實際上沒有顯示任何內容。根據我的閱讀,我的顯卡是受支持的,但我認為這可能是 amdgpu 或我的驅動程序設置的問題。我無法讓我的系統使用 radeon 而不是 amdgpu,這可能是相關的。

amdgpu.dc=0我通過 GRUB添加到我的核心啟動參數來解決這個問題。

有關解決方法的一些說明,請參閱此執行緒

部分答案:

我假設這Xorg.log是用現有的xorg.conf;啟動 X 伺服器的結果。如果不是,請刪除您的xorg.conf並重試。

Xorg.log一開始看起來不錯,尤其是

[     4.129] (II) AMDGPU(0): Output DVI-D-0 using initial mode 1920x1080 +0+0.
[     4.129] (II) AMDGPU(0): Output DVI-D-1 using initial mode 1280x1024 +1920+0

意味著您有一個幀緩衝區(“桌面”),並且每個輸出都顯示部分幀緩衝區。

然而,它並不止於此,一切看起來都正確初始化之後,我們得到

[     4.702] (II) AMDGPU(0): EDID vendor "SAM", prod id 161
...
[     4.817] (II) AMDGPU(0): Allocate new frame buffer 1920x1080
[     4.817] (II) AMDGPU(0):  => pitch 8192 bytes

所以我們第二次得到“SAM”的EDID,它在“DVI-D-1”上,它為它分配了一個新的幀緩衝區,我懷疑這個幀緩衝區與共享的“桌面”不同幀緩衝區。這意味著如果顯示的是這個幀緩衝區,您可以根據需要在“桌面”幀緩衝區上更改內容,但在“DVI-D-1”上它只會顯示另一個幀緩衝區。這很可能是黑色的,這就是你所看到的。

我從來沒有見過這樣的事情,我不知道會發生什麼。

我會向 AMDGPU 維護人員送出錯誤報告,看看他們是否有任何想法。包括完整的Xorg.log.

引用自:https://unix.stackexchange.com/questions/517453