External monitor not recognized
- Which platforms and features are affected
- External multi monitor set up over DP-MST
- The following information about your system:
- -- system architecture: x86_64
- -- kernel version: 5.13.5-arch1-1
- -- Linux distribution: Sway
- -- Machine or mother board model: Dell XPS-13 9300
- -- Display connector: Two HDMI over an USB Type C Adapter Docking Station
- A full dmesg with debug information and/or a GPU crash dump: https://gist.github.com/mordax7/98347b933a51825cc8988dbfd328dfbe
- Other attachments if relevant:
- screenshot or photo:
- output of "xrandr --verbose" for display mode issue; https://gist.github.com/mordax7/ec9ed5f20785f79f3ee84a689ff17596
- intel_reg_dumper output: https://gist.github.com/mordax7/7227c26228850c83e27394d34b0fa230
- VBIOS for display issues: Can not execute any of the commands because I am getting a
Permission denied
even if I am doing with root rights.
Initially, I created an issue at Sway, but they redirected me here for further debugging since apparently, it is not an issue with Sway. Here is the summary of their issue:
When connecting two external HDMI monitors over the USB Type C Adapter Docking Station to my laptop, I expect swaymsg -t get_outputs
to return tree outputs(Laptop's screen and the two monitors). Still, the kernel reports only a single external screen, even if I have connected two. So if you take a look at the picture provided in this issue, you can see that the monitors are mirrored. That the kernel reports only one screen can be seen by viewing the output from drm_info
for one external monitor and compare it with when both are connected, here is also the diff
between the outputs of drm_info
:
39c39
< │ │ ├───"EDID" (immutable): blob = 296
---
> │ │ ├───"EDID" (immutable): blob = 297
103c103
< │ │ ├───"EDID" (immutable): blob = 280
---
> │ │ ├───"EDID" (immutable): blob = 282
108c108
< │ │ ├───"CRTC_ID" (atomic): object CRTC = 167
---
> │ │ ├───"CRTC_ID" (atomic): object CRTC = 236
274c274
< │ │ ├───"GAMMA_LUT": blob = 291
---
> │ │ ├───"GAMMA_LUT": blob = 294
278d277
< │ │ ├───Mode: 1920x1080@60.00 preferred driver phsync pvsync
281,283c280,281
< │ │ ├───"ACTIVE" (atomic): range [0, 1] = 1
< │ │ ├───"MODE_ID" (atomic): blob = 286
< │ │ │ └───1920x1080@60.00 preferred driver phsync pvsync
---
> │ │ ├───"ACTIVE" (atomic): range [0, 1] = 0
> │ │ ├───"MODE_ID" (atomic): blob = 0
293a292
> │ ├───Mode: 1920x1080@60.00 preferred driver phsync pvsync
296,297c295,297
< │ ├───"ACTIVE" (atomic): range [0, 1] = 0
< │ ├───"MODE_ID" (atomic): blob = 0
---
> │ ├───"ACTIVE" (atomic): range [0, 1] = 1
> │ ├───"MODE_ID" (atomic): blob = 286
> │ │ └───1920x1080@60.00 preferred driver phsync pvsync
304c304
< │ ├───"GAMMA_LUT": blob = 0
---
> │ ├───"GAMMA_LUT": blob = 292
310,311c310,311
< │ ├───FB ID: 279
< │ │ ├───Object ID: 279
---
> │ ├───FB ID: 288
> │ │ ├───Object ID: 288
349,350c349,350
< │ ├───"FB_ID" (atomic): object framebuffer = 279
< │ │ ├───Object ID: 279
---
> │ ├───"FB_ID" (atomic): object framebuffer = 288
> │ │ ├───Object ID: 288
1451,1452c1451,1452
< │ ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = -213
< │ ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 569
---
> │ ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = -63
> │ ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 898
1467,1473c1467
< │ ├───FB ID: 289
< │ │ ├───Object ID: 289
< │ │ ├───Size: 1920x1080
< │ │ ├───Format: ARGB8888 (0x34325241)
< │ │ ├───Modifier: I915_FORMAT_MOD_X_TILED (0x100000000000001)
< │ │ └───Planes:
< │ │ └───Plane 0: offset = 0, pitch = 7680
---
> │ ├───FB ID: 0
1506,1512c1500
< │ ├───"FB_ID" (atomic): object framebuffer = 289
< │ │ ├───Object ID: 289
< │ │ ├───Size: 1920x1080
< │ │ ├───Format: ARGB8888 (0x34325241)
< │ │ ├───Modifier: I915_FORMAT_MOD_X_TILED (0x100000000000001)
< │ │ └───Planes:
< │ │ └───Plane 0: offset = 0, pitch = 7680
---
> │ ├───"FB_ID" (atomic): object framebuffer = 0
1514c1502
< │ ├───"CRTC_ID" (atomic): object CRTC = 167
---
> │ ├───"CRTC_ID" (atomic): object CRTC = 0
2608,2609c2596,2597
< │ ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 862
< │ ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 592
---
> │ ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 994
> │ ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 998
2624c2612,2618
< │ ├───FB ID: 0
---
> │ ├───FB ID: 291
> │ │ ├───Object ID: 291
> │ │ ├───Size: 1920x1080
> │ │ ├───Format: ARGB8888 (0x34325241)
> │ │ ├───Modifier: I915_FORMAT_MOD_X_TILED (0x100000000000001)
> │ │ └───Planes:
> │ │ └───Plane 0: offset = 0, pitch = 7680
2657c2651,2657
< │ ├───"FB_ID" (atomic): object framebuffer = 0
---
> │ ├───"FB_ID" (atomic): object framebuffer = 291
> │ │ ├───Object ID: 291
> │ │ ├───Size: 1920x1080
> │ │ ├───Format: ARGB8888 (0x34325241)
> │ │ ├───Modifier: I915_FORMAT_MOD_X_TILED (0x100000000000001)
> │ │ └───Planes:
> │ │ └───Plane 0: offset = 0, pitch = 7680
2659c2659
< │ ├───"CRTC_ID" (atomic): object CRTC = 0
---
> │ ├───"CRTC_ID" (atomic): object CRTC = 236
2662,2663c2662,2663
< │ ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 0
< │ ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 0
---
> │ ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 1920
> │ ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 1080
2666,2667c2666,2667
< │ ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 0
< │ ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 0
---
> │ ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 1920
> │ ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 1080
3745c3745,3751
< ├───FB ID: 0
---
> ├───FB ID: 280
> │ ├───Object ID: 280
> │ ├───Size: 256x256
> │ ├───Format: ARGB8888 (0x34325241)
> │ ├───Modifier: DRM_FORMAT_MOD_LINEAR (0x0)
> │ └───Planes:
> │ └───Plane 0: offset = 0, pitch = 1024
3750c3756,3762
< ├───"FB_ID" (atomic): object framebuffer = 0
---
> ├───"FB_ID" (atomic): object framebuffer = 280
> │ ├───Object ID: 280
> │ ├───Size: 256x256
> │ ├───Format: ARGB8888 (0x34325241)
> │ ├───Modifier: DRM_FORMAT_MOD_LINEAR (0x0)
> │ └───Planes:
> │ └───Plane 0: offset = 0, pitch = 1024
3752,3756c3764,3768
< ├───"CRTC_ID" (atomic): object CRTC = 0
< ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 0
< ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 0
< ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 0
< ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 0
---
> ├───"CRTC_ID" (atomic): object CRTC = 236
> ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 180
> ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 232
> ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 256
> ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 256
3759,3760c3771,3772
< ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 0
< ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 0
---
> ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 256
> ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 256
When purchasing the adapter, they stated that it supports DP-MST, but you never know what you will get. So my question would be, is this a kernel problem, or is just the adapter not working properly?