1

I have been trying to get my second monitor working on a fresh install of Ubuntu 18.04 LTS, though I've experimented with Arch Linux as well. Both my primary and secondary monitor show up in the options menu for Displays, and all correct values for resolutions and refresh rates seem to be correct.

I can move my mouse and software windows over to the other screen as well. It acts like it's functional in pretty much every aspect but doesn't actually display anything.

What's interesting is that the monitor is technically getting a signal, because it doesn't pop up with "Check Signal Cable" (my monitor's "No Signal" warning). However, it's not actually showing anything on-screen, but rather just a black screen.

Computer Specs / Technical Details

I am running a 1920x1080 monitor (primary, working) and 1280x1024 monitor (secondary, not working). I am using an AMD Radeon 380X. Both monitors are directly connected to the graphics card via two DVI ports. The setup works fine in Windows 10, meaning I very much doubt this is a hardware issue.

Diagnostic Information

xrandr output:

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  

My two screens are hooked up to DVI-D-0, my main, working monitor that is 1920x1080, and DVI-D-1, my "non-working" monitor, which is 1280x1024. xrandr says they are connected, so the xrandr output seems fine and since I can move my mouse and everything over to the second monitor, this seems to all be correct and recognized by Ubuntu and Arch.

Relevant lspci -nnk output:

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

That line is the only VGA or output-related thing that shows up. As you can see, amdgpu is being used, which I'll go a little more in-depth about later in the post.

I have an intel processor as well that could potentially provide graphics, but both monitors are plugged into the graphics card itself and not to the motherboard. No output shows up with lspci for intel graphics, nor do I believe it should.

Xorg.0.log pastebin link: https://pastebin.com/TCkfWjcg

What I've Tried

Just to preface this all, I've looked at all over the internet and tried most fixes that I've seen on a bunch of Stack Exchange websites and on others. The following is a list of everything I've tried that I can remember.

  • Changing xrandr Values: I tried changing the values of my monitors via xrandr. My xrandr output seemed to be fine beforehand, but changing them to the correct values (even though xrandr already indicated that the monitors were at the correct values) did not fix my problem.
  • Changing xorg.conf: I modified my xorg.conf to try and explicitly define what the screens would do, but this didn't work. I largely followed the instructions on the Arch wiki for this. I only tested this on Arch, but from what I read online this should also apply to Ubuntu.
  • Different Distro / Fresh Install: I initially had this issue on Arch, so I changed stuff on there, then did a fresh install to see that the issue still persisted. I've since tried a fresh install of Ubuntu 18.04 and the issue has persisted.
  • Updating Drivers: I downloaded the latest amdgpu drivers from AMD's website and installed from there. It didn't break anything after a reboot, and my primary monitor still worked fine, but didn't fix my issue.
  • Driver Change amdgpu -> radeon: I tried changing from the amdgpu driver to the radeon driver. I was not able to make my system actually use the radeon driver, despite me installing it via the instructions on the Arch Linux Wiki page. amdgpu was always used, and when I blacklisted it via a .conf file in modprobe.d, my graphical display wouldn't even start up and I was forced to drop back into the terminal and revert everything from there so that it would start again.
  • Trying amdgpu-pro: I only tried this on Ubuntu, but this did nothing to fix my issues, Trying this caused me to have to do a fresh install when I tried to switch from amdgpu to amdgpu-pro due to it breaking the graphical Ubuntu interface and not allowing me to easily drop down into a terminal.
  • Lowering Resolution on Nonfunctional Monitor: I tried lowering the resolution on my second monitor to something really low (800x600), because apparently if that fixes it, that indicates a probable driver issue. I was never able to get any sort of output on the monitor with any resolution that I tried.
  • Changing Monitor Aspect Ratio: I saw somewhere that making both monitors the same aspect ratio could fix this, so I tried changing my secondary monitor to 16:9, the same as my primary monitor, but this didn't fix my issue.

My Suspicions

The monitor setup works fine on Windows, so I'm taking that as proof that no wires or connectors are broken and that it's not a hardware issue.

This probably also isn't an issue specifically with xrandr (or xorg, or x server, or whatever - I'm not super familiar with the differences) because all the output from there seems fine and correct to me.

I believe that this is probably an issue with my driver setup due to it being evidently connected and getting some sort of signal but not actually displaying anything. From what I've read, my graphics card is supported, but I think it might be an issue with amdgpu or my driver setup somehow. I'm not able to make my system use radeon instead of amdgpu, which might be related.

  • First place to look is /var/log/Xorg.0.log to see what the X server thinks it's doing. The xrandr output looks like the X server thinks it's properly displaying stuff. Also try changing the resolution of the second monitor with xrandr, and see what happens. You can also play with xsetroot -solid red etc. to make sure the framebuffer isn't just black. – dirkt May 7 at 6:04
  • @dirkt I've gone ahead and edited my post with the contents of the Xorg.0.log file. It was located in $HOME/.local/share/xorg/ for me. Nothing looks wrong but I don't know exactly what I'm looking for so maybe you or someone else could take a look. I have already tried changing the resolution of the second monitor via xrandr, which doesn't work. xroot -solid red appears to do nothing. – Ninjavocado May 7 at 14:49
1

I fixed this issue by adding amdgpu.dc=0 to my kernel boot parameters via GRUB.

See this thread for some explanation of the workaround.

0

Partial answer:

I assume that this Xorg.log is the result from starting the X server with an existing xorg.conf; if it is not, please delete your xorg.conf and try again.

Xorg.log looks fine in the beginning, in particular

[     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

means you have a single framebuffer ("desktop"), and each output is displaying part of the framebuffer.

However, it doesn't stop there, after everything looks properly initialized we get

[     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

so we get the EDID for "SAM", which is on "DVI-D-1", a second time, and it allocates a new framebuffer for it, and I have the suspicion that this framebuffer is different from the shared "desktop" framebuffer. Which means that if this framebuffer is what is displayed, you can change things on the "desktop" framebuffer as much as you want, but on "DVI-D-1" it will just display the other framebuffer. Which is likely black, and that's what you see.

I've never seen anything like this, and I've no idea what happens.

I'd file a bug report with the AMDGPU maintainers and see if they have any idea. Include the full Xorg.log.

  • 1
    I ended up fixing this by adding amdgpu.dc=0 to my kernel boot parameters. Haven't a clue why it worked. Thank you for all your help. Never figured out what was happening with the log file, though, but it doesn't really matter now. – Ninjavocado May 8 at 19:57
  • dc seems to enable/disable a different "display engine", so this looks like a bug in the new display engine. – dirkt May 9 at 12:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.