Open jeremyfix opened 4 years ago
I have the same issue here. Came in Monday morning with a reboot and Display Link Stopped working. Rebooted to 5.3.0-62-generic and I was able to get it working again.
I have the same setup as described above that doesn't work:
uname -a
in 5.3.0-62-generic #56~18.04.1-Ubuntu SMP Wed Jun 24 16:17:03 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
dpkg --list | grep linux-image
rc linux-image-5.3.0-28-generic 5.3.0-28.30~18.04.1 amd64 Signed kernel image generic
ii linux-image-5.3.0-62-generic 5.3.0-62.56~18.04.1 amd64 Signed kernel image generic
ii linux-image-5.4.0-42-generic 5.4.0-42.46~18.04.1 amd64 Signed kernel image generic
dpkg -l |grep xserver-xorg-core
ii xserver-xorg-core-hwe-18.04 2:1.20.8-2ubuntu2.2~18.04.1 amd64 Xorg X server - core server
ps -A | egrep -i "gnome|kde|mate|cinnamon|lxde|xfce|jwm"
57 ? 00:00:00 kdevtmpfs
1029 tty1 00:00:00 gnome-session-b
1037 tty1 00:00:03 gnome-shell
1619 ? 00:00:00 gnome-keyring-d
1695 tty2 00:00:00 gnome-session-b
1824 tty2 00:00:31 gnome-shell
1899 ? 00:00:00 gnome-shell-cal
2104 ? 00:00:02 gnome-terminal-
3052 tty2 00:00:03 gnome-software
Can't confirm any issues here on Ubuntu 20.04. Works perfectly fine :)
Also broken on On Ubuntu 18.04 kernel 5.4.0-47-generic
:
git clone --depth 1 https://github.com/DisplayLink/evdi.git
cd evdi
make
Shows
cat: /etc/redhat-release: No such file or directory
CFLAGS="-Werror -Wextra -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-error=missing-field-initializers" make -C module
make[1]: Entering directory '/tmp/evdi/module'
make -C /lib/modules/5.4.0-47-generic/build M=$PWD
make[2]: Entering directory '/usr/src/linux-headers-5.4.0-47-generic'
make[3]: *** No rule to make target '/tmp/evdi/module/evdi_drv.o', needed by '/tmp/evdi/module/evdi.o'. Stop.
Makefile:1734: recipe for target '/tmp/evdi/module' failed
make[2]: *** [/tmp/evdi/module] Error 2
make[2]: Leaving directory '/usr/src/linux-headers-5.4.0-47-generic'
Makefile:71: recipe for target 'module' failed
make[1]: *** [module] Error 2
make[1]: Leaving directory '/tmp/evdi/module'
Makefile:13: recipe for target 'all' failed
make: *** [all] Error 2
@bbros-dev
make[3]: *** No rule to make target '/tmp/evdi/module/evdi_drv.o', needed by '/tmp/evdi/module/evdi.o'. Stop.
This is veery strange..
Could you please provide output of cc --version
and make --version
?
Also output of make -d
would be nice. Just please use e.g. pastebin as it will be long...
$ cc --version
cc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ make --version
GNU Make 4.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
The make -d
will take a while since I've reverted to ubuntu 18.04 original kernel 4.15.0-117-generic
For completeness of comparison the make -d
succeeds on the 4.15.0 kernel:
Not sure if that is sufficient to establish the make
and cc
versions are not an issue?
Output of make when it fails will be probably needed to understand what is happening. I wasn't able to reproduce this issue on my machine.
make build.log
DKMS make.log for evdi-5.2.14 for kernel 5.4.0-49-generic (x86_64)
Wed Sep 23 12:54:10 EDT 2020
make KBUILD_VERBOSE=1 SUBDIRS=/var/lib/dkms/evdi/5.2.14/build SRCROOT=/var/lib/dkms/evdi/5.2.14/build CONFIG_MODULE_SIG= -C /lib/modules/5.4.0-49-generic/build modules
make[1]: Entering directory '/usr/src/linux-headers-5.4.0-49-generic'
make -f ./Makefile syncconfig
make -f ./scripts/Makefile.build obj=scripts/basic
rm -f .tmp_quiet_recordmcount
make -f ./scripts/Makefile.build obj=scripts/kconfig syncconfig
flex -oscripts/kconfig/lexer.lex.c -L scripts/kconfig/lexer.l
/bin/sh: 1: flex: not found
scripts/Makefile.host:9: recipe for target 'scripts/kconfig/lexer.lex.c' failed
make[3]: *** [scripts/kconfig/lexer.lex.c] Error 127
make[3]: *** Waiting for unfinished jobs....
bison -o scripts/kconfig/parser.tab.c --defines=scripts/kconfig/parser.tab.h -t -l scripts/kconfig/parser.y
/bin/sh: 1: bison: not found
scripts/Makefile.host:17: recipe for target 'scripts/kconfig/parser.tab.h' failed
make[3]: *** [scripts/kconfig/parser.tab.h] Error 127
Makefile:617: recipe for target 'syncconfig' failed
make[2]: *** [syncconfig] Error 2
Makefile:723: recipe for target 'include/config/auto.conf.cmd' failed
make[1]: *** [include/config/auto.conf.cmd] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-5.4.0-49-generic'
Makefile:22: recipe for target 'all' failed
make: *** [all] Error 2
@cement-head
/bin/sh: 1: flex: not found
flex is missing. Is it installed? sudo apt install flex
on Ubuntu.
But this seems to be something different than @bbros-dev sees.
Next time I reboot, I'll try to install into the latest kernel.
Here is what I see on my machine:
$ cc --version
cc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ make --version
GNU Make 4.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ flex --version
flex 2.6.4
~/repos$ git clone --depth 1 https://github.com/DisplayLink/evdi.git
Cloning into 'evdi'...
remote: Enumerating objects: 48, done.
remote: Counting objects: 100% (48/48), done.
remote: Compressing objects: 100% (48/48), done.
remote: Total 48 (delta 3), reused 11 (delta 0), pack-reused 0
Unpacking objects: 100% (48/48), done.
~/repos$ cd evdi/
~/repos/evdi$ make
cat: /etc/redhat-release: No such file or directory
CFLAGS="-Werror -Wextra -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-error=missing-field-initializers" make -C module
make[1]: Entering directory '/home/jacob/repos/evdi/module'
make -C /lib/modules/5.3.0-62-generic/build M=$PWD
make[2]: Entering directory '/usr/src/linux-headers-5.3.0-62-generic'
CC [M] /home/jacob/repos/evdi/module/evdi_drv.o
CC [M] /home/jacob/repos/evdi/module/evdi_modeset.o
CC [M] /home/jacob/repos/evdi/module/evdi_connector.o
CC [M] /home/jacob/repos/evdi/module/evdi_encoder.o
CC [M] /home/jacob/repos/evdi/module/evdi_main.o
CC [M] /home/jacob/repos/evdi/module/evdi_fb.o
CC [M] /home/jacob/repos/evdi/module/evdi_gem.o
CC [M] /home/jacob/repos/evdi/module/evdi_painter.o
CC [M] /home/jacob/repos/evdi/module/evdi_params.o
CC [M] /home/jacob/repos/evdi/module/evdi_cursor.o
CC [M] /home/jacob/repos/evdi/module/evdi_debug.o
CC [M] /home/jacob/repos/evdi/module/evdi_i2c.o
CC [M] /home/jacob/repos/evdi/module/evdi_ioc32.o
LD [M] /home/jacob/repos/evdi/module/evdi.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/jacob/repos/evdi/module/evdi.mod.o
LD [M] /home/jacob/repos/evdi/module/evdi.ko
make[2]: Leaving directory '/usr/src/linux-headers-5.3.0-62-generic'
make[1]: Leaving directory '/home/jacob/repos/evdi/module'
CFLAGS="-I../module -Werror -Wextra -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-error=missing-field-initializers " make -C library
make[1]: Entering directory '/home/jacob/repos/evdi/library'
cc -I../module -std=gnu99 -fPIC -I../module -Werror -Wextra -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-error=missing-field-initializers -c -o evdi_lib.o evdi_lib.c
cc evdi_lib.o -shared -Wl,-soname,libevdi.so.0 -o libevdi.so.1.8.0 -lc -lgcc
cp libevdi.so.1.8.0 libevdi.so
make[1]: Leaving directory '/home/jacob/repos/evdi/library'
$ sudo apt install flex bison [make.log](https://github.com/DisplayLink/evdi/files/5270430/make.log)
Tried to reinstall
$ sudo apt-get install --install-recommends linux-generic-hwe-18.04
[sudo] password for andor:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
linux-headers-5.4.0-49-generic linux-headers-generic-hwe-18.04 linux-hwe-5.4-headers-5.4.0-49 linux-image-generic-hwe-18.04
The following NEW packages will be installed:
linux-generic-hwe-18.04 linux-headers-5.4.0-49-generic linux-headers-generic-hwe-18.04 linux-hwe-5.4-headers-5.4.0-49 linux-image-generic-hwe-18.04
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/12.2 MB of archives.
After this operation, 84.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Selecting previously unselected package linux-image-generic-hwe-18.04.
(Reading database ... 1099628 files and directories currently installed.)
Preparing to unpack .../linux-image-generic-hwe-18.04_5.4.0.49.53~18.04.43_amd64.deb ...
Unpacking linux-image-generic-hwe-18.04 (5.4.0.49.53~18.04.43) ...
Selecting previously unselected package linux-hwe-5.4-headers-5.4.0-49.
Preparing to unpack .../linux-hwe-5.4-headers-5.4.0-49_5.4.0-49.53~18.04.1_all.deb ...
Unpacking linux-hwe-5.4-headers-5.4.0-49 (5.4.0-49.53~18.04.1) ...
Selecting previously unselected package linux-headers-5.4.0-49-generic.
Preparing to unpack .../linux-headers-5.4.0-49-generic_5.4.0-49.53~18.04.1_amd64.deb ...
Unpacking linux-headers-5.4.0-49-generic (5.4.0-49.53~18.04.1) ...
Selecting previously unselected package linux-headers-generic-hwe-18.04.
Preparing to unpack .../linux-headers-generic-hwe-18.04_5.4.0.49.53~18.04.43_amd64.deb ...
Unpacking linux-headers-generic-hwe-18.04 (5.4.0.49.53~18.04.43) ...
Selecting previously unselected package linux-generic-hwe-18.04.
Preparing to unpack .../linux-generic-hwe-18.04_5.4.0.49.53~18.04.43_amd64.deb ...
Unpacking linux-generic-hwe-18.04 (5.4.0.49.53~18.04.43) ...
Setting up linux-hwe-5.4-headers-5.4.0-49 (5.4.0-49.53~18.04.1) ...
Setting up linux-headers-5.4.0-49-generic (5.4.0-49.53~18.04.1) ...
/etc/kernel/header_postinst.d/dkms:
* dkms: running auto installation service for kernel 5.4.0-49-generic
Kernel preparation unnecessary for this kernel. Skipping...
Building module:
cleaning build area....(bad exit status: 2)
make -j8 KERNELRELEASE=5.4.0-49-generic all INCLUDEDIR=/lib/modules/5.4.0-49-generic/build/include KVERSION=5.4.0-49-generic DKMS_BUILD=1....(bad exit status: 2)
ERROR (dkms apport): binary package for evdi: 5.2.14 not found
Error! Bad return status for module build on kernel: 5.4.0-49-generic (x86_64)
Consult /var/lib/dkms/evdi/5.2.14/build/make.log for more information.
...done.
Setting up linux-image-generic-hwe-18.04 (5.4.0.49.53~18.04.43) ...
Setting up linux-headers-generic-hwe-18.04 (5.4.0.49.53~18.04.43) ...
Setting up linux-generic-hwe-18.04 (5.4.0.49.53~18.04.43) ...
Looks as though there is an error in the archscripts recipe
make[2]: *** No rule to make target 'arch/x86/tools/relocs_32.c', needed by 'arch/x86/tools/relocs_32.o'. Stop.
arch/x86/Makefile:232: recipe for target 'archscripts' failed
make[1]: *** [archscripts] Error 2
Hi, I tried this morning on 5.4.0-47 with a fresh git clone and it worked successfully (see below).
Can it be related to the way dkms is building the module ? Interestingly, the relocs_32
error raised by @cement-head reminds me a kernel module compilation error I got recently (see here that I solved by replacing the compilation of the module from "sudo make" into "sudo su; make"
Successfull compilation from the git repo on a 5.4.0-47
git clone --depth 1 https://github.com/DisplayLink/evdi.git
➜ evdi git:(devel) make
cat: /etc/redhat-release: No such file or directory
CFLAGS="-Werror -Wextra -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-error=missing-field-initializers" make -C module
make[1]: Entering directory '/home/fix_jer/GIT/evdi/module'
make -C /lib/modules/5.4.0-47-generic/build M=$PWD
make[2]: Entering directory '/usr/src/linux-headers-5.4.0-47-generic'
AR /home/fix_jer/GIT/evdi/module/built-in.a
CC [M] /home/fix_jer/GIT/evdi/module/evdi_drv.o
CC [M] /home/fix_jer/GIT/evdi/module/evdi_modeset.o
CC [M] /home/fix_jer/GIT/evdi/module/evdi_connector.o
CC [M] /home/fix_jer/GIT/evdi/module/evdi_encoder.o
CC [M] /home/fix_jer/GIT/evdi/module/evdi_main.o
CC [M] /home/fix_jer/GIT/evdi/module/evdi_fb.o
CC [M] /home/fix_jer/GIT/evdi/module/evdi_gem.o
CC [M] /home/fix_jer/GIT/evdi/module/evdi_painter.o
CC [M] /home/fix_jer/GIT/evdi/module/evdi_params.o
CC [M] /home/fix_jer/GIT/evdi/module/evdi_cursor.o
CC [M] /home/fix_jer/GIT/evdi/module/evdi_debug.o
CC [M] /home/fix_jer/GIT/evdi/module/evdi_i2c.o
CC [M] /home/fix_jer/GIT/evdi/module/evdi_ioc32.o
LD [M] /home/fix_jer/GIT/evdi/module/evdi.o
Building modules, stage 2.
MODPOST 1 modules
CC [M] /home/fix_jer/GIT/evdi/module/evdi.mod.o
LD [M] /home/fix_jer/GIT/evdi/module/evdi.ko
make[2]: Leaving directory '/usr/src/linux-headers-5.4.0-47-generic'
make[1]: Leaving directory '/home/fix_jer/GIT/evdi/module'
CFLAGS="-I../module -Werror -Wextra -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-error=missing-field-initializers " make -C library
make[1]: Entering directory '/home/fix_jer/GIT/evdi/library'
cc -I../module -std=gnu99 -fPIC -I../module -Werror -Wextra -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-error=missing-field-initializers -c -o evdi_lib.o evdi_lib.c
cc evdi_lib.o -shared -Wl,-soname,libevdi.so.0 -o libevdi.so.1.8.0 -lc -lgcc
cp libevdi.so.1.8.0 libevdi.so
make[1]: Leaving directory '/home/fix_jer/GIT/evdi/library'
➜ evdi git:(devel) uname -a
Linux stollen 5.4.0-47-generic #51~18.04.1-Ubuntu SMP Sat Sep 5 14:35:50 UTC 2020 x86_64 x86_64
x86_64 GNU/Linux
So, would the solution be to change and/or update the makefile/recipe for EVDI module?
@displaylink-dkurek You seem to be the one who knows more than us (at least than I) how dkms is handling the compilation of the module. It seems that, when compiling from the repo, for some reasons, a "sudo make" fails but a "sudo su && make" succeeds.
On an apparently related issue here, they suggest that IMPORTANT: Do not use 'sudo make' because sudo drops the PWD environment variable and causes compilation problems. Use 'su' and then run 'make' command instead.
(by the way, I don't understand the link between the PWD variable and relocs_32.c)
So, would it make sense to either set PWD or somehow change from "sudo make" to "sudo su && make" in some files where the dkms build command is defined ?
It seems that, when compiling from the repo, for some reasons, a "sudo make" fails but a "sudo su && make" succeeds.
The reason why that works is that you are not running sudo make
you are just running make
with that command. The first command is sudo su
and then when it succeeds and exits, the second command ran is make
.
You usually do not need to compile code with elevated privileges. Normally you would compile by running make
and then once it is compiled, you would run sudo make install
to install the module.
@displaylink-dkurek, unfortunately a HDD failure resulted in a rebuild. Fortunately, now evdi 1.8.0 and builds and installs fine on Ubuntu 18.04 with kernel 5.4.0-47-generic
.
Not sure if I know more about dkm than anyone here ;)
DisplayLinkManager is shipped now with evdi sources snapshot.
module is build with dkms install ${PATH_TO_EVDI}/module
and library with just a make
.
(just for some clarity maybe how it's working)
So, after a while (sorry, been on late holidays ;) )
Have everyone somehow resolved the problem or do we see still some instance of this issue?
Hi, I have the same problem, I get the same error.
@arielcorona would you mind showing the contents of your make.log
to see where it fails?
Yes, here you go make.log.copy.copy.pdf
I have the same error and log. @arielcorona @displaylink-emajewsk :cry:
I had the same problem with the 5.4.0-80-generic kernel.
My solution was:
artur-braga's solution works.
ubuntu 22.04 LTS displayLink v5.6.1 evdi/1.12.0
@artur-braga solution essentially works for me as well, but I'd like to add a few things.
The displaylink driver on ubuntu works great once you get it installed, but the installation process and documentation really needs improvement. I just performed an upgrade of Ubuntu 20.04 to 22.04 on a dell xps13 laptop. Of course, the dell d3100 dock video would not work without upgrading the displaylink driver. I have it working now, but it took many hours of troubleshooting kernel modules. Things like dkms, lsmod,modprobe, depmod, apt-get mysterious tools. Then you find that evdi install is a part of displaylink-driver-xxx.run, but there is also a different and newer version located in the Ubuntu jammy-updates repository. Of course, that evdi version that ubuntu has in their repo will conflict with displaylink-xxx.run. And if you try to run "displaylink-driver-xxx.run uninstall" it will be oblivious to any other evdi version that might be installed.
I appreciate the fact that displaylink-xxx.run tries to do several steps to automatically install this driver. Sometimes it even works. The problem in my experience is that it fails more often than not, but it tells the operator - me - that everything was successful, when some command it performed earlier failed in a way that is not obvious at all. Then you have to put on your kernel developer hat and reverse engineer what this install script was trying to do. This is not ideal. I just want to get my video ports working on my dock. I'd rather spend my Saturday doing something other than reverse engineering the installation process. It would be much better if the install script were more explicit in telling the operator what went wrong and how to fix it.
https://www.synaptics.com/products/displaylink-graphics/downloads/ubuntu
This was newer than the 5.6 version found on the dell website: https://www.dell.com/support/home/en-us/drivers/driversdetails?driverid=939cy
I first tried the 5.6 version from dell , but it was failing. I then tried the 5.8 version on the synaptics website. I figured, newer version from displaylink is probably better right? It says "latest official driver", "ubuntu 22.04" I was never able to get that version to work. This install really only worked after I went through @artur-braga steps above to cleanly remove the old "cruft" and install the 5.6 version from dell. This just took way too many steps.
Initially please make sure the problem hasn't been already addressed:
Some information for baseline would help a lot:
I was successfully using displaylink with kernel 5.3.0-62. At some point, my kernel got updated to 5.4.0-42 and the multiple displays connected to a Targus adapter stopped working.
It seems dkms fails to build the evdi module for the kernel 5.4.0-42 as given in the /var/lib/dkms/evdi/5.2.14/build/make.log file. At the very start, my distro was missing flex and bison which I installed; Then it complained about a missing /usr/src/linux-headers-5.4.0-42-generic/tools/build/Build.include . I applied the Makefile modification in here but that did not fix the issue, dkms build was still complaining about a missing Build.include. Then I simply "touch /usr/src/linux-headers-5.4.0-42-generic/tools/build/Build.include". Then the compilation stopped with :
For now, I enforce grub to start with kernel 5.3.0-62 with which evdi is working. The full make.log file is given below :
make.log