Skip to content

About

Fix DisplayLink USB displays on immutable Fedora (Silverblue/Aurora/Bazzite) - JACKKNIFE AI™

Resources

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

Repository files navigation

     ██╗ █████╗  ██████╗██╗  ██╗██╗  ██╗███╗   ██╗██╗███████╗███████╗
     ██║██╔══██╗██╔════╝██║ ██╔╝██║ ██╔╝████╗  ██║██║██╔════╝██╔════╝
     ██║███████║██║     █████╔╝ █████╔╝ ██╔██╗ ██║██║█████╗  █████╗
██   ██║██╔══██║██║     ██╔═██╗ ██╔═██╗ ██║╚██╗██║██║██╔══╝  ██╔══╝
╚█████╔╝██║  ██║╚██████╗██║  ██╗██║  ██╗██║ ╚████║██║██║     ███████╗
 ╚════╝ ╚═╝  ╚═╝ ╚═════╝╚═╝  ╚═╝╚═╝  ╚═╝╚═╝  ╚═══╝╚═╝╚═╝     ╚══════╝
                             █████╗ ██╗
                            ██╔══██╗██║
                            ███████║██║
                            ██╔══██║██║
                            ██║  ██║██║
                            ╚═╝  ╚═╝╚═╝
                                     JACKKNIFE AI™

DisplayLink Fix for Immutable Fedora

Fixes DisplayLink USB displays (like Mobile Pixels Duex Pro) on immutable Fedora variants:

  • Fedora Silverblue
  • Fedora Kinoite
  • Universal Blue Aurora
  • Universal Blue Bazzite

The Problem

On immutable Fedora variants (Silverblue, Kinoite, Aurora, Bazzite), DKMS builds the evdi kernel module but cannot install it to the read-only /lib/modules directory. This causes the displaylink-driver.service to fail because modprobe evdi can't find the module.

Additionally, even when the module is manually loaded, the service won't start automatically on boot because it lacks proper systemd [Install] configuration.

modprobe: FATAL: Module evdi not found in directory /lib/modules/6.x.x-xxx.fc4x.x86_64

The Solution

This fix:

  1. Loads evdi directly from the DKMS build path (/var/lib/dkms/evdi/...)
  2. Auto-rebuilds on kernel updates via dkms autoinstall
  3. Integrates with systemd so DisplayLink starts automatically on boot
  4. Enables the service with proper systemd configuration for persistence across reboots

Installation

Prerequisites

  1. Install the displaylink package:
# Download the latest from https://github.com/displaylink-rpm/displaylink-rpm/releases
rpm-ostree install ./fedora-43-displaylink-*.rpm
# Reboot
systemctl reboot
  1. After reboot, build evdi:
sudo dkms autoinstall

Install the Fix

git clone https://github.com/JackKnifeAI/displaylink-immutable-fix.git
cd displaylink-immutable-fix
sudo ./install.sh

Manual Installation

# Copy the loader script
sudo cp evdi-loader.sh /usr/local/bin/
sudo chmod +x /usr/local/bin/evdi-loader.sh

# Create systemd overrides
sudo mkdir -p /etc/systemd/system/displaylink-driver.service.d
sudo cp displaylink-driver.service.d/override.conf \
    /etc/systemd/system/displaylink-driver.service.d/

# Enable autostart on boot
sudo bash -c 'cat > /etc/systemd/system/displaylink-driver.service.d/enable.conf << EOF
[Install]
WantedBy=graphical.target
EOF'

# Reload, enable, and start
sudo systemctl daemon-reload
sudo systemctl enable displaylink-driver
sudo systemctl restart displaylink-driver

Verify It Works

# Check service status
systemctl status displaylink-driver

# Check for new display
ls /sys/class/drm/
# Should show card0-DVI-I-1 or similar for your USB display

After Kernel Updates

The fix handles kernel updates automatically. On first boot after a kernel update:

  1. evdi-loader.sh detects no module for the new kernel
  2. Runs dkms autoinstall to build it
  3. Loads the freshly built module
  4. DisplayLink starts normally

Troubleshooting

Service doesn't start on boot

Check if the service is enabled:

systemctl is-enabled displaylink-driver

If it shows "disabled" or "static", enable it:

sudo systemctl enable displaylink-driver

Verify the enable.conf file exists:

cat /etc/systemd/system/displaylink-driver.service.d/enable.conf

Should contain:

[Install]
WantedBy=graphical.target

evdi module not loading

Check DKMS status:

dkms status | grep evdi

If not built for current kernel, rebuild:

sudo dkms autoinstall

Manually test the loader:

sudo /usr/local/bin/evdi-loader.sh

After reboot, still not working

  1. Check service status:
systemctl status displaylink-driver
  1. Check module:
lsmod | grep evdi
  1. Check logs:
journalctl -u displaylink-driver -b

How It Works

evdi-loader.sh

  • Checks if evdi is already loaded (skips if so)
  • Checks if module exists for current kernel
  • If not, runs dkms autoinstall to build it
  • Decompresses .ko.xz if needed
  • Loads module via insmod from DKMS path

systemd overrides

override.conf:

  • Clears the default ExecStartPre=/sbin/modprobe evdi (which fails)
  • Replaces with ExecStartPre=/usr/local/bin/evdi-loader.sh

enable.conf:

  • Adds [Install] section with WantedBy=graphical.target
  • Enables the service to start automatically on boot
  • Survives system reboots and kernel updates

Compatibility

This fix works with ALL DisplayLink devices because it operates at the kernel module level (evdi), which is used universally by all DisplayLink USB display adapters regardless of manufacturer or model.

Supported DisplayLink Devices

  • ✅ Portable monitors (Mobile Pixels Duex, ASUS MB16, etc.)
  • ✅ USB docking stations (Dell, HP, Lenovo, Plugable, etc.)
  • ✅ USB-to-HDMI/DVI/DisplayPort adapters
  • ✅ Any device using DisplayLink chipsets (DL-1x5, DL-3x00, DL-4xxx, DL-5xxx, DL-6xxx series)

Supported Systems

  • ✅ Fedora Silverblue (immutable Workstation)
  • ✅ Fedora Kinoite (immutable KDE)
  • ✅ Universal Blue Aurora (immutable developer edition)
  • ✅ Universal Blue Bazzite (immutable gaming)
  • ✅ Any rpm-ostree based Fedora variant

Tested On

  • Aurora (Universal Blue) - Fedora 43 on Samsung T7 Shield external SSD
  • Mobile Pixels Duex Pro (DisplayLink vendor 17e9)
  • Survives kernel updates (tested: 6.17.1 and 6.17.8)
  • Survives reboots with auto-start enabled

Contributing

PRs welcome! This fix should ideally be integrated into:

  • Universal Blue's ujust enable-displaylink command
  • The displaylink-rpm package itself

License

MIT

Credits


 ╔═╗╦ ╦╔╦╗  ╔╦╗╦ ╦╔═╗  ╔╗ ╦ ╦╦  ╦  ╔═╗╦ ╦╦╔╦╗
 ║  ║ ║ ║    ║ ╠═╣║╣   ╠╩╗║ ║║  ║  ╚═╗╠═╣║ ║
 ╚═╝╚═╝ ╩    ╩ ╩ ╩╚═╝  ╚═╝╚═╝╩═╝╩═╝╚═╝╩ ╩╩ ╩

About

Fix DisplayLink USB displays on immutable Fedora (Silverblue/Aurora/Bazzite) - JACKKNIFE AI™

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages