update displaylink+evdi

This commit is contained in:
Travis Burtrum 2021-12-12 12:01:11 -05:00
parent 06aaaa1dc0
commit fae0f9500a
9 changed files with 114 additions and 212 deletions

View File

@ -1,6 +1,7 @@
*.swp
*.tar.gz
*.tar.xz
*.tar.zst
*.zip
pkg/
src/

View File

@ -1,30 +1,36 @@
# Maintainer: rHermes <teodor_spaeren@riseup.net>
# Maintainer: bnavigator <code@bnavigator.de>
# Contributor: PlusMinus
# Contributor: rhabbachi
pkgname=displaylink
pkgver=5.2.14
pkgver=5.4.1
_releasedate=2021-09
_pkgfullver=5.4.1-55.174
pkgrel=1
pkgdesc="Linux driver for DL-6xxx, DL-5xxx, DL-41xx and DL-3x00"
arch=('i686' 'x86_64')
url="http://www.displaylink.com/downloads/ubuntu.php"
arch=('i686' 'x86_64' 'arm' 'armv6h' 'armv7h' 'aarch64')
url=""
license=('custom' 'GPL2' 'LGPL2.1')
depends=('evdi>=1.5.0' 'libusb>=1.0.0')
depends=('evdi>=1.9.1'
'libusb>=1.0.0')
makedepends=('grep' 'gawk' 'wget')
install=
changelog="release-note.txt"
source=(displaylink-driver-$pkgver.zip::https://www.displaylink.com/downloads/file?id=1369
udev.sh
changelog="displaylink-release-notes-${pkgver}.txt"
source=(displaylink-driver-${pkgver}.zip::https://www.synaptics.com/sites/default/files/exe_files/${_releasedate}/DisplayLink%20USB%20Graphics%20Software%20for%20Ubuntu${pkgver}-EXE.zip
displaylink-release-notes-${pkgver}.txt::https://www.synaptics.com/sites/default/files/release_notes/${_releasedate}/DisplayLink%20USB%20Graphics%20Software%20for%20Ubuntu${pkgver}-Release%20Notes.txt
DISPLAYLINK-EULA
udev.sh
99-displaylink.rules
displaylink.service
displaylink-sleep.sh)
md5sums=('a96ae6fc0d244ec4f9a8e9482f6c1535'
'd5de775e41af06edbd8073adc490139d'
'20495d81c7d2540910ef86dc437b7fac'
'c141a15e973481c7d961f8e135627ca4'
'7cbd9ab2ac79ba66e8297689c6e5483e')
DLAGENTS=('https::/usr/bin/wget -O %o --post-data=fileId=1369&accept_submit=Accept %u')
sha256sums=('0cc71807122d7bcafab422d7b4bd707018a2f28005bce4fae9f585f4e5e63aae'
'895a2100cdebf217f43873761554cd179e9eaa498649c9eb68f1f007797fbf83'
'2f81fea43332a62b2cf1dd47e56ea01caf1e886bcd16c3f82b18bfe148fb21a9'
'dc41ae8a2c287fc50fdda65bad8b0ffd76726f7773c25e1b0c5b7de95cecbdb6'
'c08a4726cf4e2f92c7cab00168ae9cc8d69d36a67c570609396a4a674934245a'
'342e83abfe2a38d5635ea928345e933d2ad127ebd3f7caca476663d4f583684b'
'8be4ab7616e38f91746bdd3e7fafe9004322a8be8e6722389746df9868d576e0')
# Update with > updpkgsums
@ -42,33 +48,35 @@ package() {
install -d -m755 "$pkgdir/var/log/displaylink"
echo "Extracting DisplayLink Driver Package"
cd $srcdir
chmod +x displaylink-driver-$pkgver.run
./displaylink-driver-$pkgver.run --target $pkgname-$pkgver --noexec
cd "$pkgname-$pkgver"
pushd $srcdir
chmod +x displaylink-driver-${_pkgfullver}.run
./displaylink-driver-${_pkgfullver}.run \
--noexec \
--target $pkgname-$pkgver \
--nox11 \
--noprogress
test -d $pkgname-$pkgver || (echo "Extracting the driver with the .run installer failed"; exit 1)
pushd $pkgname-$pkgver
if [ "$CARCH" == "i686" ]; then
ARCH="x86"
elif [ "$CARCH" == "x86_64" ]; then
ARCH="x64"
fi
ARCH+="-ubuntu-1604"
case $CARCH in
i686)
ARCH="x86-ubuntu-1604" ;;
x86_64)
ARCH="x64-ubuntu-1604" ;;
arm|armv6h|armv7h|aarch64)
ARCH="arm-linux-gnueabihf" ;;
esac
echo "Installing DisplayLink Manager $ARCH"
install -D -m755 $ARCH/DisplayLinkManager $COREDIR/DisplayLinkManager
# I wonder if this is even necessary but I'm too lazy to find out
echo "Creating symlinks for evdi and libusb"
ln -s $(ldconfig -p | grep libevdi | awk 'NR==1{print $4}') $COREDIR/libevdi.so
ln -s $(ldconfig -p | grep libusb- | awk 'NR==1{print $4}') $COREDIR/libusb-1.0.so.0.1.0
ln -s $(ldconfig -p | grep libusb- | awk 'NR==1{print $4}') $COREDIR/libusb-1.0.so.0
ln -s $(ldconfig -p | grep libusb- | awk 'NR==1{print $4}') $COREDIR/libusb-1.0.so
echo "Installing firmware packages"
install -D -m644 *.spkg $COREDIR
echo "Installing license file"
install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
popd
popd
install -D -m644 DISPLAYLINK-EULA "${pkgdir}/usr/share/licenses/${pkgname}/DISPLAYLINK-EULA"
}

View File

@ -1,112 +0,0 @@
=============================================================================
=============================================================================
DisplayLink Ubuntu Software Release Note
Version: 4.2.29
Date: 23th Feb 2018
DisplayLink DL-3xx0 / DL-5xx0 Firmware Version: 9.5.18.93117
DisplayLink DL-41xx Firmware Version: 9.5.20.93215
DisplayLink DL-6xxx Firmware Version: 9.5.18.93117
Extensible Virtual Display Interface version included: 1.5.0-r2
=============================================================================
=============================================================================
A. Introduction
===============
This is DisplayLink Driver Software 4.2.0 for Ubuntu. It provides production quality support for DisplayLink USB 3.0 devices on specific variants of desktop Ubuntu Linux.
The driver enables video support for products using DisplayLink USB 3.0 technology. Standard native Ubuntu drivers provide support for DisplayLink audio and Ethernet interfaces.
A1. Important notes about DL-6xxx, DL5xxx, DL-3x00 and DL-41xx Firmware
=======================================================================
This software release contains an embedded firmware image. DL-6xxx, DL-5xxx, DL-3xxx and DL-41xx devices will be automatically upgraded with this firmware upon connection if required.
The upgrade is silent, therefore screens connected to DL-6xxx, DL-5xxx, DL-3xxx or DL-41xx devices may require a few seconds to appear when devices are connected for the first time, or after devices have been used on other platforms and OSes.
B. Contents
===========
A. Introduction
A1. Important notes about DL-6xxx, DL-5xxx, DL-3xxx and DL-41xx Firmware
B. Contents
C. Issues fixed
D. Supported O/S variants
E. Release components
F. How to Install
G. Supported Features & Hardware
H. Limitations & Known issues
I. Future Development
C. Issues fixed
===============
Issues fixed since DisplayLink Driver Software v4.1.0 for Ubuntu (4.1.9)
--------------------------------------------------------------------------
Sometimes PC may become unresponsive when a DisplayLink display is connected. (27139)
D. Supported O/S variants
=========================
This release has been prepared to be compatible with Ubuntu 17.10 and Ubuntu 16.04. Other variants and editions may be compatible if they meet minimum O/S requirements, but are not supported by DisplayLink.
The Software contains binaries which work on Intel x86 platform (32 bit and 64 bit).
Minimum supported Linux Kernel version is 3.16.
Minimum supported Xorg version is 1.16.
E. Release components
=====================
The Software consists of an open-source kernel mode driver (EVDI) with an accompanying library (libevdi), and a supporting binary application compatible with Intel x86 platform.
Source code for the open-source components can be found at DisplayLink's GitHub, https://github.com/DisplayLink
F. How to Install
=================
To install the release, from a terminal window, with root permissions use the command:
sudo ./displaylink-driver-XXXX.run
Where displaylink-driver-XXXX.run is the name of the extracted DisplayLink driver.
The dkms framework is required for installation of DisplayLink. This can be installed with the command: sudo apt-get install dkms
More detailed information on installation can be found at http://support.displaylink.com/knowledgebase/articles/615714#ubuntu
G. Supported Features & Hardware
================================
This driver will support up to 2 displays connected to DisplayLink devices. More than 2 DisplayLink displays may work, but not supported or tested by DisplayLink.
Resolutions up to 4K are supported on the appropriate DisplayLink hardware.
Device families supported:
- DL-6xxx
- DL-5xxx
- DL-41xx
- DL-3xxx
DL-1x5 and DL-1x0 devices use the open source udl driver, which is not developed or maintained by DisplayLink.
H. Limitations & Known issues
=============================
A list of limitations and known issues can be found here:
http://support.displaylink.com/knowledgebase/articles/641668
I. Future Development
======================
DisplayLink are open to suggestions and feedback on improving the proposed architecture and will gladly review patches or proposals from the developer community. Please find a current list of areas we identify as requiring attention below.
- In this release, the user mode driver service is running with root permissions. In future versions, we would like to reduce the privilege level required for this process e.g. by using a separate low-privileged user and a separate group, to ensure the permissions needed for driving DisplayLink screens are as low as possible.
- The communication between the EVDI kernel module and the wrapper libevdi library is not access-controlled or authenticated. This could be improved in future releases, making it harder to compromise the data EVDI is sending and receiving.
- EVDI kernel module driver is currently a platform_driver, for multiple reasons; most importantly because virtual displays are not discoverable, i.e. cannot be enumerated at the hardware level. EVDI is also a generic device, not tied to any particular kind of device, transport layer or a bus.

View File

@ -3,71 +3,85 @@
# Tested with Kernel 4.16, Dell D3000 SuperSpeed USB 3.0 Docking Station, 17e9:4318 DisplayLink
set -u
pkgname='evdi-git'
pkgver=1.6.2.r2.g75536ec
pkgver=1.9.1.r48.gd6b2841
_pkgver="${pkgver%%.r*}"
pkgrel=1
pkgdesc='kernel module that enables management of multiple screens, primarily for DisplayLink USB VGA DVI HDMI DisplayPort video'
pkgdesc+=' git version.'
arch=('i686' 'x86_64')
url='https://github.com/DisplayLink/evdi'
license=('GPL')
depends=('dkms')
makedepends=('git' 'libdrm')
makedepends+=('linux-headers')
provides=("evdi=${_pkgver}")
conflicts=('evdi')
install=${pkgname}.install
changelog="${pkgname}.Changelog"
_srcdir="${pkgname%-git}"
source=(
'git+https://github.com/DisplayLink/evdi/'
'relro.patch'
'git+https://github.com/DisplayLink/evdi'
)
md5sums=('SKIP'
'05e64dd295a66c030139d0c8f6f7013b')
sha256sums=('SKIP'
'ff03b5a804af826e6b0678cd4d821b5ecd2c5bf04ea7c465751f83b28e928786')
source[0]+='#branch=devel'
md5sums=('SKIP')
sha256sums=('SKIP')
pkgver() {
set -u
cd "${_srcdir}"
git describe --long --tags | sed -e 's/^v//' -e 's/\([^-]*-g\)/r\1/' -e 's/-/./g'
set +u
local _modver _rev
#_modver="$(awk -F '=' '/MODVER=/ {print $2}' module/Makefile)"
_rev="$(git describe --long --tags | sed -e 's/^v//' -e 's/\([^-]*-g\)/r\1/' -e 's/-/./g')"
if [ -z "${_modver:-}" ]; then
printf '%s\n' "${_rev}"
else
printf '%s.r%s\n' "${_modver}" "${_rev##*.r}"
fi
}
prepare() {
set -u
cd "${_srcdir}"
local _src
for _src in "${source[@]}"; do
_src="${_src%%::*}"
for _src in "${source[@]%%::*}"; do
_src="${_src##*/}"
if [[ "${_src}" = *.patch ]]; then
msg2 "Patch ${_src}"
patch -Np1 -i "../${_src}"
fi
done
set +u
# Fix build for kernel 5.4
#sed -E -e 's:SUBDIRS=([^ ]+) :M=\1 &:g' -i 'module/Makefile'
sed -e 's:-Werror::g' -i 'Makefile'
}
build() {
set -u
# We only need to build the library in this step, dmks will build the module
#cd "${_srcdir}/library"
# DKMS builds are hard to debug. We build it here and throw it away.
cd "${_srcdir}"
# DKMS builds are hard to debug. We can build it here to debug the errors.
if :; then
# We only need to build the library in this step, dmks will build the module
cd 'library'
fi
CFLAGS="${CFLAGS/-fno-plt/}"
make
set +u
}
package() {
set -u
cd "${_srcdir}"
install -Dpm755 "library/lib${pkgname%-git}.so" -t "${pkgdir}/usr/lib/"
install -Dpm755 "library/lib${pkgname%-git}.so"* -t "${pkgdir}/usr/lib/"
pushd "${pkgdir}/usr/lib/" > /dev/null
local _libs=(*.so.*)
if [ "${#_libs[@]}" -ne 1 ]; then
echo "Too many libs"
false
fi
_libs="${_libs[0]}"
local _libase="${_libs%.so*}.so"
ln -sf "${_libs}" "${_libase}"
ln -sf "${_libs}" "${_libase}.0" # bad soname
popd > /dev/null
local _DKMS="${pkgdir}/usr/src/${pkgname%-git}-${_pkgver}"
install -Dpm644 module/* -t "${_DKMS}/"
make -j1 -C "${_DKMS}" clean
set +u
rm -f "${_DKMS}/evdi.mod"
}
set +u

View File

@ -1,12 +0,0 @@
v1.3.43
Adding support for indicating an area limit a client that connects to EVDI has.
v1.3.42
Fixes for Kernels 4.9 and 4.10.
API change: Extension of evdi_connect function, allowing to register modes that the client supports, regardless of the fact they are not necessarily listed in the EDID of a monitor.
v1.2.64
Highlights: fixes for kernel 4.8.
v1.2.55
Module and library code to be included in DisplayLink USB Graphics Software for Ubuntu, version 1.2.

View File

@ -1,21 +0,0 @@
# old version (without -$pkgrel): ${1%%-*}
# new version (without -$pkgrel): ${2%%-*}
post_install() {
cat << EOF
Steps:
0. Install this package
1. Install display driver package
2. Reboot or
2a. sudo modprobe evdi
2b. dmesg -w # watch for evdi messages
2c. Replug USB display device
3. Enable screen
EOF
}

1
src/evdi/.gitignore vendored
View File

@ -1,4 +1,5 @@
*.tar.gz
*.tar.xz
*.tar.zst
pkg/
src/

View File

@ -1,15 +1,15 @@
# Maintainer: mwawrzyniak
# Maintainer: mwawrzyniak <arch at cmstactical dot net>
# Contributor: PlusMinus
pkgname=evdi
pkgver=1.6.2
pkgver=1.9.1
pkgrel=1
pkgdesc="A Linux® kernel module that enables management of multiple screens."
arch=('i686' 'x86_64')
url="https://github.com/DisplayLink/evdi"
license=('GPL')
groups=()
depends=(dkms libdrm)
depends=(glibc dkms libdrm)
makedepends=()
optdepends=()
provides=()
@ -19,11 +19,9 @@ backup=()
options=()
install=$pkgname.install
changelog=$pkgname.Changelog
source=($pkgname-$pkgver-$pkgrel.tar.gz::https://github.com/DisplayLink/evdi/archive/v$pkgver.tar.gz
relro.patch)
source=($pkgname-$pkgver-$pkgrel.tar.gz::https://github.com/DisplayLink/evdi/archive/v$pkgver.tar.gz)
noextract=()
md5sums=('11e968a27f2432d2c50738976b7f847f'
'05e64dd295a66c030139d0c8f6f7013b')
md5sums=('e56d5acf08d67706e297a9a8c09e0a20')
prepare() {
cd "$pkgname-$pkgver"

View File

@ -1,3 +1,28 @@
v1.9.1
- Add support for 5.11 and 5.12 kernels
v1.9.0
- Fix evdi build on v5.10 kernel
v1.7.2
- Add support for kernel 5.9 and 5.10
v1.8.0
- add i2c adapter when creating an EVDI node
v1.7.0
- support for kernels 5.3, 5.4, 5.5, 5.6
- drop support for kernels pre-4.15
- various crashes fixes
- per card hardware cursor option
- install/uninstall targets in Makefiles
v1.6.4
- Retry drop drm master when previous attempt failed
v1.6.3
- reset IOCTL on EAGAIN and EINTR
v1.6.2
- support for 5.2 kernel
- Intel-IOMMU workaround