UPDATE [August 9, 2021]: It turns out DisplayLink doesn’t quite work in 21.04. See this blog posting for the latest on how to work around the remaining issue.
UPDATE [June 3, 2021]: DisplayLink works on Ubuntu 21.04 now without any of my fixes. If you’ve installed my fixes, see this blog posting for uninstall instructions.
As of March 18, 2021, DisplayLink support in Ubuntu 21.04 (Hirsute Hippo) is even more broken than I wrote about in my earlier blog posting describing how to make it work. They’ve just put Linux kernel version 5.11 into the release package stream, and evdi, the kernel module required for DisplayLink to work, isn’t yet compatible with 5.11. In addition, they’ve released an upgrade for a package called mesa, and the new mesa version is incompatible with evdieven with kernel version 5.10, which is otherwise compatible with DisplayLink. Therefore, if you want to keep using DisplayLink, you’re going to have to disable upgrades to both the kernel and the mesa packages until fixes are available.
Note: You may not run into the mesa issue if you’re using Wayland. I’m not sure, since I use Xorg, not Wayland, for my DisplayLink hub. I know for a fact that Xorg won’t start because of the mesa/evdi incompatibility, but I don’t know about Wayland. If Wayland won’t start either then you can probably use the solution described here for that as well.
If you’ve already upgraded and broken DisplayLink, you’re going to need to figure out how to log into your computer without DisplayLink working in order to fix this. The two options for doing that are logging in on a VT or logging in from another computer over SSH. However, you can only log in on a VT if you plug a monitor directly into your computer (i.e., not into your DisplayLink hub) and reboot, because the kernel doesn’t configure VTs unless a monitor is plugged in at boot-time.
In general, what you are going to need to do is: (1) make sure that you have the last compatible kernel and mesa releases installed; (2) put holds on those old versions so they won’t get upgraded; (3) uninstall the 5.11 kernel. The script I’ve linked to below does all everything you need. If you already ran my modified DisplayLink installer from my other blog posting successfully before today’s Hirsute updates broke things, rebooting after running the script should cause DisplayLink to start working again. Otherwise, if you’re just coming to this now, then first run the script and then run my DisplayLink installer and you should be all set.
If you subscribe to my blog (RSS, WordPress.com, or post a comment below, enter your real email address, and check “Notify me of new posts by email” before submitting the comment), I’ll let you know when it’s safe to undo these changes and how.
Here is the script, which you’ll need to run as root (as always, use at your own risk, read and understand the script before running it, I’ve probably done something stupid here so caveat emptor, no warranties, etc.).
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DisplayLink works on Ubuntu 21.04 now without any of my fixes. If you’ve installed my fixes, see this blog posting for uninstall instructions.
Just so you know: I never used any pre-release of 21.04, but upgraded from 20.10 a few days ago.
For this case, there seems to be no 5.10 kernel around, but 5.8.0-50-generic appears to work.
Anyone upgrading now is likely to be in my boat so you may want to adjust the script for that case.
Thanks, this is fixed now in the current version of the script above.
Thanks, used this as inspiration to fix my installation, which was broken because of this after updating to hirsute. I did however downgrade to the 5.8.0 kernel that was used in groovy, as downgrading to 5.10 did not work for me. Anyways, thank you! I’ll subscribe to hear about whether this is fixed in the future.
Creating the file /etc/apt/preferences as below will stop your changes getting overwritten.
Pin: release a=lucid-security
Pin: release o=Ubuntu
This is not necessary and I don’t recommend it.
My script puts holds on the specific packages that need to be held, so it already solves the problem that pinning would solve.
If you pin as proposed then you won’t get any Hirsute updates, including security updates, which is a terrible idea. My script allows you to keep getting other Hirsute updates; the only updates that are prevented by my script are the ones that will break DisplayLink.
Pingback: Using DisplayLink with Ubuntu 21.04 (“Hirsute Hippo”) – Something better to do