Ubuntu – Second external monitor not waking up

18.04displaymultiple-monitorssuspend

My current setup is my Dell XPS 9560 (1080p) with 2x 1440p 75hz monitors. Everything works fine on first boot: I turn on the laptop, type in my password, shut the lid and just use the two external monitors.

However, if I put the computer to sleep and then try and wake it up again, only one of the two external monitors comes on. Sometimes both of them do but that only seems to happen around 1/10 times.

The monitor appears to wake up (it turns on) but it flicks between the sources and reports "no signal".

I have the laptop running on the integrated Intel graphics but the same thing appears to happen on the Nvidia graphics as well.

The easiest way to get the monitor back on is just to restart the entire machine and 99% of the time it comes back on. Either that or if I fiddle around with settings long enough and re-plug the HDMI cable a few times it sometimes comes back on.

I am running Ubuntu 18.04 LTS on the machine and this is the only problem I have had so far!

EDIT: The current workaround I am using to get the monitor to come back on is to change the refresh rate from 74.99hz to 59.95hz and then back again. This pretty consistently works but obviously isn't an ideal solution.

Best Answer

You don't need to reboot your computer to fix it. A better way to deal with it is using xrandr, which is the tool to manage the output of your displays.

First, run simply xrandr to get a list of all displays currently connected and their respective names (their connection). In possession of that information, you can run a simple command to 'reactivate' the secondary display and place it in the correct location. It would be something like:

xrandr --output SECONDARYDISPLAY --auto --right-of PRIMARYDISPLAY

You want to replace both the displays with the actual name you got from your xrandr. It is usually things like HDMI-A-0, DisplayPort-0, DVI-D-0, etc... If you connect the display to the left side of your main display, you also want to change the --right-of. Xrandr has many other options you might want to use, like setting offset, refresh rate, etc. For more, take a look at the man page.

In your case, since you are using two external displays, you might also want to set the primary display with xrandr, in case running simply the first command doesn't work. You can then combine both with something like:

xrandr --output PRIMARYDISPLAY --auto --primary && xrandr --output SECONDARYDISPLAY --auto --right-of PRIMARYDISPLAY

If you are satisfied with the results of the commands, you might want to add them to a shortcut, if you feel that is faster than running them from the command line. You might also want to add them to a script that is run on resume and placing it over at /usr/lib/pm-utils/sleep.d/.

Keep in mind that this issue might go away of it's own in the future. There are plenty of reports of similar issues, but the underlying cases can be very different. If you believe your case is very persistent, you could try opening a bug report. I personally used to have this problem a couple months ago, but it 'fixed itself', and I haven't had it ever since. I found that using: ctrl+alt+t (open terminal) typing 'xr' followed by 'UP' and 'ENTER' (this way my terminal would connect to the last used command that started with xr) was a good solution for me, specially because I also turn my secondary display off with xrandr from time to time.

Related Question