Bugzilla Automation <[email protected]> has asked freebsd-x11 (Nobody)
<[email protected]> for maintainer-feedback:
Bug 297584: x11-servers/xorg-server: Xorg does not automatically detect
outputs/monitors on a USB hub
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=297584
--- Description ---
(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.
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.