DisplayLink now working for some hardware for Ubuntu 21.04, 21.10 (NVIDIA is a problem)

By | October 15, 2021

UPDATE [2021-12-22]: With the the recently released update, 5.5.0-59.118, both Wayland and Xorg work on my PC with an Intel graphics controller, and Wayland doesn’t work on my PC with an NVIDIA controller without the proprietary NVIDIA driver, but Xorg does. I did not test whether Wayland or Xorg works with the proprietary NVIDIA controller, but I suspect it doesn’t.


As far as I can tell, the current version of the DisplayLink driver available for download:

  • works on systems with non-NVIDIA graphics controllers (or at least some of them; it works with my Intel controller) in both Ubuntu 21.04 and Ubuntu 21.10;
  • works with Xorg for systems with NVIDIA if you don’t have any proprietary NVIDIA driver (i.e., “nvidia-driver-###” package) installed and you’re therefore using the open-source “nouveau” driver instead;
  • does not work with Xorg with the proprietary NVIDIA driver; and
  • does not work with Wayland for systems with NVIDIA regardless of whether you are using the proprietary or open-source driver.

Your mileage may vary, of course, but if you’ve got NVIDIA and you’re seeing the same behavior I am, then if you want to use DisplayLink, the only way to do that is to both uninstall the proprietary NVIDIA driver and disable Wayland.

To Disable Wayland, put WaylandEnable = False in the [daemon] section of /etc/gdm3/custom.conf and then reboot just to be certain.

If you previously followed my instructions here for making DisplayLink work with Ubuntu 21.04, then whether or not you’ve got NVIDIA, you should undo that and upgrade to the newest DisplayLink release. To do that:

  1. Unplug your DisplayLink hub.
  2. Download the newest DisplayLink installer for Ubuntu from here.
  3. Unpack the ZIP file in the download, which will give you a “.run” file.
  4. Make the “.run” file executable: chmod +x displaylink*.run
  5. Use the “.run” file to uninstall DisplayLink: sudo ./displaylink*.run uninstall
  6. Unhold the kernel packages that were held by the instructions in my earlier blog posting: sudo apt-mark unhold $(sudo apt-mark showhold | grep '^linux')
  7. Update to the current kernel version: sudo apt-get dist-upgrade
  8. Reboot.
  9. Reinstall DisplayLink. In the directory in which you previously unpacked the ZIP file: sudo ./displaylink*.run
  10. Reboot.

Share

16 thoughts on “DisplayLink now working for some hardware for Ubuntu 21.04, 21.10 (NVIDIA is a problem)

  1. truc

    After do recall to my memory about what I did previously, I remember that I disabled Secure boot. Then after I disable it and reboot. The External Monitor is working again. That should be the reason it didn’t work before.

    Reply
  2. truc

    I made an upgrade to 21.10 yesterday and already regret that decision :(. Previously I can install displaylink on both 20.04 and 21.04. But right now my Dell Monitor display doesn’t detect anything from my Dell Latitude 7490. Even the trick of removing the old DL unplug the hub…
    It should be something else.

    Reply
  3. Gianpaolo Pedrazza

    I have a Dell XPS 13 laptop (no NVIDIA) with Ubuntu 21.10. I tried to follow the instruction above and to disable security boot. I did a reboot, but the laptop was hanging at startup. I could only see a blinking minus on the top left corner, all the rest of the screen was black. I suspected it means the fresh installed kernel module cannot be loaded. This looks quite strength to me. I decided to enable security boot again in BIOS and the laptop was able to boot again. Any suggestions?

    Reply
    1. jik Post author

      I don’t think this has anything to do with DisplayLink. If all you could see was the blinking cursor then you didn’t even get past grub, i.e., the kernel never booted.

      Reply
      1. Gianpaolo Pedrazza

        I realized that I overlooked your suggestion about disabling Wayland, so I have not done it.
        Following links
        https://itectec.com/ubuntu/ubuntu-ubuntu-20-04-cursor-blinking-at-boot-after-installing-nvidia-drivers/
        https://askubuntu.com/questions/297080/ubuntu-open-to-black-screen-with-blinking-underscore-character-after-release-upg
        are suggesting to do so as a fix against a blinking cursor, but they are not related with DisplayLink. Did you warned about, because you know an incompatibility between DisplayLink and Wayland?

        Reply
        1. Gianpaolo Pedrazza

          I meant some other incompatibility beside the one related with NVIDIA you described.

          Reply
            1. Gianpaolo Pedrazza

              I found that there is a crash in dma-buf on kernel [1] which is still not fixed in the newest DisplayLink installer for Ubuntu [2]. Therefore I cloned the github repository first, then I built a new tar.gz file including the latest commit on the devel branch and I installed the kernel module. Unfortunately it crashed again due to Mesa 21 being unsupported [3] so I needed to enable Wayland again to make it definitely working.
              [1] https://github.com/DisplayLink/evdi/issues/313
              [2] https://www.synaptics.com/node/4036?filetype=exe
              [3] https://githubmemory.com/repo/DisplayLink/evdi/issues/274.

            2. jik Post author

              I ran into some versions of some of those problems with Wayland enabled but none of them with the current DisplayLink installer with Wayland disabled, so I’m not sure I understand your “I needed to enable Wayland again to make it definitely working.” That was definitely not my experience.

  4. Joachim

    Hi Jonathan,

    thank you for the informations and all the effort you put into this.
    I wasn’t even aware of the problem, despite being on PopOS 21.04 because it seems, I always had the right driver by accident (Notebook with Intel Iris Xe).
    Unfortunately, Kernel 5.15 seems to break it for me eve with the newest (downloaded yesterday) drivers.5.13 is working ok.

    Just FYI.

    Reply
  5. Martin Leopold

    Hi Jonathan.
    I’m kinda stuck here – and I’ve been following along your journey. Perhaps you have a hint for me? On a clean-installed Ubuntu 21.10 I’m getting a build error on the kernel module and I have no idea why – the log refers to a missing syscall_32.tbl that i have no idea how to provide.

    I run the installer and it produces the following output:
    sudo ./displaylink-driver-5.2.14.run
    Verifying archive integrity… 100% All good.
    Uncompressing DisplayLink Linux Driver 5.2.14 100%
    DisplayLink Linux Software 5.2.14 install script called: install
    Distribution discovered: Ubuntu 21.10
    Installing
    Configuring EVDI DKMS module
    Registering EVDI kernel module with DKMS
    Building EVDI kernel module with DKMS
    ERROR (code 3): Failed to build evdi/5.2.14. Consult /var/lib/dkms/evdi/5.2.14/build/make.log for details..

    Log output:
    DKMS make.log for evdi-5.2.14 for kernel 5.13.0-21-generic (x86_64)
    Wed Nov 10 14:43:43 CET 2021
    make KBUILD_VERBOSE=1 SUBDIRS=/var/lib/dkms/evdi/5.2.14/build SRCROOT=/var/lib/dkms/evdi/5.2.14/build CONFIG_MODULE_SIG= -C /lib/modules/5.13.0-21-generic/build modules
    make[1]: Entering directory ‘/usr/src/linux-headers-5.13.0-21-generic’
    make -f ./scripts/Makefile.build obj=arch/x86/entry/syscalls all
    make -f ./scripts/Makefile.build obj=scripts/basic
    set -e; mkdir -p include/config/; trap “rm -f include/config/.kernel.release.tmp” EXIT; { echo “5.13.18$(sh ./scripts/setlocalversion .)”; } > include/config/.kernel.release.tmp; if [ ! -r include/config/kernel.release ] || ! cmp -s include/config/kernel.release include/config/.kernel.release.tmp; then : ‘ UPD include/config/kernel.release’; mv -f include/config/.kernel.release.tmp include/config/kernel.release; fi
    make -f ./scripts/Makefile.asm-generic obj=arch/x86/include/generated/uapi/asm \
    generic=include/uapi/asm-generic
    set -e; mkdir -p include/generated/uapi/linux/; trap “rm -f include/generated/uapi/linux/.version.h.tmp” EXIT; { if [ 18 -gt 255 ]; then echo \#define LINUX_VERSION_CODE 331263; else echo \#define LINUX_VERSION_CODE 331026; fi; echo ‘#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) < 255 ? 255 : (c)))’; echo \#define LINUX_VERSION_MAJOR 5; echo \#define LINUX_VERSION_PATCHLEVEL 13; echo \#define LINUX_VERSION_SUBLEVEL 18; } > include/generated/uapi/linux/.version.h.tmp; if [ ! -r include/generated/uapi/linux/version.h ] || ! cmp -s include/generated/uapi/linux/version.h include/generated/uapi/linux/.version.h.tmp; then : ‘ UPD include/generated/uapi/linux/version.h’; mv -f include/generated/uapi/linux/.version.h.tmp include/generated/uapi/linux/version.h; fi
    ./scripts/remove-stale-files
    make -f ./scripts/Makefile.asm-generic obj=arch/x86/include/generated/asm \
    generic=include/asm-generic
    warning: Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel
    gcc -Wp,-MMD,scripts/basic/.fixdep.d -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89 -o scripts/basic/fixdep scripts/basic/fixdep.c
    make[2]: *** No rule to make target ‘arch/x86/entry/syscalls/syscall_32.tbl’, needed by ‘arch/x86/include/generated/uapi/asm/unistd_32.h’. Stop.
    error: Cannot resolve BTF IDs for CONFIG_DEBUG_INFO_BTF, please install libelf-dev, libelf-devel or elfutils-libelf-devel
    make[1]: *** [arch/x86/Makefile:231: archheaders] Error 2
    make[1]: *** Waiting for unfinished jobs….
    make[1]: *** [Makefile:1290: prepare-resolve_btfids] Error 1
    rm -f .tmp_quiet_recordmcount
    make[1]: Leaving directory ‘/usr/src/linux-headers-5.13.0-21-generic’
    make: *** [Makefile:22: all] Error 2

    Reply
      1. Martin Leopold

        Facepalm. I had an older version of the installer lying and missed that I was running the wrong one. With the right installer it builds correctly.

        Thanks Johnathan :D.

        – Martin

        Reply
  6. Akber Khan

    Hi Jonathan,

    Thank you for posting this – I recently upgraded to Ubuntu 21.10 from 20.04 LTS and now my external monitors won’t show up even though other peripherals connected to my dock (mouse, keyboard) are working fine. I have an integrated intel GPU. I followed your instructions here, minus the unhold portion because I hadn’t implemented your prior fix, but I get the following error when reinstalling the DisplayLink in step 9:

    Verifying archive integrity… 100% All good.
    Uncompressing DisplayLink Linux Driver 5.4.1-55.174 100%
    DisplayLink Linux Software 5.4.1-55.174 install script called:
    Distribution discovered: Ubuntu 21.10

    Installing

    [ Installing EVDI ]
    [[ Installing EVDI DKMS module ]]

    Creating symlink /var/lib/dkms/evdi/1.9.1/source ->
    /usr/src/evdi-1.9.1

    DKMS: add completed.

    Kernel preparation unnecessary for this kernel. Skipping…

    Building module:
    cleaning build area…
    make -j4 KERNELRELEASE=5.13.0-20-generic all INCLUDEDIR=/lib/modules/5.13.0-20-generic/build/include KVERSION=5.13.0-20-generic DKMS_BUILD=1…(bad exit status: 2)
    ERROR (dkms apport): binary package for evdi: 1.9.1 not found
    Error! Bad return status for module build on kernel: 5.13.0-20-generic (x86_64)
    Consult /var/lib/dkms/evdi/1.9.1/build/make.log for more information.
    ERROR: Failed to install evdi to the kernel tree.

    Any help is much appreciated – I’m not super a experienced Linux user (wishing I had just stayed with the LTS version!)

    Reply
    1. jik Post author

      I am not certain, but my best guess is that you have the Ubuntu evdi packages installed and the DisplayLink isn’t coping well with that.

      Check if you have the Ubuntu packages “evdi-dkms”, “libevdi0”, and/or “libevdi0-dev” installed, and if so, then uninstall them and then try the DisplayLink installer again.

      Reply
  7. Pingback: DisplayLink isn’t *quite* working in Ubuntu 21.04 (Hirsute) – Something better to do

Leave a Reply

Your email address will not be published. Required fields are marked *