Guide/Tutorial: Displaylink on ClearLinux 34620

Note: I am not an expert, I am not a guru, I am not a developer for Linux. I am just a tinkerer. I know my way around linux but I don’t really know it. Backup what you need to. Avoid doing this as your daily driver. I am not responsible for you wrecking your setup.

Hope this is the right place.

So I am currently digging the idea of ClearLinux. Optimised and secure for the intel platform. However, I am in need of DisplayLink for work as we Hot Desk. Yes, I said it, Hot Desk. In 2021, we are doing something atrocious.(We clean the tables once we’re done and when we go to use one).

I tried to install displaylink using what I could find on the internet, however, it didn’t work. libdrm missing, complaints about kernel headers missing (Pretty fair since I don’t think ClearLinux provides any form of it in the linux-dev bundle.). It was a disaster and I was heartbroken. Played around for half an hour and Yay! It works!

Now while I love ClearLinux, this goes against pretty much everything it stands for.

You’ll need the following bundles (Depending on your choice of kernel, use LTS or native):

  • kernel-LTS/native-dkms
  • linux-LTS-dev or linux-dev
  • dnf

Connect DNF to upstream repository
Once they’ve been installed, follow the instructions here to connect DNF to the upstream repository:

https://docs.01.org/clearlinux/latest/guides/maintenance/query-upstream.html

That will allow you to install packages manually. (Removing the need for bundles, attack on ClearLinux #1)

Install libdrm-devel
Now using DNF install libdrm-devel. You may have some luck with the devpkg-libdrm bundle, but it didn’t work for me.

sudo dnf install libdrm-devel --releasevar=current

This will install a ton of packages, most I assume not required for ClearLinux’s usual operations.

Disable secure boot and module signature enforcement (ClearLinux crime #2)
Disable secure boot through your bios. Due to the nature of Secure Boot and the way that ClearLinux signs its modules, you must disable it. You could try getting the modules signed, but I decided not to.

You must also disable module signature enforcement. Run the following:

sudo mkdir -p /etc/kernel/cmdline.d
echo "module.sig_unenforce" | sudo tee /etc/kernel/cmdline.d/allow-unsigned-modules.conf
sudo clr-boot-manager update
sudo reboot

Lets get down to business (Tempted to start singing a certain song)
Alrighty, download the displaylink driver. 5.4 is what worked for me. Others may work and future ones may work.

Extract the zip file and go to the extracted folder in the terminal (Adjust for the version you use, this may work with them)

chmod +x displaylink-driver-5.4.0-55.153.run
./displaylink-driver-5.4.0-55.153.run --noexec --keep
cd displaylink-driver-5.4.0-55.153
nano displaylink-installer.sh 

(Or your preferred text editor)

Replace the following under check_requirements:

# DKMS
  hash dkms 2>/dev/null || missing_requirement "DKMS"

  # libdrm
  check_libdrm || missing_requirement "libdrm"

  # Required kernel version
  KVER=$(uname -r)
  KVER_MIN="4.15"
  version_lt "$KVER" "$KVER_MIN" && missing_requirement "Kernel version $KVER is too old. At least $KVER_MIN is required"

  # Linux headers
  [ ! -d "/lib/modules/$KVER/build" ] && missing_requirement "Linux headers for running kernel, $KVER"

with

echo Cool Message

We already have the prerequisites, due to the script being built for Ubuntu, it doesn’t quite recognise that. Except the full kernel headers I think, but I’m not an expert. I just play with stuff till it works, and it worked.

Time to run the installer. DISCONNECT THE DOCK. It may complain.

sudo ./displaylink-installer.sh install

It’ll ask to reboot if you’re using xorg. Say yes.
Now you should have Displaylink and EVDI installed. When it reboots, you’re screens will come to life! Don’t get too excited, it’ll stop once you’ve logged in. Press the settings button in the bottom right corner, choose Gnome with Wayland. XORG just doesn’t work for me.

If you have issues in regards to an unsupported operating system or the like, create the /usr/bin/lsb_release file using Simple alternative to /usr/bin/lsb_release · GitHub for its contents.

Now you’re good mate. You should have a fully operational and definitely insecure ClearLinux install with DisplayLink. It’s been working great for me so far, I haven’t noticed any issues, however some could appear due to messing around with Packages and the kernel modules. You’re not using ClearLinux the way it was intended to be used.

If you have any issues installing EVDI in the script, omit the installation function and follow the OP’s post on this forum. Sure it didn’t work for him to get displaylink running, but they’re on Jetson and using a different OS. I recommend you install the version of EVDI that DisplayLink runs with. It should be contained within the script.

Look at the sources for troubleshooting, some of their suggestions could help for all I know.

Sources:

https://wiki.archlinux.org/title/DisplayLink#Installation

https://docs.01.org/clearlinux/latest/guides/kernel/kernel-modules.html

2 Likes

Great job :+1: - I tried (unsuccessfully) to get it to work back in May 2020, so I’ve linked your post to my original post for those still interested on DisplayLink docks (and keen on accepting the “crimes” you just mentioned)

1 Like

This is a response to a message that’s been deleted:

It’s provided in their dnf repositories. Remove the check requirements as instructed as those are made for an system with the apt package manager.

You’re also installing “kernel headers” that provide what you need in the instructions. They provide enough for functionality with displaylink.

1 Like