[Bug 297584] x11-servers/xorg-server: Xorg does not automatically detect outputs/monitors on a USB hub

[email protected]
Newsgroups gmane.os.freebsd.devel.x11
Message-ID <[email protected]/bugzilla/>
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=297584

            Bug ID: 297584
           Summary: x11-servers/xorg-server: Xorg does not automatically
                    detect outputs/monitors on a USB hub
           Product: Ports & Packages
           Version: Latest
          Hardware: amd64
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Individual Port(s)
          Assignee: [email protected]
          Reporter: [email protected]
             Flags: maintainer-feedback?([email protected])
          Assignee: [email protected]

(Preface: I don't know whether this is actually a libudev-devd issue;
I'm filing it as an xorg-server issue because it's the component whose
behavior I am able to observe.)

Short version: I have a laptop, a USB hub, and 2 HDMI monitors plugged
into the hub. When I plug the hub into the laptop, a running Xorg server
appears never to automatically detect the new outputs.

Workaround: switching to a text vt (one of the ones running getty) and
then back to the vt where Xorg is running causes the server to detect
the hub's outputs & that monitors are connected.

Desired behavior: I'd like it if Xorg could detect the USB hub's
outputs & connected monitors without having to do vt switching. (IDK
if this is merely a "nice to have" or "wishlist" request. 25 years of
running X on PC hardware has made me wary of vt switching to/from X:
it has always seemed prone to sporadically wedge a video driver or
hardware. But that's just my paranoia, and I'd be happy to learn if
this is an obsolete worry nowadays.)

Hardware info:

  Lenovo X1 Carbon 6th Generation (manufactured 2018)
    GPU: Intel Kaby Lake (i915kms driver)
    Builtin monitor
    Relevant ports:
      2 USB-C ports
      1 HDMI port

  VVB VB038A 14-in-1 USB-C hub (manufactured 2026)
    Relevant ports:
      2 HDMI ports
      1 DisplayPort

  ASUS VS239 HDMI monitor

  Acer SB220Q HDMI monitor

Relevant software:

  $ freebsd-version -kru
  14.4-RELEASE-p8
  14.4-RELEASE-p7
  14.4-RELEASE-p8
  $  pkg info --regex 'gpu.*|libudev-dev|xorg-server'
  gpu-firmware-intel-kmod-kabylake-20260519.1404000
  libudev-devd-0.6.0
  xorg-server-21.1.24,1

Reproduction steps:

1. While the hub plugged is not plugged in, either start Xorg or log
   in to a display manager.
2. 'xrandr | grep '[^[:space:]]' shows the following "outputs"

  Screen 0: minimum 320 x 200, current 2560 x 1440, maximum 16384 x 16384
  eDP-1 connected primary 2560x1440+0+0 (normal left inverted right x axis y
axis) 309mm x 174mm
  DP-1 disconnected (normal left inverted right x axis y axis)
  HDMI-1 disconnected (normal left inverted right x axis y axis)
  DP-2 disconnected (normal left inverted right x axis y axis)
  HDMI-2 disconnected (normal left inverted right x axis y axis)

  (Aside: I can verify that DP-1 and DP-2 correspond to the laptop's 2
  USB-C ports. As there is only one HDMI port, I don't know why xrandr
  shows two HDMI outputs, but I'm supposing that's an irrelevant &
  orthogonal quirk.)

3. Plug the USB hub in to the laptop.
4. The xrandr output remains unchanged since step 2.

5. [workaround] After switching to a text vt and then back to the vt
   where X is running, the filtered xrandr output contains 3 more
   outputs, 2 of them "connected". (I presume DP-1-3 represents the
   hub's DisplayPort, which I'm not using.)

  Screen 0: minimum 320 x 200, current 2560 x 1440, maximum 16384 x 16384
  eDP-1 connected primary 2560x1440+0+0 (normal left inverted right x axis y
axis) 309mm x 174mm
  DP-1 disconnected (normal left inverted right x axis y axis)
  HDMI-1 disconnected (normal left inverted right x axis y axis)
  DP-2 disconnected (normal left inverted right x axis y axis)
  HDMI-2 disconnected (normal left inverted right x axis y axis)
  DP-1-1 connected (normal left inverted right x axis y axis)
  DP-1-2 connected (normal left inverted right x axis y axis)
  DP-1-3 disconnected (normal left inverted right x axis y axis)


Potentially relevant diagnostic information:

- While on one of the text vts, when I plug in the USB hub, after
  about 5 or 6 seconds the HDMI monitors mirror the built-in monitor
  (modulo resolution issues).

- Here's a diff of 'devinfo -rv' outupt upon plugging in the USB hub.

@@ -1800,6 +1874,9 @@
                   iicbus5 <Philips I2C bus>
                     iic5 <I2C generic I/O> at addr=0
               drm5
+              drm6
+              drm7
+              drm8
             lkpi_iic0 <LinuxKPI I2C>
               iicbus0 <Philips I2C bus>
                 iic0 <I2C generic I/O> at addr=0
@@ -1900,6 +1977,12 @@
             lkpi_iic35 <LinuxKPI I2C>
               iicbus36 <Philips I2C bus>
                 iic36 <I2C generic I/O> at addr=0
+            lkpi_iic36 <LinuxKPI I2C>
+              iicbus37 <Philips I2C bus>
+                iic37 <I2C generic I/O> at addr=0
+            lkpi_iic37 <LinuxKPI I2C>
+              iicbus38 <Philips I2C bus>
+                iic38 <I2C generic I/O> at addr=0

- I also have an ASUS MB16ACV USB-C portable monitor (manufactured
  2021). When I plug this in to one of the laptop's built-in
  USB-C ports, xrandr promptly shows either of DP-1 or DP-2 as
  "connected".

My interpretation of the first 2 points is that drivers are
automatically detecting the ports & monitors. I don't know what to
make of the third point, except to infer that Xorg (or libudev-devd)
is watching for at least some state changes.

-- 
You are receiving this mail because:
You are the assignee for the bug.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.