I am running Ubuntu 18.04 on a Thinkpad T430 with an Nvidia graphics card that is capable of switching from Intel to Nvidia graphics processing as needed (Optimus). It sits on a docking station that has 2 monitors attached, one connected via DVI and the other VGA. I work with 3 screens in total: the two external displays plus the built-in display. I am (was) using the proprietary Nvidia driver (v. 390.116) that was installed via the "Additional Drivers" section via the Software and Updates application.
Yesterday I was switching between workspaces via hotkeys when the system froze. None of the customary interventions (e.g., Control + Alt + F2) worked and so I had to do a hard shutdown with the power button. After the reboot, the DVI-connected monitor didn't work. After some preliminary troubleshooting, I thought I had a hardware failure and was shopping for a new laptop. Then it occurred to me to boot into Windows (the laptop is set up to dual-boot, though Ubuntu is my primary OS and I rarely boot into Windows). In Windows, everything works fine. So, no hardware problem.
I purged the proprietary Nvidia driver in Ubuntu and rebooted. With the Nouveau driver, all three displays work just fine. I tried reinstalling the proprietary driver again, and no go. "Detect Displays" in the nvidia-settings app has no effect. There is no way of detecting displays in the Screen Display window in the Ubuntu Settings app. I purged and manually installed the latest proprietary driver. Again, no go. I purged and installed the older proprietary driver (340.107). All three displays work, but it only lets me move my mouse on one screen. After purging and rolling back to Nouveau, again everything works.
I would be inclined to stay with the Nouveau driver, but the manual switching (via prime-select in the terminal) to the Intel driver when I am unplugged and on battery is convenient and my sense is that there is less screen tearing with the proprietary driver. I'm wondering if there is some configuration file somewhere that only the the proprietary driver uses or some setting that is only loaded when the proprietary driver is used that prevents it from "seeing" the third monitor. I could reinstall the OS, but I thought I would ask here first.
Here are the relevant lines of the output of lspci
:
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation GF108M [NVS 5400M] (rev a1)
And a section from lshw
> *-pci:0
> description: PCI bridge
> product: Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port
> vendor: Intel Corporation
> physical id: 1
> bus info: pci@0000:00:01.0
> version: 09
> width: 32 bits
> clock: 33MHz
> capabilities: pci normal_decode bus_master cap_list
> configuration: driver=pcieport
> resources: irq:16 ioport:6000(size=4096) memory:f0000000-f10fffff ioport:c0000000(size=301989888)
> *-display
> description: VGA compatible controller
> product: GF108M [NVS 5400M]
> vendor: NVIDIA Corporation
> physical id: 0
> bus info: pci@0000:01:00.0
> version: a1
> width: 64 bits
> clock: 33MHz
> capabilities: vga_controller bus_master cap_list rom
> configuration: driver=nvidia latency=0
> resources: irq:28 memory:f0000000-f0ffffff memory:c0000000-cfffffff memory:d0000000-d1ffffff
> ioport:6000(size=128) memory:f1000000-f107ffff
> *-display
> description: VGA compatible controller
> product: 3rd Gen Core processor Graphics Controller
> vendor: Intel Corporation
> physical id: 2
> bus info: pci@0000:00:02.0
> version: 09
> width: 64 bits
> clock: 33MHz
> capabilities: vga_controller bus_master cap_list rom
> configuration: driver=i915 latency=0
> resources: irq:30 memory:f1400000-f17fffff memory:e0000000-efffffff ioport:7000(size=64) memory:c0000-dffff
Any help and/or suggestions would be greatly appreciated.
I eventually gave up and reinstalled 18.04. Things worked fine for a few weeks. Then, while my laptop was off the dock one day, I again had to do a hard shutdown. When I put it back on the dock, the DVI-connected monitor didn't work. Same scenario as before: if I purged the proprietary nvidia driver and used Nouveau, the monitor would work, but not with the proprietary driver. I tried many things: using different bootloaders (e.g., lightdm), trying different versions of the nvidia driver, etc. All were no-gos. I was about to reinstall again, when I came across this discussion. It was a life-saver.
The solution that worked for me:
Change the relevant line in the file to:
Then,
and reboot.