# DisplayLink unter Debian 13 – upgradesichere Einrichtung (Targus QV4K)

# DisplayLink unter Debian 13 – upgradesichere Einrichtung (Targus QV4K)

Anleitung für Debian 13 (Trixie), GNOME, Intel-Grafik und DisplayLink-Docks wie die Targus USB-C Universal Quad 4K (QV4K, DOCK570USZ). Grundlage ist ein angepasster Fork des Projekts [displaylink-debian](https://github.com/AdnanHodzic/displaylink-debian), der Kernel-Upgrades abgesichert.

## Verifizierter Produktivstand (28. Oktober 2026)

- Debian GNU/Linux 13 (Trixie), GNOME/Wayland, Intel iGPU
- Targus QV4K / DOCK570USZ (Dual DisplayLink DL-6910)
- laufender Debian-Stable-Kernel: `6.12.113+deb13-amd64` aus `trixie-security`
- `displaylink-driver 6.4.0-22`, EVDI `1.15.1-197`
- Secure Boot aktiv; DKMS-Schlüssel erfolgreich per MOK eingeschrieben
- Guard nach `apt upgrade` automatisch und erfolgreich ausgeführt:

```text
[displaylink-evdi-guard] EVDI 1.15.1 ready for 6.12.113+deb13-amd64
```

Linux Mainline liegt zu diesem Zeitpunkt bei 7.x. Debian 13 Stable verwendet bewusst den 6.12-LTS-Zweig und liefert Sicherheitskorrekturen als neue 6.12.x-Pakete. Die niedrigere Hauptversion bedeutet daher nicht, dass das System ungepatcht ist. Der Guard ist versionsagnostisch und prüft auch künftige 7.x-Kernel, sofern die installierte EVDI-Version den jeweiligen Kernel unterstützt. Bei Inkompatibilität schlägt die apt-Transaktion sichtbar fehl und warnt vor dem Reboot.

### Secure-Boot-Prüfung

```bash
mokutil --sb-state
modinfo -k "$(uname -r)" -F signer evdi
lsmod | grep evdi
systemctl is-active displaylink-driver.service
```

Erwartet: Secure Boot `enabled`, ein nicht leerer EVDI-Signer, geladenes `evdi` und ein aktiver DisplayLink-Dienst. Das beim `mokutil --import` gesetzte Passwort wird nur einmal im MOK-Manager benötigt; spätere DKMS-Builds verwenden denselben eingeschriebenen Schlüssel.

## Hintergrund

DisplayLink-Docks (z. B. QV4K mit zwei DL-6910-Chips) benötigen den Open-Source-Kerneltreiber EVDI plus den proprietären DisplayLinkManager. EVDI wird per DKMS für jede Kernel-Version gebaut. Installiert `apt upgrade` ein neues `linux-image`, aber keine passenden `linux-headers`, scheitert der DKMS-Bau: Nach dem Neustart bleiben die Dock-Monitore schwarz, und jede weitere apt-Transaktion stolpert über den kaputten DKMS-Zustand. Eine erneute DisplayLink-Installation "repariert" das nur scheinbar, weil sie die Headers des dann laufenden Kernels nachzieht.

## Distribution

displaylink-debian unterstützt Debian versionsunabhängig (geprüft im Installer). Der CORESTREAM-Fork basiert auf Upstream master `9e396e3` und ergänzt:

- dauerhafte Installation des Meta-Pakets `linux-headers-amd64` (Debian amd64), damit künftige Kernel-Upgrades passende Headers mitbringen;
- einen Kernel-Upgrade-Guard: laufender und neuester installierter Kernel werden geprüft, fehlende Headers nachinstalliert, `dkms autoinstall -k <Kernel>` ausgeführt und das fertige Modul mit `modinfo -k <Kernel> evdi` verifiziert – bei Fehler bricht das Skript mit "do not reboot" ab;
- einen Reparaturmodus ohne Treiber-Neuinstallation und ohne Synaptics-Netzzugriff;
- persistenten APT-Hook (siehe unten).

## Installation (einmalig)

DisplayLink-Treiber zuerst normal installieren (offizieller Synaptics-Treiber oder displaylink-debian). Danach den Guard:

```bash
git clone https://git.corestream.ch/corestream/displaylink-evdi-guard.git
cd displaylink-evdi-guard
sudo ./install.sh
```

Der Installer stellt `linux-headers-amd64` sicher, persistiert Guard + APT-Hook und validiert laufenden und neuesten installierten Kernel. Bei fehlendem EVDI-Modul bricht er mit klarer Meldung ab.

> Hinweis: Secure Boot erfordert entweder Deaktivierung oder MOK-Signierung (siehe `docs/self-signing-modules.md`). Neuere Treiberversionen bieten MOK-Enrollment während der Installation.

## APT-Upgrade-Integration

Der erste Lauf persistiert zwei Dateien:

- `/usr/local/sbin/displaylink-evdi-apt-guard` – prüft nach jeder DPKG-Transaktion laufenden und neuesten installierten Kernel, baut EVDI bei Bedarf via `dkms autoinstall -k <Kernel>` und verifiziert mit `modinfo`;
- `/etc/apt/apt.conf.d/99displaylink-evdi-guard` – registriert den Guard als `DPkg::Post-Invoke`.

Der Hook ruft selbst niemals APT auf (keine Lock-Rekursion). Schlägt der EVDI-Bau fehl, schlägt die apt-Transaktion sichtbar fehl und warnt vor dem Neustart in einen ungeprüften Kernel.

## Reparatur ohne Neuinstallation

```bash
sudo ./displaylink-debian.sh --repair-kernel-upgrades
```

Installiert nur `linux-headers-amd64`, falls fehlend, persistiert den Hook und validiert beide Kernel. Funktioniert auch per SSH ohne aktive grafische Sitzung.

## Verifikation nach Upgrade

```bash
dkms status
```

Erwartet (Beispiel nach Upgrade 6.12.111 → 6.12.113):

```text
evdi/1.15.1, 6.12.111+deb13-amd64, x86_64: installed
evdi/1.15.1, 6.12.113+deb13-amd64, x86_64: installed
```

Guard manuell testen:

```bash
sudo /usr/local/sbin/displaylink-evdi-apt-guard
```

## Targus QV4K – Betriebshinweise

- 4× 4K über zwei DisplayLink-Chips: für Büro/Code/Dashboards ideal; parallel Video auf allen vier Displays ist kompressionsbedingt spürbar weicher.
- Möglichst einen Monitor nativ anschliessen (Laptop-HDMI oder DP-Alt-Mode-USB-C-Adapter ohne DisplayLink) – nativstes Bild und geringere CPU-Last.
- Pre-Boot (BIOS/GRUB/LUKS) ist über DisplayLink-Ausgänge technisch nicht darstellbar; USB-Tastatur funktioniert, weil UEFI HID nativ versteht. Für einen externen Boot-Bildschirm einen nativen Ausgang verwenden.
- Nach dem Entsperren übernimmt die QV4K alle vier 4K-Monitore.

## Repository

Eigenes Projekt (frische Historie, ausschliesslich eigener Code):

- `https://git.corestream.ch/corestream/displaylink-evdi-guard` (öffentlich lesbar)
- Git-Stand der verifizierten Dokumentation: `2714784`
- Dateien: `install.sh`, `resources/displaylink-evdi-apt-guard`, `resources/99displaylink-evdi-guard`, `tests/`, `LICENSE` (GPLv3), `NOTICE.md` (Upstream-Anerkennung)
- Installation:

```bash
git clone https://git.corestream.ch/corestream/displaylink-evdi-guard.git
cd displaylink-evdi-guard
sudo ./install.sh
```

`install.sh` installiert `linux-headers-amd64`, persistiert Guard + APT-Hook und validiert laufenden und neuesten installierten Kernel.

## Upstream

- displaylink-debian (Basis der Problemanalyse, GPLv3): <https://github.com/AdnanHodzic/displaylink-debian>
- Offizieller Treiber: <https://www.synaptics.com/products/displaylink-graphics/downloads/ubuntu>
- Lizenz/Attribution: siehe NOTICE.md im Repo.