I have multiple monitors connected to a Thunderbolt 4 hub, and the monitors must be connected in a specific order to ensure that their respective profiles (position, refresh rate, resolution) are applied.
DEVICE NAME | Description |
---|---|
HOST |
ThinkPad P14s Gen 4 (AMD). |
MASTER_HUB |
Anker PowerExpand 5-in-1. Has one THUNDERBOLT4_HOST and 10gb/s USB-A on the front, and 3x Thunderbolt 4 (USB-C) split passthru and a DC power jack on the back. |
DP_ADAPT |
CableMatters Thunderbolt 4 to DisplayPort 1.4. Connected via the middle thunderbolt passthru on MASTER_HUB. |
PORTABLE_MON |
Arzopa 14" Portable Monitor. Connected to the leftmost passthru on MASTER_HUB. |
DESK_MON |
Koorui 2K 165hz 16:9 Monitor. Connected to DP_ADAPT (middle MASTER_HUB passthru). |
My Hyprland config contains the lines:
monitor = DP-5,2560x1440@165,1600x0,1.000000,bitdepth,10,transform,0
monitor = HDMI-A-1,preferred,3840x1440,1.000000,bitdepth,8,transform,0
monitor = eDP-1,2880x1800@90,1920x1440,1.500000,bitdepth,10,transform,0
monitor = DP-6,1920x1080,0x1440,1.000000,bitdepth,10,transform,0
monitor = , preferred, auto, 1
This expects that DESK_MON
should be on DP-5
and PORTABLE_MON
on DP-6
.
Because the "names" (DP-5
, HDMI-A-1
, etc.) are not deterministic (i.e. MASTER_HUB
middle passthru with DP_ADAPT
is not guaranteed to be named DP-6
), they must be connected in a certain temporal order.
With the system booted and unlocked (to prevent crashes), I first disconnect PORTABLE_MON
on the device end. I then connect THUNDERBOLT4_HOST
to HOST
. Wait for DESK_MON
to display, and then connect PORTABLE
.
This ensures that DESK_MON
is named DP-5
and PORTABLE_MON
is named DP-6
.
With the system booted and unlocked, and PORTABLE_MON
disconnected, I connect THUNDERBOLT4_HOST
to HOST
.
DESK_MON
connects and is assigned the name DP-6
(!). It takes the configuration intended for PORTABLE_MON
.
I connect PORTABLE_MON
to MASTER_HUB
(at the device end) and it names the name DP-5
, with the configuration intended for DESK_MON
. It cannot display an image.
- Connect
PORTABLE_MON
toMASTER_HUB
beforeTHUNDERBOLT4_HOST
toHOST
.
- I did not have to disconnect
DESK_MON
beforehand. - This is acceptable behavior, but it does mean that I must always remove
PORTABLE_MON
from my bag and attach it.
- Swap
DP-5
andDP-6
in Hyprland's configs.
- Not guaranteed to remain this way, may have to swap again.
- Will do this and observe over time if the names switch again.
- Put Precious Time into hyprland-workspace-profiles.
- Which is also intended to fully configure monitor profiles and select one when monitor identifiers change, irrespective of the names assigned
- Invesitigate
udev
and see if it can do something about this (???). - Fix in Hyprland (???).
- Fix in hardware, probably firmware for MASTER_HUB (???).
I have been paying closer attention over the last day and a half, and have noticed that the monitor names appear to switch often. Sometimes after a reboot, but also after resuming from suspend or hibernation. I am continually guessing at the order which to connect the displays.