Skip to content

colormgr get-devices is empty when two identical monitor models are plugged in #164

Description

@voidptr127

System: Fedora 39 (Workstation), GNOME: 45.3, Kernel 6.6.12-200

I can't assign ICC profiles to my monitors because colormgr get-devices returns nothing when two identical monitor models are plugged in. This also affects the gnome-color-manager where neither monitor is shown when both are plugged in.

First, I checked system logs and got the following:

$ sudo journalctl -xe | grep colord
[...] gnome-shell[2099]: Failed to create colord device for 'xrandr-Acer Technologies-XF270HU-T78EE0048521': device id 'xrandr-Acer Technologies-XF270HU-T78EE0048521' already exists

Next, I unplugged both displayport cables, then only plugged one monitor back in. In this case, everything works as expected:

$ sudo colormgr get-devices 
Object Path:   /org/freedesktop/ColorManager/devices/xrandr_Acer_Technologies_XF270HU_T78EE0048521_xxxxx_1234
Owner:         xxxxx
Created:       January 24 2024, 03:08:54 PM
Modified:      January 24 2024, 03:08:54 PM
Type:          display
Enabled:       Yes
Embedded:      No
Model:         XF270HU
Vendor:        Acer
Serial:        T78EE0048521
Scope:         temp
Colorspace:    rgb
Device ID:     xrandr-Acer Technologies-XF270HU-T78EE0048521
Profile 1:     icc-f02b98744a0e3b3abfdd767bf9bbc8ab
               /var/lib/colord/icc/Acer XF270HUA-center.icm
Metadata:      OutputEdidMd5=1a7e20b4e5f0fbc8d83026b0fc75d8a4
Metadata:      OutputPriority=primary
Metadata:      XRANDR_name=DP-2
Metadata:      OwnerCmdline=/usr/bin/gnome-shell

Note that at this stage, I could also assign the ICC profile. However, it only works for the monitor that was plugged in. As soon as I plug in the second monitor, colormgr get-devices returns nothing and the default ICC profile for the other monitor is used. I also compared both outputs of colormgr get-devices. Both return exactly the same model and serial number.

Here is two times the output from colord with the --verbose flag set:

The first output shows what colord prints when I did stop colord and unplugged both monitors. Then I hit enter (blindly) to start colord, and plugged both monitors in, one after another. The second output is printed when I killed the previous process and started it afterwards while both monitors were already plugged in.

Particularly interesting might be these lines from the second file:

sudo -u colord /usr/libexec/colord --verbose
[...]
16:26:01	display card1-DP-2 has ID 'xrandr-Acer-XF270HU-T78EE0048521' from MD5 1a7e20b4e5f0fbc8d83026b0fc75d8a4
16:26:01	display card1-DP-3 has ID 'xrandr-Acer-XF270HU-T78EE0048521' from MD5 5516e0495119e86738e01422cfb835aa
[...]

I am not entirely sure about the expected behavior, but I suspect that the names should differ to avoid the confusion.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions