Skip to content

Commit

Permalink
added displaylink article
Browse files Browse the repository at this point in the history
  • Loading branch information
elkcityhazard committed Jun 15, 2024
1 parent ab3bf05 commit 35bdc24
Show file tree
Hide file tree
Showing 110 changed files with 5,096 additions and 202 deletions.
107 changes: 107 additions & 0 deletions content/blog/2024/06/setup-display-link-on-manjaro-linux.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
---
title: 'Setup DisplayLink on Manjaro Linux'
date: 2024-06-15T11:07:16-04:00
author: Andrew M McCall
description: I explain the process I use to get displaylink drivers working on Manjaro linux.
summary: Getting displaylink drivers to work on Arch linux flavors can be challenging to newcomers. Here are my notes for getting displaylink drivers working on Manjaro Linux.
publishDate: 2024-06-15T11:07:16-04:00
updateDate: 2024-06-15T11:07:16-04:00
draft: false
categories:
- Linux
tags:
- Manjaro
- Displaylink
- FOSS

---

So you have a fresh install of Manjaro Linux, a displaylink dock, and several displays that are not showing an image. This is pretty much the common experience everytime I install an arch linux distribution on a new retired fleet dell or lenovo laptop. It always tends to take me some time of messing around before I get my displaylink dock working again. Because of this, I decided to write some notes so I can just look back and and spend less time re-learning how to ride the bike again.

## Dont want An Explanation? Here is the TL;DR;

```
// This part installs yay and builds it
sudo pacman- Syu
sudo pacman -S --needed base-devel git
cd ~/Downloads
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
// install necessary dependencies
# we need to figure out what kernel version we have so we can download the correct linux headers
uname -a // Linux computer-82wk 6.9.3-3-MANJARO
sudo pacman -S linux69-headers
yay -S evdi-git
yay -S displaylink
sudo systemctl enable displaylink.service
sudo systemctl start displayalink.service
```

## Manjaro Housekeeping Tasks

As of this writing, I do not believe that display link is in the official Manjaro linux repositories. Conveniently, it is in the [Arch User Repository](https://aur.archlinux.org/packages?O=0&K=displaylink "Dispaylink Driver in Arch User Repository"). For those who are newcomers to Arch-flavored Linux, the <abbr title="Arch User Repository">AUR</abbr> is a community-driven collection of software packages for Arch Linux Users. It allows users to create and share their own packages and there is a voting component to help users vet the quality of the packages.

To use the <abbr title="Arch User Repository">AUR</abbr> we need to do some housekeeping to get everything setup correctly.

## Install YAY On Manjaro Linux

Yay is an <abbr title="Arch User Repository">AUR</abbr> helper which is designed to simplify the process of managing packages on Arch Linux. It has features such as automating the process of compiling and installing packages from the <abbr title="Arch User Repositiry">AUR</abbr>, and helping to keep them updated locally on your machine.

1. `sudo pacman -Syu`. This will update the standard repositories and make sure all repos are up to date and download the latest installed packages. It will also sync the mirrors so that we can get fresh packages from the repositores.

2. Next, we need to install some basic essential tools for everything else. `sudo pacman -S --needed base-devel git`. The `--needed` flag will help us only get and build the packages we don't already have. All this does is make the process more efficient since we are reusing packages that we might already have downloaded. `base-devel` are just essential tools to build packages on Arch-flavored Linux distrubtions. We install `git` so we can install `yay`. If you are not familiar with `git`, it is version control software that helps us get packages from git repositories and maintain their versioning.

3. `cd ~/Downloads && git clone https://aur.archlinux.org/yay.git && cd yay`. I personally just move into Downloads so I can delete the folder after I finish installing `yay`. All we are doing in this step is making sure that we are in the Downloads directory, downloading the `yay` package from the <abbr title="Arch User Repository">AUR</abbr> and moving into the newly created directory from the `git clone` operation. If you are unfamiliar with `git clone` it is just a `git` command to initialize a new project, and create a copy of a target repository. It initializes the project, sets up any remote urls for syncing data, fetches the data, creates the local branches, and checks out the default branch.

4. Once we are inside the `yay` directory, we can run `makepkg -si`. This will simply build the package for our system. There will be a few steps involved that you need to take action on, but once you are done you should be able to type `yay -V` and it should cat out the version information of Yay.



## Installing The Linux Headers

My most recent attempt, I kept running into an error with evdi not being in the correct `lib/modules` directory and it was referencing my linux kernel version. To this this issue, I needed to install the correct `linux-headers` for my kernel version.

1. `uname -a`. This will give us basic information about the system, and most importantly, we can see what kernel version we are using. This can even be further refined to just `uname -r` which will print out something like this: `6.9.3-3-MANJARO`.

2. Now that we know we are running kernel version 6.9, we can install the linux-headers using pacman: `sudo pacman -Syu linux69-headers`. This should be all we need for this step.

## Installing EVDI-GIT Which Is A Dependency Of Displaylink

> The Extensible Virtual Display Interface (EVDI) is a software project developed by DisplayLink, primarily aimed at enabling user-space Linux programs to manage additional displays and receive updates for them. Initially created as a foundation for DisplayLink's Display driver for Ubuntu Linux, EVDI facilitates the operation of current-generation USB 3.0 Universal Docking Stations and USB Display Adapters. However, its utility expanded beyond DisplayLink's original intent, becoming a generic interface that other applications could leverage, leading to its open-sourcing on GitHub
- Source [Displaylink - Github](https://displaylink.github.io/evdi/#:~:text=Extensible%20Virtual%20Display%20Interface%20(EVDI,and%20receive%20updates%20for%20them "EVDI definition on Github")

1. `yay -S evdi-git`. There are a few different versions of `evdi` in the <abbr title="Arch User Repository">AUR</abbr>. The thing to note, is that kernel development is particularly quick, and often times, it breaks displaylink. Using the git package, although might not be as stable, will often implement fixes in a more timely manner that fix these breaking changes. That being said, if you happen to be on a more stable linux kernel, using `evdi` might be preferrable since it will more likely be stable.

2. `yay -S displaylink`. This will install the display link package. Not much to be said here.

3. `sudo systemctl enable displaylink.service`. This will enable the display link service on start up.

4. `sudo systemctl start displaylink.service`. This will start the displaylink service.

5. Note you may need to restart to get everything working. `sudo reboot`.




## Troubleshooting displaylink issues on Manjaro Linux

If for whatever reason, you are are still having issues, I highly recommend reviewing the packages in the <abbr t itle="Arch User Repositry">AUR</abbr>. In addition to comments, there is also detailed information about dependencies which can help troubleshoot displaylink issues. Furthermore, the Arch and Manjaro community boards are a great place to search for help as well.

If you still need help, feel free to reach out directly to me and I am happy to help.

Love yourself now, then, and tomorrow.
208 changes: 208 additions & 0 deletions public/blog/2024/06/setup-display-link-on-manjaro-linux/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
<!DOCTYPE html>
<html lang="en-us" dir="ltr">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<meta name="description" content=" I explain the process I use to get displaylink drivers working on Manjaro linux. ">
<title>Setup DisplayLink on Manjaro Linux | Andrew M McCall</title>

<link rel="stylesheet" type="text/css" href="/css/bundle.css">




<script src="/js/main.js" defer type="module" type="text/javascript"></script>

</head>
<body data-theme="light">
<a
href="#content"
aria-label="jump to main content"
>Jump to Content</a>
<header>
<div data-ui-toggle>
<svg aria-label="dark theme icon" role="presentation" data-icon="dark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>
<path d="M12 12c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm0-10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/>
</svg>
<svg aria-label="light theme icon" role="presentation" data-icon="light" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="5" />
<line x1="12" y1="1" x2="12" y2="3" />
<line x1="12" y1="21" x2="12" y2="23" />
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64" />
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78" />
<line x1="1" y1="12" x2="3" y2="12" />
<line x1="21" y1="12" x2="23" y2="12" />
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36" />
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22" />
</svg>

<label
for="themeToggle"
aria-controls="themeToggle"
title="theme toggle"
>
<input
type="checkbox"
name="themeToggle"
id="themeToggle"
aria-checked="false"
aria-label="theme toggle"
role="switch"
>
</label>
</div>


<hgroup>
<h1 id="siteHeader">Andrew M McCall</h1>
</hgroup>

<nav>
<ul>
<li>
<a href="/">Home</a>
</li>
<li>
<a aria-current="true" class="ancestor" href="/blog/">Blog</a>
</li>
<li>
<a href="/tags/">Tags</a>
</li>
<li>
<a href="/resume/">Resume</a>
</li>
</ul>
</nav>




</header>
<main id="#content">

<h1>Setup DisplayLink on Manjaro Linux</h1>


<time datetime="2024-06-15T11:07:16-04:00">June 15, 2024</time>

<p>So you have a fresh install of Manjaro Linux, a displaylink dock, and several displays that are not showing an image. This is pretty much the common experience everytime I install an arch linux distribution on a new retired fleet dell or lenovo laptop. It always tends to take me some time of messing around before I get my displaylink dock working again. Because of this, I decided to write some notes so I can just look back and and spend less time re-learning how to ride the bike again.</p>
<h2 id="dont-want-an-explanation-here-is-the-tldr">Dont want An Explanation? Here is the TL;DR;</h2>
<pre tabindex="0"><code>// This part installs yay and builds it
sudo pacman- Syu

sudo pacman -S --needed base-devel git

cd ~/Downloads

git clone https://aur.archlinux.org/yay.git

cd yay

makepkg -si

// install necessary dependencies

# we need to figure out what kernel version we have so we can download the correct linux headers
uname -a // Linux computer-82wk 6.9.3-3-MANJARO

sudo pacman -S linux69-headers

yay -S evdi-git

yay -S displaylink
sudo systemctl enable displaylink.service

sudo systemctl start displayalink.service
</code></pre><h2 id="manjaro-housekeeping-tasks">Manjaro Housekeeping Tasks</h2>
<p>As of this writing, I do not believe that display link is in the official Manjaro linux repositories. Conveniently, it is in the <a href="https://aur.archlinux.org/packages?O=0&amp;K=displaylink" title="Dispaylink Driver in Arch User Repository">Arch User Repository</a>. For those who are newcomers to Arch-flavored Linux, the <abbr title="Arch User Repository">AUR</abbr> is a community-driven collection of software packages for Arch Linux Users. It allows users to create and share their own packages and there is a voting component to help users vet the quality of the packages.</p>
<p>To use the <abbr title="Arch User Repository">AUR</abbr> we need to do some housekeeping to get everything setup correctly.</p>
<h2 id="install-yay-on-manjaro-linux">Install YAY On Manjaro Linux</h2>
<p>Yay is an <abbr title="Arch User Repository">AUR</abbr> helper which is designed to simplify the process of managing packages on Arch Linux. It has features such as automating the process of compiling and installing packages from the <abbr title="Arch User Repositiry">AUR</abbr>, and helping to keep them updated locally on your machine.</p>
<ol>
<li>
<p><code>sudo pacman -Syu</code>. This will update the standard repositories and make sure all repos are up to date and download the latest installed packages. It will also sync the mirrors so that we can get fresh packages from the repositores.</p>
</li>
<li>
<p>Next, we need to install some basic essential tools for everything else. <code>sudo pacman -S --needed base-devel git</code>. The <code>--needed</code> flag will help us only get and build the packages we don&rsquo;t already have. All this does is make the process more efficient since we are reusing packages that we might already have downloaded. <code>base-devel</code> are just essential tools to build packages on Arch-flavored Linux distrubtions. We install <code>git</code> so we can install <code>yay</code>. If you are not familiar with <code>git</code>, it is version control software that helps us get packages from git repositories and maintain their versioning.</p>
</li>
<li>
<p><code>cd ~/Downloads &amp;&amp; git clone https://aur.archlinux.org/yay.git &amp;&amp; cd yay</code>. I personally just move into Downloads so I can delete the folder after I finish installing <code>yay</code>. All we are doing in this step is making sure that we are in the Downloads directory, downloading the <code>yay</code> package from the <abbr title="Arch User Repository">AUR</abbr> and moving into the newly created directory from the <code>git clone</code> operation. If you are unfamiliar with <code>git clone</code> it is just a <code>git</code> command to initialize a new project, and create a copy of a target repository. It initializes the project, sets up any remote urls for syncing data, fetches the data, creates the local branches, and checks out the default branch.</p>
</li>
<li>
<p>Once we are inside the <code>yay</code> directory, we can run <code>makepkg -si</code>. This will simply build the package for our system. There will be a few steps involved that you need to take action on, but once you are done you should be able to type <code>yay -V</code> and it should cat out the version information of Yay.</p>
</li>
</ol>
<h2 id="installing-the-linux-headers">Installing The Linux Headers</h2>
<p>My most recent attempt, I kept running into an error with evdi not being in the correct <code>lib/modules</code> directory and it was referencing my linux kernel version. To this this issue, I needed to install the correct <code>linux-headers</code> for my kernel version.</p>
<ol>
<li>
<p><code>uname -a</code>. This will give us basic information about the system, and most importantly, we can see what kernel version we are using. This can even be further refined to just <code>uname -r</code> which will print out something like this: <code>6.9.3-3-MANJARO</code>.</p>
</li>
<li>
<p>Now that we know we are running kernel version 6.9, we can install the linux-headers using pacman: <code>sudo pacman -Syu linux69-headers</code>. This should be all we need for this step.</p>
</li>
</ol>
<h2 id="installing-evdi-git-which-is-a-dependency-of-displaylink">Installing EVDI-GIT Which Is A Dependency Of Displaylink</h2>
<blockquote>
<p>The Extensible Virtual Display Interface (EVDI) is a software project developed by DisplayLink, primarily aimed at enabling user-space Linux programs to manage additional displays and receive updates for them. Initially created as a foundation for DisplayLink&rsquo;s Display driver for Ubuntu Linux, EVDI facilitates the operation of current-generation USB 3.0 Universal Docking Stations and USB Display Adapters. However, its utility expanded beyond DisplayLink&rsquo;s original intent, becoming a generic interface that other applications could leverage, leading to its open-sourcing on GitHub</p>
</blockquote>
<ul>
<li>Source <a href="https://displaylink.github.io/evdi/#:~:text=Extensible%20Virtual%20Display%20Interface%20(EVDI,and%20receive%20updates%20for%20them" title="EVDI definition on Github">Displaylink - Github</a></li>
</ul>
<ol>
<li>
<p><code>yay -S evdi-git</code>. There are a few different versions of <code>evdi</code> in the <abbr title="Arch User Repository">AUR</abbr>. The thing to note, is that kernel development is particularly quick, and often times, it breaks displaylink. Using the git package, although might not be as stable, will often implement fixes in a more timely manner that fix these breaking changes. That being said, if you happen to be on a more stable linux kernel, using <code>evdi</code> might be preferrable since it will more likely be stable.</p>
</li>
<li>
<p><code>yay -S displaylink</code>. This will install the display link package. Not much to be said here.</p>
</li>
<li>
<p><code>sudo systemctl enable displaylink.service</code>. This will enable the display link service on start up.</p>
</li>
<li>
<p><code>sudo systemctl start displaylink.service</code>. This will start the displaylink service.</p>
</li>
<li>
<p>Note you may need to restart to get everything working. <code>sudo reboot</code>.</p>
</li>
</ol>
<h2 id="troubleshooting-displaylink-issues-on-manjaro-linux">Troubleshooting displaylink issues on Manjaro Linux</h2>
<p>If for whatever reason, you are are still having issues, I highly recommend reviewing the packages in the <abbr t itle="Arch User Repositry">AUR</abbr>. In addition to comments, there is also detailed information about dependencies which can help troubleshoot displaylink issues. Furthermore, the Arch and Manjaro community boards are a great place to search for help as well.</p>
<p>If you still need help, feel free to reach out directly to me and I am happy to help.</p>
<p>Love yourself now, then, and tomorrow.</p>


<section data-taxonomy="tags">
<header><hgroup>Tags:</hgroup></header>
<ul data-taxonomy="tags">
<li><a href="/tags/manjaro/">Manjaro</a></li>
<li><a href="/tags/displaylink/">Displaylink</a></li>
<li><a href="/tags/foss/">FOSS</a></li>
</ul>
</section>


</main>
<footer>
<section data-section="footer">
<ul>

<li><a href="https://indieweb.social/@elkcityhazard" title="Link To mastodon for Andrew M McCall" aria-label="Link To mastodon for Andrew M McCall">mastodon</a></li>

<li><a href="https://github.com/elkcityhazard" title="Link To github for Andrew M McCall" aria-label="Link To github for Andrew M McCall">github</a></li>

<li><a href="https://gitlab.com/elkcityhazard" title="Link To gitlab for Andrew M McCall" aria-label="Link To gitlab for Andrew M McCall">gitlab</a></li>

<li><a href="https://www.linkedin.com/in/andrew-mccall-8a09582b3/" title="Link To linkedIn for Andrew M McCall" aria-label="Link To linkedIn for Andrew M McCall">linkedIn</a></li>

</ul>
<p>Copyright 2024 - Andrew M McCall</p>
</section>




</footer>
</body>
</html>
Loading

0 comments on commit 35bdc24

Please sign in to comment.