0

I'm trying to follow my own installation instructions here: USB to HDMI adapter that works with Ubuntu. They work great on Ubuntu 22.04, but not 20.04. On 20.04 when I do the sudo apt install displaylink-driver step, I get:

$ sudo apt install displaylink-driver 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies: displaylink-driver : Depends: evdi (>= 1.14.1) but it is not going to be installed Depends: evdi (< 1.15.0) but it is not going to be installed E: Unable to correct problems, you have held broken packages.

This answer recommends sudo apt install evdi-dkms.

That results in more errors:

Building initial module for 5.15.0-41-generic
ERROR (dkms apport): kernel package linux-headers-5.15.0-41-generic is not supported
Error! Bad return status for module build on kernel: 5.15.0-41-generic (x86_64)
Consult /var/lib/dkms/evdi/1.6.0+dfsg/build/make.log for more information.
dpkg: error processing package evdi-dkms (--configure):
 installed evdi-dkms package post-installation script subprocess returned error exit status 10
Setting up libevdi0 (1.6.0+dfsg-1ubuntu3) ...
Processing triggers for libc-bin (2.31-0ubuntu9.9) ...
Errors were encountered while processing:
 evdi-dkms
E: Sub-process /usr/bin/dpkg returned an error code (1)

Full context:

$ sudo apt install evdi-dkms
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libevdi0
The following NEW packages will be installed:
  evdi-dkms libevdi0
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 34.4 kB of archives.
After this operation, 173 kB of additional disk space will be used.
Do you want to continue? [Y/n] 
Get:1 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 evdi-dkms all 1.6.0+dfsg-1ubuntu3 [25.5 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 libevdi0 amd64 1.6.0+dfsg-1ubuntu3 [8,972 B]
Fetched 34.4 kB in 0s (74.8 kB/s)   
Selecting previously unselected package evdi-dkms.
(Reading database ... 499689 files and directories currently installed.)
Preparing to unpack .../evdi-dkms_1.6.0+dfsg-1ubuntu3_all.deb ...
Unpacking evdi-dkms (1.6.0+dfsg-1ubuntu3) ...
Selecting previously unselected package libevdi0.
Preparing to unpack .../libevdi0_1.6.0+dfsg-1ubuntu3_amd64.deb ...
Unpacking libevdi0 (1.6.0+dfsg-1ubuntu3) ...
Setting up evdi-dkms (1.6.0+dfsg-1ubuntu3) ...
Loading new evdi-1.6.0+dfsg DKMS files...
Building for 5.15.0-41-generic
Building initial module for 5.15.0-41-generic
ERROR (dkms apport): kernel package linux-headers-5.15.0-41-generic is not supported
Error! Bad return status for module build on kernel: 5.15.0-41-generic (x86_64)
Consult /var/lib/dkms/evdi/1.6.0+dfsg/build/make.log for more information.
dpkg: error processing package evdi-dkms (--configure):
 installed evdi-dkms package post-installation script subprocess returned error exit status 10
Setting up libevdi0 (1.6.0+dfsg-1ubuntu3) ...
Processing triggers for libc-bin (2.31-0ubuntu9.9) ...
Errors were encountered while processing:
 evdi-dkms
E: Sub-process /usr/bin/dpkg returned an error code (1)

And now sudo apt install installs on anything else. And sudo apt upgrade fails with this:

$ sudo apt upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] 
Setting up evdi-dkms (1.6.0+dfsg-1ubuntu3) ...
Removing old evdi-1.6.0+dfsg DKMS files...

Deleting module version: 1.6.0+dfsg completely from the DKMS tree.


Done. Loading new evdi-1.6.0+dfsg DKMS files... Building for 5.15.0-41-generic Building initial module for 5.15.0-41-generic ERROR (dkms apport): kernel package linux-headers-5.15.0-41-generic is not supported Error! Bad return status for module build on kernel: 5.15.0-41-generic (x86_64) Consult /var/lib/dkms/evdi/1.6.0+dfsg/build/make.log for more information. dpkg: error processing package evdi-dkms (--configure): installed evdi-dkms package post-installation script subprocess returned error exit status 10 Errors were encountered while processing: evdi-dkms E: Sub-process /usr/bin/dpkg returned an error code (1)

So I run sudo dpkg -r evdi-dkms, per my comment here to fix that, and I'm back at the beginning again. sudo apt upgrade works again, thank goodness!--whew! But, sudo apt install displaylink-driver is right back to the error at the beginning.

I tried upgrading to Ubuntu 22.04, and /boot is too full.

Note: from the sudo apt install evdi-dkms failure messages above, it says to:

Consult /var/lib/dkms/evdi/1.6.0+dfsg/build/make.log for more information.

Here's what is in that file:

From /var/lib/dkms/evdi/1.6.0+dfsg/build/make.log:

DKMS make.log for evdi-1.6.0+dfsg for kernel 5.15.0-41-generic (x86_64)
Thu 28 Sep 2023 07:05:36 PM MST
make: Entering directory '/usr/src/linux-headers-5.15.0-41-generic'
  CC [M]  /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_drv.o
  CC [M]  /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_connector.o
  CC [M]  /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_modeset.o
  CC [M]  /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_encoder.o
  CC [M]  /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_main.o
  CC [M]  /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_fb.o
  CC [M]  /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_gem.o
/var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_drv.c:11:10: fatal error: drm/drmP.h: No such file or directory
   11 | #include <drm/drmP.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.build:285: /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_drv.o] Error 1
make[1]: *** Waiting for unfinished jobs....
  CC [M]  /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_painter.o
/var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_connector.c:14:10: fatal error: drm/drmP.h: No such file or directory
   14 | #include <drm/drmP.h>
      |          ^~~~~~~~~~~~
compilation terminated.
/var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_modeset.c:15:10: fatal error: drm/drmP.h: No such file or directory
   15 | #include <drm/drmP.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.b<drm/drmP.h>uild:285: /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_modeset.o] Error 1
make[1]: *** [scripts/Makefile.build:285: /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_connector.o] Error 1
/var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_encoder.c:14:10: fatal error: drm/drmP.h: No such file or directory
   14 | #include <drm/drmP.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.build:285: /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_encoder.o] Error 1
/var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_gem.c:11:10: fatal error: drm/drmP.h: No such file or directory
   11 | #include <drm/drmP.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.build:285: /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_gem.o] Error 1
/var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_main.c:15:10: fatal error: drm/drmP.h: No such file or directory
   15 | #include <drm/drmP.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.build:285: /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_main.o] Error 1
/var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_painter.c:12:10: fatal error: drm/drmP.h: No such file or directory
   12 | #include <drm/drmP.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.build:285: /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_painter.o] Error 1
/var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_fb.c:20:10: fatal error: drm/drmP.h: No such file or directory
   20 | #include <drm/drmP.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.build:285: /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_fb.o] Error 1
make: *** [Makefile:1875: /var/lib/dkms/evdi/1.6.0+dfsg/build] Error 2
make: Leaving directory '/usr/src/linux-headers-5.15.0-41-generic'

ERROR (dkms apport): kernel package linux-headers-5.15.0-41-generic is not supported

So apparently I'm missing the <drm/drmP.h> header file if anyone knows how to get that.

The evdi source code seems to be here: https://github.com/DisplayLink/evdi

I was unable to build it from scratch. make fails with another missing header file.

(And this is why people use Windows, friends).

I'm trying to install libdrm-dev, per these instructions: How to install DisplayLink software on Ubuntu 20.04 or (newer) How to install DisplayLink software on legacy Ubuntu versions

...but that doesn't work either.
New question: Cannot install libdrm-dev on Ubuntu 20.04 because it requires dependencies which are older than what I have

If I manually build and install libdrm from source, per my answer here, and then manually try to install the DisplayLink driver, the installer still blocks me:

~/Downloads/Install_Files/DisplayLink/DisplayLink USB Graphics Software for Ubuntu5.8-EXE$ sudo ./displaylink-driver-5.8.0-63.33.run 
Verifying archive integrity...  100%   MD5 checksums are OK. All good.
Uncompressing DisplayLink Linux Driver 5.8.0-63.33  100%  
Distribution discovered: Ubuntu 20.04.4 LTS
[ Installing dependencies ]
Need to update package list.
apt update? (Y/n) n
Unsatisfied dependencies. Missing component: libdrm.
This is a fatal error, cannot install DisplayLink Linux Software.

See also

  1. Problems installing DisplayLink Driver on Ubuntu 20.04
  2. Can't install Synaptics displaylink-driver on Ubuntu 22.04

1 Answers1

0

Full instructions: installing displaylink-driver on Ubuntu 20.04 (also applies to 22.04 or later)

Note: these instructions also apply to Ubuntu 22.04 or later. The only part here that was specific to Ubuntu 20.04 was using sudo aptitude install libdrm-dev to install libdrm-dev, since sudo apt install libdrm-dev didn't work.

I figured out a way! I got libdrm-dev installed by using aptitude:

sudo aptitude install libdrm-dev
# then choose these options:
n  # do NOT leave things as-is
y  # DO downgrade dependencies
y  # Do continue with the install

See my full answer, output, and description here: Cannot install libdrm-dev on Ubuntu 20.04 because it requires dependencies which are older than what I have

Then, once I had libdrm-dev successfully installed, installing the dependencies per the official instructions here worked: How to install DisplayLink software on legacy Ubuntu versions:

sudo apt update
sudo apt dist-upgrade
sudo apt install dkms
sudo apt install libdrm-dev  # already installed by aptitude above, but running
                             # this command again doesn't hurt

And then my instructions in my answer here worked: USB to HDMI adapter that works with Ubuntu:

Disable Secure Boot in the BIOS, then reboot, and run the following:

# Make this directory if it doesn't exist, and cd into it
mkdir -p ~/Downloads/Install_Files/DisplayLink
cd ~/Downloads/Install_Files/DisplayLink

Download the Ubuntu APT package provided by Synaptics.com, the official

makers of DisplayLink

wget https://www.synaptics.com/sites/default/files/Ubuntu/pool/stable/main/all/synaptics-repository-keyring.deb

Install the DisplayLink APT package keyring

sudo apt install ./synaptics-repository-keyring.deb

Update your APT package cache

sudo apt update

Install the DisplayLink driver provided by Synaptics.com, the official source

sudo apt install displaylink-driver

Reboot.

Now it is plug-and-play. Plug in your DisplayLink adapter and it just works.

It may take up to 5~10 seconds to recognize a monitor.

Done!

After rebooting, you can plug in your $90, Club3D CSV-1477 USB 3.0 Type A to Dual Display Port 1.2 4K 60Hz External Graphics Video Adapter, for instance, and it will be recognized in 5 to 10 seconds or so and automatically begin displaying up to two simultaneous 4k at 60 Hz outputs over USB 3.0 USB-A plugs.

In case you're interested, here is my full output when I ran sudo apt install displaylink-driver. Notice that it explicitly told me to reboot:

$ sudo apt install displaylink-driver 
[sudo] password for gabriel: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  evdi
The following NEW packages will be installed:
  displaylink-driver evdi
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 6,318 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] 
Get:1 https://www.synaptics.com/sites/default/files/Ubuntu stable/main amd64 evdi amd64 1.14.1-7 [47.4 kB]
Get:2 https://www.synaptics.com/sites/default/files/Ubuntu stable/non-free amd64 displaylink-driver amd64 5.8.0-33 [6,271 kB]
Fetched 6,318 kB in 3s (1,981 kB/s)             
Selecting previously unselected package evdi.
(Reading database ... 499730 files and directories currently installed.)
Preparing to unpack .../evdi_1.14.1-7_amd64.deb ...
Unpacking evdi (1.14.1-7) ...
Selecting previously unselected package displaylink-driver.
Preparing to unpack .../displaylink-driver_5.8.0-33_amd64.deb ...
Unpacking displaylink-driver (5.8.0-33) ...
Setting up evdi (1.14.1-7) ...

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

DKMS: add completed.

Kernel preparation unnecessary for this kernel. Skipping...

Building module: cleaning build area... make -j8 KERNELRELEASE=5.15.0-41-generic all INCLUDEDIR=/lib/modules/5.15.0-41-generic/build/include KVERSION=5.15.0-41-generic DKMS_BUILD=1..... Signing module:

  • /var/lib/dkms/evdi/1.14.1/5.15.0-41-generic/x86_64/module/evdi.ko

Secure Boot not enabled on this system. cleaning build area...

DKMS: build completed.

evdi.ko: Running module version sanity check.

  • Original module
    • No original module exists within this kernel
  • Installation
    • Installing to /lib/modules/5.15.0-41-generic/updates/dkms/

depmod....

DKMS: install completed.

Reboot required DisplayLink evdi module installed successfully. Please reboot your computer to ensure the proper functioning of the software.

Setting up displaylink-driver (5.8.0-33) ...

Reboot required DisplayLink driver installed successfully. Please reboot your computer to ensure the proper functioning of the software.

Other references

  1. My answer here: USB to HDMI adapter that works with Ubuntu - I talk about the results of using my $90, Club3D CSV-1477 USB 3.0 Type A to Dual Display Port 1.2 4K 60Hz External Graphics Video Adapter here.
  2. ***** Newer official info: How to install DisplayLink software on legacy Ubuntu versions
  3. Older official info: How to install DisplayLink software on Ubuntu 20.04