Fedora 41 using HDMI & DisplayPort at the same time.... BUG?

Hi everyone, this is my setup:

  • ThinkPad T490 attached to a Lenovo ThinkPad Docking Station Gen 2
  • One monitor attached with HDMI cable to the Docking
  • One monitor attached to the Docking with a DisplayPort cable, using an HDMI to display port adapter.

The problem

  • Only one monitor works (HDMI).
  • From the display settings on GNOME the second monitor appear active and working, I can even move my mouse inisde it, but the monitor is just turned off.

What I tried

  • I installed the display port driver
  • I found that if I disconnect the HDMI monitor then the Display port one starts working. Then if I reattached the HDMI nothing happens, meaning that the HDMI one would not work.
  • I found that by temporarily chaning the refresh rate of the second monitor makes it work. I just change the refresh rate and when the pop-up asks to keep changes or revert I press revert and then both monitors works good at maximum refresh rate.

The problem is that I have to do this tweak every time I login or after waking from suspend.

Does anyone knows any way to fix this? Should I issue a bug on bugzilla or what?
Thank’s

The HDMI port is actually an internel DP to HDMI adapter. You can’t mix HDMI(DP altmod) and DP on the same USB-C port.

Yes but then why on Ubuntu/Mint it works no problem?

as explained in the other thread.

If you still have windows available, it would show the same limitation. 2 x FHD displays @60Hz and USB3 transfers between system and dock.

see http://www.vesa.org/wp-content/uploads/2016/10/USB-DevDays-DisplayPort-Alternate-Mode-2016-final4.pdf page 16-18

It looks like Mint does not configure USB3 on the TB/USB-C port for this dock.
It’s a trade-off between full DP bandwidth (4x FHD@60Hz or 2x FHD@120hz ) and only USB2.0 (480Mbit/s ~ 60MB/.s )
or only 50% DP ( 2xFHD@60Hz ) but USB3 ( 5Gbit/s ) transfers on the USB-C cable between system and dock.

Hello… This is the maximum resolution per-display that Windows10 allow me to:

Don’t know why Windows does not allow me to set higher level.

The problem is that:

  • On GNOME with the “trick” I can put both monitor on 100hz.
  • By the way, assume that I’m ok with 60hz… I still have to do the “trick” every time at login otherwise one monitor will always be black.
  • On Linux Mint I have both of them at 100hz.

see above. Officially max 2x FHD @60hz and there is still a little bandwidth available to configure one monitor at 70Hz.
You could also run 2x 1920x1200 @ 60Hz.

this is probably a gnome/mutter issue.
you should find the configured refresh rate in ~/.config/monitors.xml

there should be lines like this:

 </monitorspec>
        <mode>
          <width>2560</width>
          <height>1440</height>
          <rate>143.999</rate>
        </mode>

Ok, I set both of them to 60hz via the suggested config file. But:

  • this change is applied only at login, before that on boot, grub and login screen one monitor is shutted down and if the display of the laptop is closed then I don’t see nothing on either of them. On Mint I can.
  • Why, again, on Mint I can use 100hz without problems???

Have you compared the kernel command lines in grub?
It’s also possible that Mint include some specific config/modules in the initramfs file.

Do the Monitors have an option to disable refresh rates > 60Hz. Maybe there is a setting for that somewhere in the On-Screen Display.

Grub on mint:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR=`( . /etc/os-release; echo ${NAME:-Ubuntu} ) 2>/dev/null || echo Ubuntu`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.enable_psr=0 i915.enable_fbc=0 i915.modset=0 intel_idle.max_cstate=2"
GRUB_CMDLINE_LINUX=""

# If your computer has multiple operating systems installed, then you
# probably want to run os-prober. However, if your computer is a host
# for guest OSes installed via LVM or raw disk devices, running
# os-prober can cause damage to those guest OSes as it mounts
# filesystems to look for things.
#GRUB_DISABLE_OS_PROBER=false

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

Grub on fedora:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rhgb quiet acpi_osi=linux"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

It’s also possible that Mint include some specific config/modules in the initramfs file.

Where can I find this?

Hi Ironhack,

Try this in Fedora:

  1. edit /etc/default/grub
    GRUB_CMDLINE_LINUX=“rhgb quiet acpi_osi=linux i915.enable_psr=0 i915.enable_fbc=0 i915.modset=0 intel_idle.max_cstate=2”
    (basically duplicate the one from mint/ubuntu)
  2. grub2-makconfig
  3. dracut -f
  4. reboot and let’s see how this works out :slight_smile:
1 Like

Those parameters are added by me because I was having screen flickering on my laptop display due to intel panel self refresh. I dont think it would change anything since that is not something that affect external monitors… Anyway tomorrow I’ll try and report back.

I set these parameters:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX_DEFAULT="rhgb quiet splash acpi_osi=linux i915.enable_psr=0 i915.enab>
GRUB_CMDLINE_LINUX=""
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

Now it seems to work without doing the “trick” of manually changing the refresh rate… The only problem is that during boot the second monitor is turned off… Anyway I think it could work for now.

1 Like

The problem is that I have to keep one monitor at 60hz and one at 100hz… I don’t understand why I can’t have both at 100hz as on Mint and Ubuntu.

you’re repeating yourself. I guess you’ll need to ask at an Ubuntu/Mint forum for the quirks needed to the kernel and/or system. Ubuntu use a heavily customized kernel.
Fedora does use a stock Linux kernels with some minor patches if needed.

Here is the calculation:
DisplayPort 1.2 has a data rate of 17.28Gbit/s ( think of connecting a DP monitor with an USB-C to DP cable to the system. Its all DP data, no USB at all). All 4 lanes are transmitting DP data to the monitor.

In theory, a data rate of 17.28Gbit/s would allow a single monitor to use a refresh rate of 289Hz (assuming CVT-R2 timings ).
Connecting an usual USB-C dock to a system re-configures the USB-C port:
now only 8.64Gbit/s is available for DP ( 2 lanes), the other 2 lanes are used for USB3 data transfers Rx/Tx (as explained many times)

A resolution of 1920x1080 @60Hz with 8bit color depth consumes ~3.2Gbit/s (again CVT-R2 timings)
1920x1080 @100Hz 8bit requires ~5.44 Gbit/s (CVT-R2)
5.44 + 3.2 =8.64 so you are at the maximum possible with this configuration.
I’m surprised that this even work with 60 + 100Hz.

Some systems (eg HP business laptops of that time) do have a UEFI/Bios option which forces the USB-C host port to switch to USB2 only in a mixed configuration. But last time I checked the T490 did not have such an option.

There are also USB-C docks available from other 3rd party vendors that have a switch to do the same from the dock’s perspective. It can block USB3, this would allow full DP1.2 data rate to be configured between the system and the USB-C dock.

A thunderbolt 3 dock would support your configuration out of the box on fedora.

I guess, for your current setup it would probably make more sense to keep using Ubuntu or Mint.

If it can be of any help, I’m using this cable Lenovo USB-C Cable 1 m | 4X90U90619 | Lenovo UK

it’s not an issue with the cable :slight_smile:

out of interest, and If you have the time and want to try something:

shutdown/power down system, disconnect the dock from system and boot into ubuntu / fedora. Log into system and reconnect the dock.
It would be interesting to see the output of sudo dmesg and journalctl -b0 -S-5m

Fedora KDE

As mentioned before, now I’m trying KDE where other than the main issue, on here if the docking station is plugged before login then after the boot there is a black screen and the boot process does not initiate KDE and bring me to login screen until I disconnect the docking.

Linux Mint 22

  1. is it possible to switch with CTRL+ ALT + < F2 or F3 or F4 > to other console?CTRL+ALT +F1 should switch back to sddm.
  2. what will happen if you boot with only one screen attached to the dock?
  3. can you share the productname of the monitors? I think I saw LG Electronics in one of the screen shots…

I wonder if maybe Mint is using the compressed video format YCbCr 4:2:2 instead of YCbCr 4:4:4 / RGB. The data rate requirements are lower compared to full RGB.
1920x1080@100Hz YCbCr 4:2:2 data rate 3.63 Gbit/s. This would not exceed the available data rate of 8.64 Gbit/s.

I guess this would look slightly blurred.
see Chroma Subsampling: 4:4:4 vs 4:2:2 vs 4:2:0 - RTINGS.com
there is also a test image ( How to test for Chroma Subsampling) that you could try in Mint on both displays. Or maybe the on-screen display shows this info as well.

Hello, that are good insights… didn’t even know the existence of these things.

  • Docking + two monitors (one on HDMI and one on DisplayPort) → stuck on black screen before login, stuck until I unplug the docking.
  • Keeping on the dock only the HDMI → all good.
  • Keeping on the dock only the DisplayPort → all good.

I also bought two DisplayPort cable to attach the monitor to the docking, so that it will be two monitors attached trough display port and not one trough HDMI and one trough DisplayPort adapter… Let’s see if this will make a difference.

The monitors are two LG 24MS550 24" Full HD IPS. I looked at the test image on Mint and it does seem like everything is nice and crisp, no blur. Anyway I’m attaching some photos:



Also a video

Hope this can help to further investigate.

Anyway, even if Cinnamon (Linux Mint) says that it’s 100hz and even if the monitor itself says it’s 100hz… I don’t think it’s TRULY 100hz.

I’ve been scrolling a pdf document on Cinnamon and it’s not smooth as GNOME/KDE (where I can put the display to 100hz, but not both of them otherwise problems mentioned above emerge). Also comparing to my smartphone which has 120hz, on Cinnamon it just ins’t that smooth.

Then I don’t know why and how Cinnamon does this “trick”, or maybe it’s the kernel. It would be better to have something like a limit to the maximum refresh rate you can choose, like on Windows.