Public bug reported:

DisplayLink (a Synaptics technology) is a USB graphics transport, not a GPU.
A DisplayLink device is a remote display controller: the host captures a
virtual framebuffer, compresses it, and streams it over USB to a DL-series
ASIC inside a dock or adapter. That ASIC decodes the stream and drives its
own physical DisplayPort and HDMI outputs. The transport works over USB 2.0,
USB 3.x, USB4 and Thunderbolt.

This is the technology behind most "universal docking stations" - the ones
that behave the same way on any host over a single cable, with no dependency
on the host's DP Alt Mode support or GPU vendor. A wide range of docks and
adapters from many manufacturers ship DL-3xxx, DL-41xx, DL-5xxx, DL-6xxx and
DL-7xxx silicon.

Because the video path is not a PCIe display controller, it cannot be driven
by a conventional DRM/KMS driver alone. The stack is split in two:

1. EVDI (Extensible Virtual Display Interface) - an open-source Linux kernel
   module plus a userspace wrapper library, libevdi. EVDI registers a virtual
   DRM/KMS connector so that Mutter, KWin, Xorg and wlroots see an ordinary
   display, and hands the rendered framebuffer (with damage regions) out to
   userspace. EVDI is GPL-2.0 / LGPL-2.1, developed in the open at
   https://github.com/DisplayLink/evdi , and is already in the Ubuntu archive
   as the community-maintained evdi source package (evdi-dkms, libevdi1).

2. DisplayLinkManager - the userspace service that consumes EVDI output,
   performs the DisplayLink compression, handles device enumeration, EDID and
   mode negotiation, and device firmware updates, then pushes frames to the
   USB device through libusb. This component is proprietary and binary-only,
   and is what this request is about.


== What we are requesting ==

Synaptics would like the displaylink-driver source and binary package to be
included in the Ubuntu multiverse archive, starting with version 6.4.0.

We are the upstream vendor. We are requesting sponsorship for the initial
upload, and we commit to maintaining the package and shipping updates for the
supported Ubuntu series.


== Target series ==

We are filing after the 26.10 Feature Freeze (20 August 2026), so we are not
asking for 26.10 through the NEW queue and we are not requesting a Feature
Freeze Exception. We are aiming at the next development series instead.

 * 27.04 - primary target; new package via the NEW queue, once the archive
   opens.
 * 26.10 - requested via ubuntu-backports once 27.04 is accepted.
 * 26.04 LTS - requested via ubuntu-backports once 27.04 is accepted.
 * 24.04 LTS - requested via ubuntu-backports once 27.04 is accepted.

We understand that a brand-new package cannot be introduced directly into a
released stable series, and that a package must land in the development
release before it can be backported to earlier ones. Hence the ordering
above: 27.04 first through NEW, then backport requests for the three stable
series, rather than SRUs.

We are filing now, well ahead of the 27.04 Feature Freeze, so that the
licence review and any packaging feedback can be worked through without
deadline pressure. Please tell us if you would prefer the backport requests
filed up front alongside this bug, or only after the package clears NEW.

The package already builds and is tested on 24.04, 26.04 and 26.10; see the
PPA below. We will add a 27.04 build to the PPA as soon as that series opens.


== Why this is an Ubuntu-only submission ==

We are aware that routing new packages through Debian first is normally
preferred, and we have considered it. It does not fit this package.

The payload is non-free, so the Debian route would be an RFP against non-free
rather than an ITP. non-free is not enabled by default on Debian installs, so
a package there would not reach the users this driver exists for.

The dependencies are Ubuntu-specific. The package depends on the
Ubuntu-packaged evdi-dkms / libevdi1 and, where available, on the Ubuntu OEM
kernel EVDI modules (linux-modules-evdi-oem-26.04,
linux-modules-evdi-oem-24.04). Those OEM kernel packages have no Debian
equivalent, so the dependency structure would have to be rewritten for a
Debian submission and then diverge again for Ubuntu.

Our validation, support matrix and release cadence are defined in terms of
Ubuntu series. We test and support the series listed above; we are not in a
position to commit to Debian's release cycle or to support the package there.


== Where to get it ==

Source and binary packages are published by us in our Launchpad PPA:

  https://launchpad.net/~synaptics-
displaylink/+archive/ubuntu/displaylink-driver

  sudo add-apt-repository ppa:synaptics-displaylink/displaylink-driver
  sudo apt update
  sudo apt install displaylink-driver

The PPA already contains the 6.4.0 source package built for 24.04, 26.04 and
26.10, so the packaging is ready to review as-is.

 * Upstream homepage and downloads:
   https://www.synaptics.com/products/displaylink-graphics/downloads/ubuntu
 * Open-source component (EVDI): https://github.com/DisplayLink/evdi
 * Support knowledge base:
   https://support.displaylink.com/knowledgebase/articles/615714


== License ==

This package is NOT DFSG-free, which is why multiverse is the correct
component. No Main Inclusion Review is required.

 * DisplayLinkManager - proprietary, binary-only, no source available.
   Licensed under the DisplayLink Software End User Licence Agreement.

 * DisplayLink device firmware images (*.spkg) - proprietary, redistributable
   binary blobs for DL-7xxx/6xxx/5xxx/41xx/3xxx devices, covered by the same
   EULA. These cannot be split out into firmware-* / linux-firmware or handed
   to fwupd: they are not host-loaded firmware on a kernel-visible bus, and
   there is no in-kernel driver to request them. The device is flashed over a
   vendor USB protocol by DisplayLinkManager itself, which enumerates the
   device, reads its current firmware revision, decides whether an update is
   required, and writes it as part of bringing the device up. The blobs are
   only meaningful to the matching DisplayLinkManager version and are
   versioned and validated together with it, so separating them would produce
   a package that cannot be used on its own and a version-skew failure mode
   with no benefit to the archive.

 * EVDI (GPL-2.0) and libevdi (LGPL-2.1) - NOT shipped by this package. We
   depend on the existing archive packages instead; see the notes below.

The redistribution grant the archive team will want to check is clause 1.4 of
the EULA as shipped in debian/copyright:

  1.4. You may distribute the Software (other than the Open Source Elements)
  only (i) without modification, (ii) in an unobfuscated form which allows
  the Software to be identified, and (iii) subject to the terms and
  conditions of this EULA, a copy of which shall be included with any such
  distribution. You may use, copy, modify and distribute the Open Source
  Elements in accordance with the terms and conditions applicable to them.

The package satisfies all three conditions: the binary is shipped unmodified
and unobfuscated, and the complete EULA text is included verbatim in
debian/copyright.

debian/copyright is machine-readable DEP-5 with the full EULA inlined as the
DisplayLink-EULA licence stanza, followed by the licence texts of the open
source elements linked into DisplayLinkManager. It is generated from a single
source of truth at package build time, so it cannot drift from the licence we
actually ship. You can read it directly in the source package in the PPA.


== Notes for the reviewer / archive admin ==

Relationship to the existing evdi source package
------------------------------------------------
displaylink-driver does NOT vendor, fork or ship EVDI. The bundled EVDI
tarball is deliberately removed from the upstream repack. Since 6.2.0 we are
compatible with the community-packaged evdi-dkms / libevdi1 in the Ubuntu
archive, and 6.4.0 depends on them. This removes the duplicate and
conflicting DKMS tree that the old .run installer used to create, which was a
recurring source of user breakage on kernel upgrades.

Debian packaging policy
------------------------
The packaging was reworked for 6.4.0 specifically to conform to Debian
policy: debhelper-compat (= 13) with the dh sequencer, Standards-Version
4.7.3, Rules-Requires-Root: no, a proper systemd unit, udev rules, a
debian/watch file, debian/README.source documenting the tarball repack, and
XSBC-Original-Maintainer set with Maintainer pointing at
ubuntu-devel-discuss. It is lintian-clean apart from the expected non-free
and binary-without-source tags, which are documented in
debian/displaylink-driver.lintian-overrides. Previous releases were only ever
distributed as a self-extracting .run installer; that is no longer the case.

debian/control summary
-----------------------

  Source: displaylink-driver
  Section: video
  Priority: optional
  Build-Depends: debhelper-compat (= 13), libusb-1.0-0
  Standards-Version: 4.7.3
  Rules-Requires-Root: no
  XS-Autobuild: yes

  Package: displaylink-driver
  Architecture: amd64 armhf arm64
  Depends: ${shlibs:Depends},
           ${misc:Depends},
           linux-modules-evdi-oem-26.04 | linux-modules-evdi-oem-24.04 | evdi 
(>= 1.12.0) | evdi-dkms (>= 1.12.0),
           evdi (>= 1.12.0) | libevdi1 (>= 1.12.0),
           libusb-1.0-0 (>= 1.0.16)
  Suggests: update-notifier-common, xmlstarlet, weston

The alternation on the EVDI kernel module lets the package use the OEM-kernel
EVDI module where one is available and fall back to DKMS otherwise.

libusb-1.0-0 appears in Build-Depends even though nothing is linked at build
time; it is there so dpkg-shlibdeps can resolve the SONAME
DisplayLinkManager was built against. 6.4.0 links against the system libusb
rather than a bundled copy.

XS-Autobuild: yes is set, as required for a multiverse package that is to be
built on the Ubuntu build daemons.

Architectures
--------------
amd64, armhf, arm64. There is deliberately no i386 build - we do not wish to
publish one. The package is architecture-restricted rather than "any" because
the proprietary component is binary-only and cannot be rebuilt from source on
other architectures.

Binary package contents
------------------------
 * /usr/lib/displaylink-driver/DisplayLinkManager and the device firmware
   images (*.spkg)
 * displaylink-driver.service systemd unit
 * udev rules to start the service on device hotplug
 * suspend/resume hooks
 * a Weston session desktop entry
 * a manpage

Support matrix
---------------
Kernels 4.15 through 7.3.0-rc3; Xorg 1.16 or newer; Mutter 3.32 or newer for
the Wayland session. Tested on Ubuntu 20.04, 22.04, 24.04, 25.04 and 26.04,
with preliminary support for 26.10. Up to two displays are supported per
host, at resolutions up to 4K on appropriate hardware.

Privilege level
----------------
DisplayLinkManager runs as a system service under systemd. It requires root
because it loads and opens the EVDI kernel module, opens the raw USB device
nodes for the DisplayLink hardware, and writes device firmware updates. It is
started by udev on device hotplug and is not user-facing.


== Contact ==

Marcin Kaspryk <[email protected]>
https://launchpad.net/~mkaspryk

Launchpad team: https://launchpad.net/~synaptics-displaylink

Upstream support: Synaptics Technical Support
<[email protected]>

** Affects: ubuntu
     Importance: Undecided
         Status: New


** Tags: needs-packaging

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2168533

Title:
  [needs-packaging] displaylink-driver

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+bug/2168533/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to