DisplayLink USB 2.0 Graphics Adapters on Linux – 2014 Edition

IMG_20140306_164523A little over a year ago I wrote a blog post discussing the state of USB Graphics on Linux systems, specifically, Fedora 18. What follows is an update on the situation, looking at both Fedora 20 and Ubuntu 13.10, and examining how far we have come, and how far we still have to go.

The short story

Multi-monitor on Linux, especially with multiple graphics cards and USB graphics adapters, remains problematic. You can find many distros and configurations where it just won’t work. We’d recommend staying away unless you’re an advanced Linux user who is willing to play with different distros, install optional components and do hand configuration. Unfortunately, it’s just not plug and play yet today, as it is on Windows.

The long story

That said, it is possible to get things working in limited scenarios for USB 2.0 generation DisplayLink-based adapters. We used all Plugable products in the tests for this post. Our test systems included Intel, Nvidia, and AMD primary graphics adapters. For Nvidia and AMD, we tested both the open-source and proprietary drivers.

Intel is the most compatible, providing decent results under all configurations.
Nvidia graphics cards, when running the open source nouveau driver, only work in Multi-Seat mode. Attempting multi-monitor setup with a DisplayLink adapter and an Nvidia graphics card results in garbage graphics being displayed on your DisplayLink-attached monitor. The Nvidia proprietary drivers do not work under any scenario.
The AMD open-source drivers work under both multi-seat and multi-monitor setups, but the performance, at least in our tests, is significantly worse than with the Intel drivers.
The AMD proprietary drivers are unavailable in any easy to install package under Fedora 20, but we installed them in Ubuntu, and were unable to get any results, they simply do not work with DisplayLink graphics.

Fedora 20

Fedora has always provided the best support for DisplayLink graphics on Linux. We noticed some regressions on Fedora 19, but these have largely been resolved in Fedora 20. There isn’t much new to report.

You should be able to connect one of our docking stations and create a plug-and-play multi-seat setup, or connect one of our display adapters, and expand your desktop to an extra monitor using the Arandr utility, or something similar.

Ubuntu 13.10

Ubuntu still has several issues with DisplayLink graphics, and they do not work out of the box.

In order to enable DisplayLink adapters to work on Ubuntu, one must download the latest Mainline Kernel build from the Ubuntu Kernel PPA, install it, and then reboot with that kernel. Once this is done, DisplayLink graphics adapters will work in multi-monitor mode. Simply enable them from System Settings like you would enable any extra monitor attached to your PC.

A step-by-step guide to accomplish this will not be provided because switching away from your distro-provided kernel is something only expert users should attempt.

It should be noted that the reason this is necessary is due to the Ubuntu team making some changes to the kernel that they ship with Ubuntu, resulting in broken DisplayLink graphics support. A bug report has been submitted, here.

You can also keep track of the USB Graphics situation under Ubuntu in this blueprint.

Performance

Performance continues to be an issue with DisplayLink on Linux. Using a composited window manger(Gnome 3, Unity, Cinnamon, etc) will result in poor performance across all of your displays. Compositing re-renders far more pixels than non-compositing desktops. When you’re just going through a GPU, you’ll only notice battery loss. But when all those pixels have to get processed by the CPU and sent over USB, it’s a huge hit.

Switching to a lighter-weight window manager or desktop environment (XFCE, LMDE, Mate, etc) results in a quite usable setup, provided your main display adapter is a recent Intel chip.

Unfortunately, due to the discontinuation of Gnome 3’s fallback mode, that is no longer an option for improved performance.

Other Outstanding Bugs

Besides the issues I mentioned above, there’s still a few other problems.

When rebooting your Linux computer, or simply logging out and back in, your USB-attached displays will not always come back without having to disconnect and reconnect them.

Changing the location of your DisplayLink screens in your virtual desktop can sometimes cause strange issues (like only half of the monitor rendering). Toggling the screen on and off inside of your Display management UI usually solves this.

Nvidia’s and AMD’s proprietary drivers are still entirely incompatible with DisplayLink graphics on Linux.

Conclusion

We hope this background helps. We don’t recommend or support USB graphics on Linux yet, because of the problems above — but if you do have questions, please feel free to comment below. We want to get as much information out as possible about what works and doesn’t, so things can improve here. There’s no reason Linux can’t have the same or better multi-monitor support as any other platform in time!

If you are an Open Source Kernel or User-Space developer that would like to help improve this situation, we’d like to point you to our Plugable Open Source Hardware Samples Program where you may sign up to receive free sample hardware to help on your development efforts.

42 comments on “DisplayLink USB 2.0 Graphics Adapters on Linux – 2014 Edition”

    • arrith

      One thing is the kernel freeze for 14.04 is coming up on April 3rd and I would love to have DisplayLink adapters work out of the box like you say they do on Fedora.

      I could possibly buy and test the Plugable UGA-165 if that would help or is necessary.

    • Mike

      I have and it does work …
      Cept i loose my settings apon reboot …

    • Damian

      works out of the box but huge amount of issues including what is mentioned above with only half the monitor rending sometimes. Also lots of locking up of the system and now as of today its stopped working altogether since the last update.

  1. Antonio

    I love you guys for working on this. I’ve been dreaming of 3 monitors on Ubuntu for years now!

  2. JASTECH

    I build custom systems with Ubuntu OS. Customers wanting quality USB 3.0 internal/external. We also use customize ROM’s for Android and external USB 3.0 is in demand, also to HDMI.

  3. Mark Lord (kernel dev)

    Any idea what the trouble of coexisting with nouveau might be?
    I’m trying here with a DL-195 (from Plugable!), and it really seems like the scrambled display is getting its data from the wrong memory.

    Dragging a black or white window across the DL display produces no changes whatsoever in the scrambling, which is why I suspect its using the wrong data source or something somewhere.

    • Bernie Thompson

      Hi Mark, when using UDL (DisplayLink DRM driver) on recent kernels, I believe you’re using David Airlie’s DMABUF and PRIME codepaths (http://www.phoronix.com/scan.php?page=news_item&px=MTA3OTQ). I don’t understand enough about how this works, unfortunately — but there are still many combinations of hardware that doesn’t have the same/right level of DMABUF and/or PRIME support, and seem to fail like you’re seeing. But I don’t really understand what’s happening there architecturally with DRM, so I’m just not sure. Sorry can’t be more help.

      • Mark Lord

        Okay, Sounds like there’s some detective work needed for Nouveau interactions. ODd thing is, I’ve also noticed that “xv” (the graphics swiss army knife) cannot screen “grab” on nouveau either, possibly for similar reasons.

        Struggling here to get the DL-195 work with *any* configuration though. Nice modern Ivy-Bridge (all intel) ultraboox (Dell XPS w/Core i7). Tried various kernels from 3.8 through 3.14. The only thing that works thus far is “clone” (same image on all screens). The built-in LCD is 1920×1080, and my external monitor is 1920×1200 native. Clone works for 1680×1050, but not 1920×1080. And anything other than clone appears to work for about half a second, and then BOOM.. the mdm login screen appears.

        I wonder if there’s some magic intel DRM parameter needed, or maybe the drivers are just running out of memory (vmalloc?) for the large screen resolutions?

        Thanks

        • Ivan Fossa Ferrari

          What distro are you testing this on? Fedora has by far the best support. It seems like fixes for the nouveau issue are coming. I was able to get a DisplayLink monitor up with nouveau on the main display recently, just using xrandr. This was under a fully updated Fedora 20.
          The situation is improving, but we are not quite there. The performance was pretty atrocious.

  4. arrith

    Great news! The Plugable UGA-165 works great with Ubuntu 14.04 daily. I’ve only used VGA at 1280×1024 (max this Sony 19″ can support) so far, but plan to test HDMI tomorrow at 1920×1080. I would also test DVI but I don’t have a DVI cable. I’m on an HP DV6-7000 Quad laptop with Ivy Bridge graphics and a discrete Nvidia 650M GT.

    I installed using the 20140401 daily server iso and installed the “ubuntu-desktop” metapackage because the installer, “ubiquity gtk_ui”, would crash at the listing partitions stage (which is fine, I’ve run gpart and testdisk a few times, so my partition table is weird).

    It’s totally smooth under Gnome Flashback using Metacity (from installing the “gnome-panel” package), but the mouse cursor was a bit laggy under Unity. The lagginess would also come and go, but I don’t plan to use Unity.

    Both the unity settings display and arandr saw the connected monitor through the UGA-165 and worked fine. Unplugging the USB while in use requires one to logout and at the login screen the monitor activates again. Suspend might also work, I forgot to try. It remembered positioning between logout/login but I didn’t test if it remembers between reboots.

    To be clear, I made no modifications or tweaks. Just plugged it in and opened settings. Someone did a lot of work, or we got lucky. Either way, very happy with the UGA-165!

    Things still for me to test:
    – HDMI
    – If suspend re-activates the monitor
    – Use of the UGA-165 in a live session
    – If positioning is remembered between reboots
    – VGA at 1920×1080

    • arrith

      My “uname -a” for the trusty install from above is:
      Linux trusty-server2 3.13.0-20-generic #42-Ubuntu SMP Fri Mar 28 09:56:33 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

      And the output from just running “xrandr” with no arguments:
      http://paste.ubuntu.com/7193081/

        • Mark Lord

          I just loaded up todays’ daily of Ubuntu 14.04 onto a USB stick and tried it in the Dell XPS Ultrabook here. Detects the display, allows configuring mirroring / extended desktop etc.. The software pretends to be happy, but the LED on the DL-195 dongle is OFF, as is the external LCD monitor.

        • Mark Lord

          Heh.. managed to crash the X-server. Once I logged in again, though, suddenly the LED is “on”, as is the external monitor, and mirroring / extended desktop is suddenly working. At least until I reboot perhaps.

  5. Damian Ivanov

    I have UD-160A multiseat/dock station. Multiseat works good in openSUSE since release 13.1 but extended desktop renders it unusable. I know that plugable has put efforts in open source and I would love to buy another two usb 3.0 docking stations but I simply can not because it works badly with Linux.

    Sadly I recommend to buy a video card that supports more than 2 monitors, usually these are high end AMD/Nvidia cards.

  6. Fishman

    I tried to use UGA-165 on Ubuntu 14.04 LTS and unfortunately it doesn’t work. I downloaded also MainbuildKernel as advised and it started to work then, but nVidia driver freaked out so I reversed to stable now. Is there any update maybe? Almost 5 months passed so maybe something has changed and it could be reflected in some update to this article.
    Thanks for supporting Linux!

    • Mike

      A fresh install didint work for me either …
      but i do have it working on 14.04lts …
      A friend of mine suggested deleting several files in the Xorg folder … then rebooting ….

      Dont remember what files now … but i think none of them were folders

  7. Saulius

    UGA-165 worked well Ubuntu 14.04 LTS, but it doesn’t work on Ubuntu 14.10 any more! Any ideas how to get it working?

  8. Logik Sounds

    I just upgraded to 14.10 from 14.04LTS and am seeing non-usable characteristics.. the screen displays jarbled mess and the other screeens are almost non usable due to sporratic mouse behavior. Doing further updates to see what I find.

    • AvatarKava

      Same issues here w/ 14.10 (and later updates on 14.04) – garbled junk on the display powered by USB and X behaves erratically on other displays. Is there an existing bug report or other thread about this anyone’s found? Just want to keep in the loop on it.

      • Mike

        Im using a Mimo eye9 … with no issues .. its displaylink powered …. on Lubuntu 14.04 (arm)
        I dont see a bug …. though i use just one display

      • avatarkava

        Recent update seems to have fixed this so you may want to give it another try – for me it was related to an intel driver package.

    • Bernie Thompson

      Thanks for asking. No, unfortunately multiple monitor functionality requires support not just for talking to the device (kernel level), but also at the graphics subsystem and window manager level. Even though the kernel level support might be there, Android is missing those higher level pieces.

  9. Martin

    Thank you guys for working on this, I am really looking forward to using usb3.0 as video input, since more and more laptops today have only HDMI, and there is no other option but to use usb3.0 as input for second external display. If there is some way to help about this, I would gladly consider dedicating some of my free time to speed this up.

  10. encosianima

    I’m trying with UGA-165 on lmde:
    Linux valeprobook 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt7-1 (2015-03-01) x86_64 GNU/Linux

    I’ve got a green screen on the external device so the module is actually loaded, but there’s still something missing (several attempts to change xorg.conf were a completely faillure πŸ˜‰ any hints welcome

    • Ivan Fossa Ferrari

      A green screen indicates that the older, udlfb driver, is being loaded. Generally speaking, it’s better to use the newer udl driver under most scenarios. Try blacklisting udlfb and rebooting.

      sudo echo blacklist udlfb > /etc/modprobe.d/blacklist-udlfb.conf

      • encosianima

        Thanks! Now udlfb are blacklisted, still there’s something missing.

        dmesg:

        [ 654.082649] usb 4-1.2: USB disconnect, device number 5
        [ 655.302510] usb 4-1.2: new high-speed USB device number 6 using ehci-pci
        [ 655.398481] usb 4-1.2: New USB device found, idVendor=17e9, idProduct=03c1
        [ 655.398486] usb 4-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
        [ 655.398489] usb 4-1.2: Product: USB graphic adapter
        [ 655.398491] usb 4-1.2: Manufacturer: DisplayLink
        [ 655.398494] usb 4-1.2: SerialNumber: 20141207012
        [ 655.399720] [drm] vendor descriptor length:1b data:1b 5f 01 00 19 05 00 01 03 00 04
        [ 655.543417] udl 4-1.2:1.0: fb1: udldrmfb frame buffer device
        [ 655.543423] [drm] Initialized udl 0.0.1 20120220 on minor 1
        [ 1008.527850] usb 4-1.2: USB disconnect, device number 6
        [ 1010.477726] usb 3-1.3: new high-speed USB device number 9 using ehci-pci
        [ 1010.575073] usb 3-1.3: New USB device found, idVendor=17e9, idProduct=03c1
        [ 1010.575079] usb 3-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
        [ 1010.575082] usb 3-1.3: Product: USB graphic adapter
        [ 1010.575085] usb 3-1.3: Manufacturer: DisplayLink
        [ 1010.575087] usb 3-1.3: SerialNumber: 20141207012
        [ 1010.576709] [drm] vendor descriptor length:1b data:1b 5f 01 00 19 05 00 01 03 00 04
        [ 1010.742244] udl 3-1.3:1.0: fb1: udldrmfb frame buffer device
        [ 1010.742256] [drm] Initialized udl 0.0.1 20120220 on minor 1

        And xrandr:

        Screen 0: minimum 320 x 200, current 1280 x 800, maximum 8192 x 8192
        LVDS1 connected primary 1280×800+0+0 (normal left inverted right x axis y axis) 286mm x 179mm
        1280×800 60.22*+
        1024×768 60.00
        800×600 60.32 56.25
        640×480 59.94
        VGA1 disconnected (normal left inverted right x axis y axis)
        HDMI1 disconnected (normal left inverted right x axis y axis)
        DP1 disconnected (normal left inverted right x axis y axis)
        HDMI2 disconnected (normal left inverted right x axis y axis)
        HDMI3 disconnected (normal left inverted right x axis y axis)
        DP2 disconnected (normal left inverted right x axis y axis)
        DP3 disconnected (normal left inverted right x axis y axis)

        πŸ˜€ Thanks!

        • Ivan Fossa Ferrari

          That’s a step in the right direction. What’s your primary GPU and what driver are you running for it?

          • encosianima

            Fine!

            vale@valeprobook ~ $ sudo lshw -numeric -C display
            [sudo] password for vale:
            *-display
            description: VGA compatible controller
            product: 2nd Generation Core Processor Family Integrated Graphics Controller [8086:126]
            vendor: Intel Corporation [8086]
            physical id: 2
            bus info: pci@0000:00:02.0
            version: 09
            width: 64 bits
            clock: 33MHz
            capabilities: msi pm vga_controller bus_master cap_list rom
            configuration: driver=i915 latency=0
            resources: irq:46 memory:a0000000-a03fffff memory:90000000-9fffffff ioport:2000(size=64)

  11. encosianima

    πŸ˜‰ Since I’m about to try different kernel version is there any which would make my UGA 165 working with Intel Integrated Graphics card?

    Thanks!

    • Ivan Fossa Ferrari

      Any recent kernel should do. Run this command with your UGA-165 plugged in: xrandr –listproviders
      Do you see two providers?

      • encosianima

        Yes, now It’s working
        But I admit I’ve downgraded kernel to:

        3.13.0-48-generic #80-Ubuntu SMP Thu Mar 12 11:16:15 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
        (previous was)
        3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt7-1 (2015-03-01) x86_64 GNU/Linux

        and that made the trick

        Thanks!

  12. David Ford (FirefighterBlu3)

    greetings,

    what is the current recommended device for a linux 4.1.x kernel (Arch Linux build) that does USB2 (and/or usb3) to HDMI, not larger than 1920×1080 via intel and nvidia (proprietary on one machine & nvidia + bumblebee on laptop) and is deployed for 2D usage (office docs & code dev)? is it stable enough to recommend for purchasing? please note, the laptop is a special love child — the onboard intel hardware died so my display is currently driven from the secondary gpu which negates the second screen use of the external monitor port.

    i’m capable of recompiling a kernel and making patches to it. time is more of a question rather than skill.

    thank you πŸ™‚

Comments are closed.