Dell Optiplex 5090 multi monitor support

I recently bought a Dell Optiplex 5090 MFF. I maxed out the RAM @ 64GB and added a 1TB M.2 NVMe drive and then installed Linux, of course. It has 2x DP (1.4)

The HW spec (Dell) /topicspdf/optiplex-5090-desktop_owners-manual_en-us.pdf page 19, clearly identifies multiple DP support. But alas, only 1 monitor is ever recognised. If I power off, I can use a single monitor in either DP, but a second monitor is just not recognised.

What would be the next steps to verify the OS (kernel) can see both ports?

(btw I contacted Dell support and they refuse to help me because I’m not running the OS it shipped with)

Hi Yalu,

Welcome to our forums.

You can give it a try with xrandr:

$ xrandr --query

eDP-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 344mm x 193mm
   1920x1080     60.00*+  59.97    59.96    59.93  
   1680x1050     59.95    59.88  
   1600x1024     60.17
[...]
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)

The above output shows all display ports on the test machine, with their connection state.

thanks for your response… here’s what I get, plus a few others…

[root@dell ~]# xrandr --query
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 1920 x 1080, current 1920 x 1080, maximum 1920 x 1080
default connected primary 1920x1080+0+0 0mm x 0mm
   1920x1080     77.00* 
[root@dell ~]# lshw -c video
  *-display UNCLAIMED       
       description: VGA compatible controller
       product: Intel Corporation
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 04
       width: 64 bits
       clock: 33MHz
       capabilities: pciexpress msi pm vga_controller bus_master cap_list
       configuration: latency=0
       resources: iomemory:600-5ff iomemory:400-3ff memory:6000000000-6000ffffff memory:4000000000-400fffffff ioport:3000(size=64)
[root@dell ~]# glxinfo -B
name of display: :0
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: VMware, Inc. (0xffffffff)
    Device: llvmpipe (LLVM 7.0, 256 bits) (0xffffffff)
    Version: 18.3.4
    Accelerated: no
    Video memory: 63991MB
    Unified memory: no
    Preferred profile: compat (0x2)
    Max core profile version: 0.0
    Max compat profile version: 2.1
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 2.0
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: llvmpipe (LLVM 7.0, 256 bits)
OpenGL version string: 2.1 Mesa 18.3.4
OpenGL shading language version string: 1.20

OpenGL ES profile version string: OpenGL ES 2.0 Mesa 18.3.4
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16

All these were run with only one monitor connected… but I plugged in a 2nd monitor and re-ran them, and the output was identical. (The second monitor says: DisplayPort no signal)

also, here’s potential kernel modules…

[root@dell ~]# lsmod | egrep 'dell|intel|vid'
dell_wmi               13251  0 
dell_smbios            21539  1 dell_wmi
sparse_keymap          13948  1 dell_wmi
dell_wmi_descriptor    13740  2 dell_smbios,dell_wmi
dcdbas                 15108  1 dell_smbios
dell_led               12875  1 
intel_powerclamp       14451  0 
kvm_intel             188740  0 
kvm                   637515  1 kvm_intel
snd_hda_intel          40390  4 
snd_hda_codec         136355  4 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_intel
snd_hda_core           91007  5 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel
ghash_clmulni_intel    13273  0 
aesni_intel           189456  2 
lrw                    13286  1 aesni_intel
glue_helper            13990  1 aesni_intel
ablk_helper            13597  1 aesni_intel
cryptd                 21190  3 ghash_clmulni_intel,aesni_intel,ablk_helper
snd_pcm               101339  4 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel,snd_hda_core
snd                    83987  18 snd_hda_codec_realtek,snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_seq,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel,snd_seq_device
btintel                15709  1 btusb
bluetooth             548787  31 bnep,btbcm,btrtl,btusb,rfcomm,btintel
video                  24538  0 
wmi                    21636  4 dell_smbios,dell_wmi_descriptor,dell_led,dell_wmi
intel_th_acpi          12770  0 
intel_th               19736  1 intel_th_acpi
crc32c_intel           22094  1

@yalu
It’s been a long time since I worked with 2 monitors, so what I’m about to comment here may be a bit outdated, but back then I used to use arandr to manage physical displays. I consider arandr the best GUI/frontend for xrandr. You can manually set monitor resolution etc. more easily by using arandr.

Prior to using arandr, I suggest you run the command xrandr --auto and then run xrandr --query again. Sometimes the monitor is connected and functional but it’s misconfigured, then xrandr ends up failing to probe such device and just outputs that no signal message. The xrandr --auto command asks xrandr to perform a “deeper” probing task, which in some cases may result in a (temporary) fix for the no signal issue.

wow, pretty sure the only computer I have with 1 screen is my phone (well, and this new comp w/ only 1 working)
I tried the xrandr --auto/query, no change.
I also installed arandr and it didn’t offer any additional info/options.
However, I’ve taken a rabbit trail chasing down the error message:
xrandr: Failed to get size of gamma for output default… lots of others have reported it, so I’m still filtering through it. perhaps once that’s resolved it will allow xrandr to find my other monitor.

According with page 19 of the manual, OptiPlex 5090 either ships with an offboard AMD GPU Radeon RX 640 (table 19) or an onboard/integrated GPU which is either Intel UHD Graphics 630 or Intel UHD Graphics 730/750 (table 18).

The output of lshw makes it clear that your Dell OptiPlex PC shipped with the onboard/integrated Intel GPU, even though its model wasn’t identified by the kernel (i.e. it’s not clear if the integrated GPU is either model 630 or model 730/750). I suspect that a missing kernel module may be the culprit for this.

Because table 19 reads Multiple display support matrix but table 18 only reads GPU— Integrated, I’m under the impression that your integrated Intel GPU does not support multiple displays: only the OptiPlex that ships with the offboard Radeon RX 640 does. I mean: it seems that such Intel GPU is capable of displaying the exact same screen on 2 monitors, but not capable of e.g. generating 2 different terminals/screens and then showing screen 1 in one monitor and screen 2 on the other.

Anyway… I don’t know which Linux distribution you are using, but the i915 kernel module (device driver) is the most commonly used for Intel UHD GPUs. I’m btw positive that i915 is the right driver for Intel UHD 630 GPU, but I’m not sure that this is the one for the model 730/750 (even though it likely is, too).

Hence, I would expect that lsmod |grep video returned video 24538 1 i915 to you, yet it returned video 24538 0. Weird.

Therefore, prior to attempting to figure out if the integrated GPU does indeed support multiple displays (I think it doesn’t), it’s a priority to install the kernel module that is specific for such GPU (because apparently it’s not installed). If the module is available, then a root command such as insmod i915 (followed by a reboot) will likely be enough. If after this the output of lsmod |grep video still shows 0 followed by no video driver name, I’d take a look at the package repositories and try to find any package that, once installed, adds kernel support for Intel UHD GPU versions 630 and 730/750 (it may be just driver i915 or may be two drivers). Furthermore, I would then add the respective kernel module(s) by running insmod again.

Once you have the proper kernel module installed by your Linux distro’s package manager and then linked to the kernel through insmod, if your monitors still can’t simultaneously show at least the same screen, then it’s time to check if a newer kernel provides extended functionalities.

Because I’m using XUbuntu 20.04, I investigated its apt repository. The metapackage oem-somerville-cubone-rkl-meta is a factory/oem metapackage for Dell OptiPlex 5090/7090 computers. Its source-code informs me that it installs ubuntu-oem-keyring and then adds http://dell.archive.canonical.com to my system’s (i.e. local) list of package repositories. After analyzing such repository and such metapackage’s dependencies, I reached this kernel header requirement: linux-headers-5.14.0-1033-oem.

I mean: I don’t know which Linux distro you’re using, but in case your distro happens to provide an OEM kernel version 5.14 (or later), I would install it, because the package installer may install such kernel along with the (eventually missing) kernel modules (device drivers) that not only work with such kernel but are also required to make the Dell Optiplex onboard/integrated Intel GPU work properly (i.e. let xrandr query its data, configure it etc.).

thank you so much for the in depth reply. I was intentionally vague on which distro I’m using b/c the whole point of this machine is to shadow what I use at work… where stability is king. If you must know, I’m running CentOS 7.

I loaded the i915 driver and the video module uses it, but alas, nothing else has changed. Your suspicions of a different/second additional driver may be correct.

[root@dell ~]# modprobe i915
[root@dell ~]# lsmod | egrep 'i915|video'
i915                 1859477  0 
iosf_mbi               15582  1 i915
i2c_algo_bit           13413  1 i915
drm_kms_helper        186531  1 i915
drm                   456166  2 i915,drm_kms_helper
video                  24538  1 i915
[root@dell ~]# lshw -c video
  *-display UNCLAIMED       
       description: VGA compatible controller
       product: Intel Corporation
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 04
       width: 64 bits
       clock: 33MHz
       capabilities: pciexpress msi pm vga_controller bus_master cap_list
       configuration: latency=0
       resources: iomemory:600-5ff iomemory:400-3ff memory:6000000000-6000ffffff memory:4000000000-400fffffff ioport:3000(size=64)
[root@dell ~]# xrandr --query
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 1920 x 1080, current 1920 x 1080, maximum 1920 x 1080
default connected primary 1920x1080+0+0 0mm x 0mm
   1920x1080     77.00*

I didn’t do a reboot (as I’m pretty sure that would not auto reload i915) but I did do a systemctl restart gdm … still no change.

I welcome any further ideas you have!

If it’s available for CentOS, install the inxi utility and then run inxi -G so you (may) find out what’s your actual GPU model and appropriate driver(s).

This tells me that a kernel version/series 5.14 does indeed work better with Dell OptiPlex 5090 machines. A command such as uname -r will let you know which kernel version your CentOS is currently using, so you may want to test a different version like 5.14 in case you’re not using version 5.14 already.

Also please check at the BIOS setup if Primary Display is explicitly set to Intel UHD Graphics instead of Auto.

These 2 packages must also be installed (I believe that their names are the same, in CentOS):

  • intel-microcode
  • xserver-xorg-video-intel

Restart the computer and then, at the GRUB menu (pressing Esc prior to booting usually takes you there), press E to edit the GRUB boot line and then check if nomodeset is present. If it is, it may be preventing the kernel from setting up the appropriate GPU driver(s), so delete the nomodeset word and then press F10 or Ctrl X so GRUB boots Linux (only this time) with kernel mode setting activated. If this works (i.e. xrandr finally identifies your display device and therefore suceeds in getting the size of the gamma for your default graphical output device), edit /etc/default/grub in order to remove the nomodeset option and then run update-grub to incorporate this new configuration into GRUB.

not finding inxi for CentOS 7… which is an old kernel (3.10.0)

I jumped into the the BIOS to check the Primary Display… it was set to “Onboard Video” (not Auto)
… also in the BIOS in the Overview, the Video Controller is identified as: Intel(R) UHD Graphics 750
w/ a Video BIOS Version: GOP 1052 and Video Memory 64MB

I installed intel-gpu-tools (perhaps moot now) but I didn’t find anything that looked promising.


[root@dell ~]# intel_
intel_audio_dump             intel_dpio_write             intel_gpu_time               intel_l3_parity              intel_reg_dumper             intel_upload_blit_large
intel_backlight              intel_dump_decode            intel_gpu_top                intel_lid                    intel_reg_read               intel_upload_blit_large_gtt
intel_bios_dumper            intel_error_decode           intel_gtt                    intel_opregion_decode        intel_reg_snapshot           intel_upload_blit_large_map
intel_bios_reader            intel_forcewaked             intel_infoframes             intel_panel_fitter           intel_reg_write              intel_upload_blit_small
intel_display_poller         intel_framebuffer_dump       intel_iosf_sb_read           intel_perf_counters          intel_sprite_on              intel_vga_read
intel_dpio_read              intel_gpu_abrt               intel_iosf_sb_write          intel_reg_checker            intel_stepping               intel_vga_write
[root@dell ~]# intel_gpu_top
Test assertion failure function init_instdone_definitions, file instdone.c:599:
Failed assertion: IS_GEN2(devid)
Last errno: 2, No such file or directory
[root@dell ~]# intel_display_poller 
No intel gpu found
[root@dell ~]# intel_infoframes 
WARNING: This is just a debugging tool! Don't expect it to work perfectly: the Kernel might undo our changes.
This program does not support your hardware yet.
[root@dell ~]# intel_perf_counters 
No intel gpu found

nomodeset was not present in the GRUB line

It seems that:

yum install -y epel-release ; yum install -y inxi

…executed as root enables inxi's installation on CentOS 7 and then installs it. If this does’t work, maybe you instead need to run:

yum search epel-release ; yum info epel-release ; yum install -y epel-release ; yum install -y inxi

EPEL (Extra Packages for Enterprise Linux) is a community-based project and open-source repository, supported by the Fedora team, that provides additional packages for some Linux distros, including Red Hat Enterprise Linux and CentOS releases. The commands above are intended to add such repository to your CentOS 7 distro so it can download and install inxi from that repo.

Onboard Video is the right configuration for the BIOS setup. Nice. :+1:t2:

Intel UHD Graphics 750 was released on March, 2021. I mean: it’s an extremely new hardware. This is the most likely reason why CentOS 7 can’t work properly with such GPU. You definitely need to upgrade the kernel (and even this may not be enough, unfortunately). To me, it’s clear that your kernel version does not support such new hardware (there’s no kernel module for kernel 3.10 that works with this new hardware, which by the way also uses module i915 – I did a little research and i915 is the kernel module / device driver to use for both Intel UHD 630 and Intel UHD 730/750).

I installed intel-gpu-tools myself and tested it. When I noticed that it wouldn’t be useful for this particular case, I removed it from my previous comment. Right now, I think the priority is to upgrade the kernel to series 5.x.

There are some tutorials out there, with titles such as How to upgrade the Linux kernel on CentOS 7 and Update Centos Kernel 3.10 to 5.13 latest, that explain how to perform a kernel upgrade on CentOS 7.

It’s better (i.e. for safety and stability) to install a long-term support kernel (a.k.a. lts kernel) instead of a mainline one.

Because your GPU is so new, even newer Linux kernels customized for CentOS Linux may not support an i915 driver version that supports Intel UHD 750 GPU just yet. So if you happen to upgrade the kernel and still can’t get xrandr to read the GPU parameters etc., then a workaround that may or may not work is to add i915.force_probe=4c8a to your /etc/default/grub file:

GRUB_CMDLINE_LINUX="... quiet splash i915.force_probe=4c8a"

…and then run upgrade-grub and reboot.

If nothing mentioned here works, it’s a problem, because the solution to this problem is dependent on kernel module version, i.e. hardware support at the low-level software layer (kernel + kernel module).

I’m amazed how much effort you’ve put into this! … thank you!
Strangely, I already had the EPEL repo enabled. (I’m a big meld fan and that’s in EPEL) Anyway, after getting the “epel-release already installed and latest version” message, inxi installed. weird.

[root@dell ~]# inxi -G
Graphics:
  Device-1: Intel driver: N/A
  Display: server: X.Org v: 1.20.4 driver: X: loaded: vesa
    unloaded: fbdev,modesetting gpu: N/A resolution: 1920x1080~77Hz
  OpenGL: renderer: llvmpipe (LLVM 7.0 256 bits) v: 2.1 Mesa 18.3.4

That’s a very interesting article/howto on upgrading the Kernel. I’m definitely going to ask my IT folks at work if they’ve heard of this. I’m wondering if I’d be better off installing Ubuntu or Arch and then running CentOS 7 as a VM. Although, now you have me curious about the newer kernel.
CentOS 7 is approaching EOL, so it’s really only a matter of time before something else replaces it.

[2 hours later]
So I installed kernel-lt (5.4) [others following along, be sure to grab kernel-lt-devel too]
and also devtoolkit-9 from the scl repo for a newer version of the compiler
also make sure you have the latest Intel source for e1000e (3.8.4 atm) Ethernet driver

yum install centos-release-scl.noarch
yum install devtoolkit-9

differences noticed:

  1. the new kernel boots insanely fast
  2. the i915 module auto loads (it never did under the old kernel)

alas, still no joy on the 2nd monitor

[root@dell ~]# inxi -G
Graphics:
  Device-1: Intel driver: N/A
  Display: server: X.Org v: 1.20.4 driver: X: loaded: N/A
    unloaded: fbdev,modesetting,vesa gpu: N/A resolution: 1920x1080
  OpenGL: renderer: llvmpipe (LLVM 7.0 256 bits) v: 2.1 Mesa 18.3.4

here’s what is in i915:

[root@dell parameters]# pwd
/sys/module/i915/parameters
[root@dell parameters]# grep . *
alpha_support:N
disable_display:N
disable_power_well:-1
dmc_firmware_path:(null)
edp_vswing:0
enable_dc:-1
enable_dpcd_backlight:0
enable_dp_mst:Y
enable_fbc:-1
enable_guc:0
enable_hangcheck:Y
enable_ips:1
enable_psr:-1
error_capture:Y
fastboot:-1
force_probe:4c8a
force_reset_modeset_test:N
guc_firmware_path:(null)
guc_log_level:-1
huc_firmware_path:(null)
invert_brightness:0
load_detect_test:N
lvds_channel_mode:0
mmio_debug:0
modeset:-1
nuclear_pageflip:N
panel_use_ssc:-1
prefault_disable:N
reset:2
vbt_firmware:(null)
vbt_sdvo_panel_type:-1
verbose_state_checks:Y

well, crap, I just re-read your post(s) again, and you clearly said kernel 5.14+ so I should have gone w/ kernel-ml which is at 5.17. I’ll have to retry all this with the newer kernel… stay tuned.

No prob. :nerd_face: :+1:t2: I’m not 100% positive that all this work is going to end up with a 100% functional/operational dual monitor setting (because of how recent the Intel UHD 750 GPU is), but it’s going to be satisfying if it does. The kernel upgrade already made the system boot faster and automatically load the i915 driver, so the effort is starting to pay back. :slightly_smiling_face:

Yup, I looked some articles about the OptiPlex series and 5.14+ are the ones that work best with OptiPlex 5090 (besides 5.14 being specifically recommended by Ubuntu’s metapackage for Dell hardware/machines). I thought that 5.14 was available as kernel-lt but your reply confirmed that it’s part of ml. Ok. Hope a newer kernel solves this. :crossed_fingers:t2:

I just found this discussion about i915's parameter force_probe:4c8a to enable Intel UHD 750 GPU support and it seems that, indeed, adding such parameter to GRUB really is the way to go if upgrading the kernel with modeset enabled doesn’t solve it per se.

I just installed kernel-ml and kernel-ml-devel … the install took longer than I expected, but I realized after I re-booted to the new kernel… it was re-building my e1000e.ko for the new kernel. (previously, both times I patched to a newer 3.X kernel I had to manually rebuild from source and re-install.)

…Anyway, less than a second after I clicked on the newest kernel, my second monitor sprang to life, and a couple seconds later, I had a login screen with both monitors active. logged in for a nice 2x desktop! Rockin’!! thank you SO much!

[root@dell ~]# xrandr --query
Screen 0: minimum 320 x 200, current 3840 x 1080, maximum 16384 x 16384
DP-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 527mm x 296mm
   1920x1080     60.00*+  74.98    50.00    59.94    59.99  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.95  
   1280x1024     75.02    60.02  
   1440x900      59.89  
   1280x960      60.00  
   1366x768      59.79  
   1152x864      75.00  
   1280x720      60.00    50.00    59.94  
   1024x768      75.03    70.07    60.00  
   832x624       74.55  
   800x600       72.19    75.00    60.32    56.25  
   720x576       50.00  
   720x480       60.00    59.94  
   640x480       75.00    72.81    66.67    60.00    59.94  
   720x400       70.08  
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-2 connected 1920x1080+1920+0 (normal left inverted right x axis y axis) 527mm x 296mm
   1920x1080     60.00*+  74.98    50.00    59.94    59.99  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.95  
   1280x1024     75.02    60.02  
   1440x900      59.89  
   1280x960      60.00  
   1366x768      59.79  
   1152x864      75.00  
   1280x720      60.00    50.00    59.94  
   1024x768      75.03    70.07    60.00  
   832x624       74.55  
   800x600       72.19    75.00    60.32    56.25  
   720x576       50.00  
   720x480       60.00    59.94  
   640x480       75.00    72.81    66.67    60.00    59.94  
   720x400       70.08  
HDMI-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
HDMI-3 disconnected (normal left inverted right x axis y axis)
[root@dell ~]# inxi -G
Graphics:
  Device-1: Intel driver: i915 v: kernel
  Display: server: X.Org v: 1.20.4 driver: X: loaded: modesetting
    unloaded: fbdev,vesa gpu: i915 resolution: 1: 1920x1080~60Hz
    2: 1920x1080~60Hz
  OpenGL: renderer: llvmpipe (LLVM 7.0 256 bits) v: 2.1 Mesa 18.3.4

… I still need to make this my default kernel in grub

one other note: I’m amazed that I ever got any display without the correct driver.

The Linux kernel was likely using the Linux graphic abstraction layer a.k.a. “Linux framebuffer” (fbdev) as a “fallback”, due to the absence of a functional kernel module for the Intel UHD 750 GPU.

If no graphics driver loads successfully, the Linux kernel automatically runs fbdev, which then allows the kernel to directly access the GPU’s memory and read its frames. It’s a limited feature, but provides a functional display.

Anyway: you marked my previous comment as Solution :white_check_mark:, so it seems that upgrading to kernel 5.17 provided a functional dual monitor arrangement. Achievement accomplished. :medal_military:

@Yuri I made an edit to the post that caused it to be “hidden, awaiting moderation” so you may have missed the “exciting” post. It’s now visible again. thanks again for your help!

1 Like

@yalu Indeed, the “exciting” post wasn’t visible to me when I posted my previous reply. Now I can read it. Great! So the ml kernel did indeed solve this. Happy endings are the best. :sunglasses: You’re welcome! Enjoy your functional 2-monitor desktop. :desktop_computer: :desktop_computer: