Over the past few weeks, I’ve been expanding my two-screen setups into three-screen setups — a laptop plus two external monitors. Because I thought I only had one display port (HDMI), I went searching for USB display adapters.
(I just realized today that my ThinkPad T470 has a USB-C / Thunderbolt 3 port that I’ve ignored for seven and a half years… if I’d known that, I would have just got a USB-C cable for the second external monitor!)
I settled on a Plugable USB-VGA-165 specifically because it’s an older device that uses an older DisplayLink chipset (DL-165), which I read does not require the proprietary Synaptics driver to work in GNU/Linux, but rather works with a libre driver. I plugged it into several Ubuntu 24.04 LTS laptops, and it just worked. But on my Debian 12 laptops, it would only display a green screen and was not recognized in GNOME as an external display.
I spent about 3 hours in search of a solution, trying to figure out what I needed to install to get it to work. However, after compared dmesg
and lsmod
output in Debian vs Ubuntu, I figured out that I already had the driver I needed, but I just needed to disable another driver to get it to load.
Long story short, this was what got it working for me, inspired by this guide for Debian Jessie:
echo "blacklist udlfb" | sudo tee /etc/modprobe.d/blacklist-framebuffer.conf
sudo modprobe -r udlfb
Then, it just works!
Rationale
I decided to try that based on a lot of back and forth with DuckDuckGo, Google, and ChatGPT, and comparing the dmesg
output between my Ubuntu and Debian systems.
In Ubuntu GNU/Linux (where it was working), this is what my dmesg
output looked like when I plugged in the USB-VGA-165:
[ 4575.268341] usb 3-3: new high-speed USB device number 7 using xhci_hcd
[ 4575.386635] usb 3-3: device descriptor read/64, error -32
[ 4575.624214] usb 3-3: New USB device found, idVendor=17e9, idProduct=037b, bcdDevice= 1.03
[ 4575.624233] usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 4575.624238] usb 3-3: Product: Plugable USB-VGA-165
[ 4575.624243] usb 3-3: Manufacturer: DisplayLink
[ 4575.624246] usb 3-3: SerialNumber: 354429
[ 4575.628984] [drm] vendor descriptor length:1b data:1b 5f 01 00 19 05 00 01 03 00 04
[ 4575.630318] [drm] Initialized udl 0.0.1 20120220 for 3-3:1.0 on minor 3
[ 4575.630325] [drm] Initialized udl on minor 3
[ 4575.785071] fbcon: Deferring console take-over
[ 4575.785084] udl 3-3:1.0: [drm] fb1: udldrmfb frame buffer device
Whereas in Debian GNU/Linux, I was seeing this:
[308404.046334] usb 1-2: new high-speed USB device number 8 using xhci_hcd
[308404.162304] usb 1-2: device descriptor read/64, error -32
[308404.399059] usb 1-2: New USB device found, idVendor=17e9, idProduct=037b, bcdDevice= 1.03
[308404.399061] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[308404.399062] usb 1-2: Product: Plugable USB-VGA-165
[308404.399063] usb 1-2: Manufacturer: DisplayLink
[308404.399064] usb 1-2: SerialNumber: 354429
[308404.402669] udlfb 1-2:1.0: vendor descriptor length: 27 data: 1b 5f 01 00 19 05 00 01 03 00 04
[308404.402671] udlfb 1-2:1.0: DL chip limited to -17152 pixel modes
[308404.502946] usb 1-2: fb1 is DisplayLink USB device (1920x1080, 8104K framebuffer memory)
I’ve made the relevant lines bold: My Ubuntu system was using udl
(via DRM), whereas my Debian system was using udlfb
(without DRM). (I also learned today that, in this context, DRM stands for the Linux kernel’s Direct Rendering Manager subsystem – not Digital Restrictions Management). So, when I saw the Debian Jessie instructions to blacklist udlfb
as an older driver compared to the newer udl
, it made sense — Ubuntu was using udl
and it was working, whereas Debian was using udlfb
and it wasn’t. And disabling udlfb
worked! No more green screen.
I’m posting this because most of the other resources I found were very unhelpful, guidance on evdi-dkms
or the proprietary Synpatic driver, none of which applies to this old DL-165 chipset or is necessary or relevant. udl
is sufficient, you just need to manually blacklist the older udlfb
in Debian so it doesn’t get confused.
I hope this saves someone else some time. Meanwhile, now that I realize I’ve been sitting with an ignored USB-C / Thunderbolt 3 port for seven and a half years, I’m looking up USB-C display cables for my other new triple monitor setup…