I am setting up an older machine with an Nvidia Quadro K1100M. After installing 26.04, one of the first things I confirmed was that I could connect multiple monitors, and sure enough, it worked out of the box with no issues.
Fast-forward to me doing a bunch of installation and configuration (i.e. running my clunky install script and taking a few manual steps), when I notice that I can no longer connect multiple monitors. Here's some relevant output:
> xrandr
Screen 0: minimum 16 x 16, current 1920 x 1080, maximum 32767 x 32767
None-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 508mm x 285mm
1920x1080 59.96*+
1440x1080 59.99
1400x1050 59.98
1280x1024 59.89
1280x960 59.94
1152x864 59.96
1024x768 59.92
800x600 59.86
640x480 59.38
320x240 59.29
1680x1050 59.95
1440x900 59.89
1280x800 59.81
1152x720 59.97
960x600 59.63
928x580 59.88
800x500 59.50
768x480 59.90
720x480 59.71
640x400 59.95
320x200 58.14
1600x900 59.95
1368x768 59.88
1280x720 59.86
1024x576 59.90
864x486 59.92
720x400 59.27
640x350 59.28
> sudo lshw -c video
*-display UNCLAIMED
description: VGA compatible controller
product: GK107GLM [Quadro K1100M]
vendor: NVIDIA Corporation
physical id: 0
bus info: pci@0000:01:00.0
version: a1
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress vga_controller bus_master cap_list
configuration: latency=0
resources: memory:f4000000-f4ffffff memory:e0000000-efffffff memory:f0000000-f1ffffff ioport:e000(size=128) memory:f5000000-f507ffff
*-display
description: VGA compatible controller
product: 4th Gen Core Processor Integrated Graphics Controller
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
logical name: /dev/fb0
version: 06
width: 64 bits
clock: 33MHz
capabilities: msi pm vga_controller bus_master cap_list fb
configuration: depth=32 latency=0 mode=1920x1080 resolution=1920,1080 visual=truecolor xres=1920 yres=1080
resources: memory:f5400000-f57fffff memory:d0000000-dfffffff ioport:f000(size=64) memory:c0000-dffff
The xrandr output is when external monitor(s) are connected. Any configuration of how many monitors/which ports they connect to makes no difference. Unfortunately, I did not record this output after a fresh installation, so I don't have that for comparison. UPDATE: I realized I can easily boot from USB to gather this output. I've added it at the end of the post.
So there's no driver installed for the GPU, and the OS doesn't see any displays that I connect to the machine. Can anyone shed any light on what might have changed? I really don't want to start over from a fresh installation, and even if I do, there's no guarantee I won't end right back here.
Some more details about drivers:
ubuntu-drivers listproduces no output.Nvidia recommends 418.113. but if I try to run the installer, it fails to build with a bunch of errors about missing header files, e.g.
nv-misc.h. I had previously tried using the Additional Drivers dialog on a 24.10 installation to install I believe it was 390.x, but the result was the same.The nvidia-legacy PPA doesn't appear to have 390 past mantic. When I was trying this on 24.10, I had pretty much concluded that I was going to need to downgrade to an earlier LTS to get it to work, until I tried 26.04 and it magically worked out of the box (until it magically didn't, hence this post).
Nouveau supports my GPU. My theory is that it claimed the GPU out of the box, which is why multiple monitors were briefly working, but then later dropped it for unknown reasons. Here is the output of
lsmod | grep nouveau:
nouveau 3178496 0
gpu_sched 69632 1 nouveau
drm_gpuvm 57344 1 nouveau
mxm_wmi 12288 1 nouveau
drm_ttm_helper 20480 1 nouveau
drm_exec 12288 2 drm_gpuvm,nouveau
ttm 135168 2 drm_ttm_helper,nouveau
drm_display_helper 303104 1 nouveau
i2c_algo_bit 16384 1 nouveau
video 77824 3 dell_wmi,dell_laptop,nouveau
wmi 36864 8 video,dell_wmi,wmi_bmof,dell_smm_hwmon,dell_smbios,dell_wmi_descriptor,mxm_wmi,nouveau
UPDATE: As mentioned above, we can gather output from a working setup on the same machine by booting the installation materials from USB. Here's more lshw output demonstrating that the GPU is correctly using nouveau. I've elided the xrandr output, but it's what you'd expect.
> sudo lshw -c video
*-display
description: VGA compatible controller
product: GK107GLM [Quadro K1100M]
vendor: NVIDIA Corporation
physical id: 0
bus info: pci@0000:01:00.0
logical name: /dev/fb1
version: a1
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress vga_controller bus_master cap_list rom fb
configuration: depth=32 driver=nouveau latency=0 mode=1920x1080 resolution=1920,1080 visual=truecolor xres=1920 yres=1080
resources: irq:47 memory:f4000000-f4ffffff memory:e0000000-efffffff memory:f0000000-f1ffffff ioport:e000(size=128) memory:f5000000-f507ffff
*-display
description: VGA compatible controller
product: 4th Gen Core Processor Integrated Graphics Controller
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
logical name: /dev/fb0
version: 06
width: 64 bits
clock: 33MHz
capabilities: msi pm vga_controller bus_master cap_list rom fb
configuration: depth=32 driver=i915 latency=0 mode=1920x1080 resolution=1920,1080 visual=truecolor xres=1920 yres=1080
resources: irq:48 memory:f5400000-f57fffff memory:d0000000-dfffffff ioport:f000(size=64) memory:c0000-dffff
Okay, so started over and ran my install script only. After a restart, the problem was still there.
Then I ran it section by section with a restart in-between, and I found the culprit:
# make sure grub shows the full startup sequence
sudo sed -i 's/quiet splash/nomodeset/' /etc/default/grub
sudo update-grub
So apparently turning off the startup splash screen breaks something chain of logic that allows hardware display driver to load correctly. This is wildly unexpected but nonetheless true. I'll probably ask separately why that might be.
I should probably note that I hadn't inspected glxinfo (available from mesa-utils) output before asking the question. There's actually a key nugget to be found there. Fresh install:
> glxinfo | grep "OpenGL renderer"
OpenGL renderer string: Mesa Intel(R) HD Graphics 4600 (HSW GT2)
Broken install (after turning off startup splash):
> glxinfo | grep "OpenGL renderer"
OpenGL renderer string: llvmpipe (LLVM 21.1.8, 256 bits)
So in the broken state we're actually using the software renderer and not the onboard graphics as I had previously assumed.
However, we also find that it still isn't using the Quadro. I know prime-select is the tool to use to switch renderers when one has the Nvidia drivers installed, but it's as yet unclear if I can find and use a standalone version of it, or if I need to find another method. Since figuring out how to use the Quadro is the question title, I'll need to update again after I've solved that part.