How to use a USB DisplayLink Monitor with an Raspberry Pi 4
2022-01-27
TLDR;
Try the official DisplayLink Driver beta 5.5 and Ubuntu Mate 32/64bit distribution if you have a newer DisplayLink Screen. Older DisplayLink Screens might work with the opensource driver that comes with the kernel. DisplayLink driver 5.4.1 only works with Ubuntu (Mate) desktop 32bit.
Suggested Installation:
Why
I bought an ASUS MB169B+ USB Displaylink monitor in 2015 in order to have a external screen in the coworking space. My workplace has changed since then, but the screen still works. So I thought I would use it with my Raspberry Pi camping system project.
The ones of you who know how painful linux drivers are might be getting nervous by now. Yes, this was a story of a lot of invested time, but it does have a happy ending.
Note about older DisplayLink devices
There is an open source driver, but it did not work for my 2015 ASUS MB169B+ device.
The documentation for the new displaylink driver notes following device families are supported:
- DL-5xxx
- DL-41xx
- DL-3xxx
"Support for DL-1x5 and DL-1x0 devices is provided by the open source udl driver."
Failed attempts
64 Bit ARM before Version 5.5 beta
Versions older than Version 5.5 beta do not bring ARM 64 bit (armv8/aarch64) binaries. The displaylink driver is a closed binary. Took me a while until I realized this problem. Ubuntu does not offer Ubuntu Desktop for arm 32 bit (armhf) anymore. Ubuntu Mate still does and it worked there.
Version 5.5 beta was released Dec 22, 2021. Thanks Synaptics!
Linux Distributions
As mentioned DisplayLink only supports Ubuntu officially. With the newest beta Ubuntu Desktop finally works.
Other tested Distributions sorted by recommendation:
- Ubuntu Mate: My personal recommendation. See below for configuration tipps.
- Ubuntu Server: It should work, but it's a bit of work to setup. There's Desktopify, but I could not get it to work on Ubuntu 21.10. Installing the packages manually is however doable. This video shows how to use desktopify
- Ubuntu Desktop: I'm not a fan of the new interface. It does not feel very fast on the Pi either.
- Arch Linux/ Manjaro: Seeing the very active community for the displaylink driver, I dived into Arch. I even fixed the github actions of a repo to generate newer Alarm Images (64 bit does not boot). In the end after spending a lot of time to get AUR repos to work, I realized that Manjaro Linux is arch based and an image is available on the official raspberry pi imager. In the end I could not get the displaylink driver to work there either.
- Raspbian OS: The official Raspberry Pi Distribution. I like it quite a lot. However, it did not work with the 32bit version. I had tried to adapt the DisplayLink Driver Installscript for Debian. It's not adapted to Rasbian. The linux headers package has a different name on Raspbian. I tried a lot. It did not work either, because it won't compile.
- DietPi: A very nice distro, that can be configured via textfile in advance and installs configured packages automatically. It's based on Raspbian, so same problems as there.
Debian Linux
DisplayLink Driver Installscript for Debian If you find a way to install regular debian or any of the supported distributions, then it should work. However at the moment the new beta driver is not supported, and this means your distribution needs to be 32 bit ARM (armhf). If you find another distribution in the supported list. It might viable to try it out. It needs to be 32bit.
How to supply the Screen with power.
The Raspberry Pi cannot supply enough power to the screen. Use A Y-Cable instead. A connector goes into a power source like a mobile battery, the next one into the Raspberry Pi and one into the screen. Ugreen Y Micro USB 3.0 Cable
Another way to do this is using an powered USB-Hub, but this might use more power and a power outlet.
My setup
- Raspberry Pi 400 running Ubuntu Mate, Raspberry Pi and Screen each plugged into Jackery 240Wh Mobile Battery.
Cons
Apart from the distro lock-in to Ubuntu, the CPU usage for DisplayLink is bothering me. It's usable for remote desktop and webbrowsing / programming. Watching videos is not a good idea.
- High CPU usage (Up to 100% on one thread)
- Cannot use HDMI screen anymore with the same installation. This is very annoying, but I can't find a way for the Pi to show anything on the HDMI screen after installing displaylink
- If I shutdown the Pi or plug in the USB connector of the Screen first, while it's powered from the Y-Cable, then the Pi cannot be started. Workaround is to unplug the usb conncetor and first plug in the power connector into the Pi.
- Can't use every distro
- The cables are a bit in the way. A regular raspberry pi 4 and bluetooth keyboard and mouse might be more manageable. However, having a keyboard on the pi can be very helpful.
Verdict
You probably want a portable HDMI/USB-C Screen. They are relatively cheap now. Alternatively the Pi can be connected to a tablet via USB HDMI Capture device (about 20 dollars) It works, but the screen is small.
I will keep using the DisplayLink screen for now.
Ubuntu Mate Configuration
If you can get desktopify to work, then these will probably not be necessary.
DisplayLink uses a lot of CPU because the protocol is encrypted, so you will want to avoid redraws.
Control center → Mate Tweak → Windows → Performance → uncheck "Enable Animation" and "show Window content when moving windows" After doing this Ubuntu Mate is quite snappy on DisplayLink.
The Ultimate Ubuntu-Mate 20.10 Setup Guide for the Pi4/Pi400! 21 Things to do After Installing Ubuntu MATE
Thanks for reading
If you enjoyed this article, Just send out this e-mail. I will let you know next time I write something.
Linklist for further exploration
- https://support.displaylink.com/knowledgebase/articles/1883065-using-arm-binaries-on-raspbian-on-raspberry-pi
- https://wiki.archlinux.org/title/DisplayLink
Older driver, incompatible with newer Displaylink screens:
- https://blog.aaronbieber.com/2020/01/06/raspberry-pi-on-displaylink.html
- http://domoticx.com/raspberry-pi-displaylink-usb-screen/
- https://blog.goo.ne.jp/go-stingray/e/f49c8fbf29cc9b8670ff987381aa2c4c (japanese)
- https://github.com/freddy77/libdlo
Other displaylink related links:
Raspberry Pi related links
- https://medium.com/for-linux-users/how-to-use-a-raspberry-pi-4-as-a-cheap-pc-68b697a7ca8
- https://gloveboxes.github.io/Create-RaspberryPi-dotNET-Core-C-Sharp-IoT-Applications/TIPS_AND_TRICKS.html
Thanks to everyone involved in GNU/Linux.