A solution for installing Silicon Motion USB Display drivers on Ubuntu 24.04 with newer kernels (6.14+) that are incompatible with the bundled EVDI 1.14.7 module.
The official SMI USB Display driver (v2.22.1.0) bundles EVDI kernel module version 1.14.7, which fails to build on Linux kernel 6.14+ due to kernel API changes. This results in installation failure:
ERROR: Failed to install evdi to the kernel tree.
This repository provides a patched installation script that:
- Installs the latest EVDI (1.14.11+) from source, which is compatible with kernel 6.14+
- Patches the SMI installer to use the system-installed EVDI instead of the bundled version
- Completes the SMI driver installation successfully
- Tested on: Ubuntu 24.04.3 LTS
- Kernel: 6.14.0-35-generic (should work on 6.14+)
- HDMI Device: WAVLINK WL-UG7602H-FBA USB 3.0 to Dual HDMI
- SMI Driver: v2.22.1.0
- Architecture: x86_64
- Ubuntu 24.04 (or similar Debian-based distribution)
- Kernel 6.14 or newer
- Secure Boot (optional - script handles MOK enrollment)
- Root/sudo access
Download the Silicon Motion USB Display driver from the official source:
- Driver version: 2.22.1.0
- Extract to a directory (e.g.,
~/Downloads/SMI-USB-Display-for-Linux-v2.22.1.0/)
cd ~/Downloads/SMI-USB-Display-for-Linux-v2.22.1.0/
git clone https://github.com/latimergrp/smi-usb-display-ubuntu
cd smi-usb-display-ubuntusudo bash install_smi_usb_display.shThe script will:
- Install required dependencies
- Build and install EVDI 1.14.11 from source
- Handle Secure Boot MOK enrollment (if needed)
- Patch and run the SMI installer
- Configure the systemd service
sudo rebootAfter reboot, connect your SMI USB display device. It should be automatically detected.
If Secure Boot is enabled, the script will:
- Generate a Machine Owner Key (MOK)
- Prompt you to create a password
- Reboot to the MOK enrollment screen
During the blue MOK Management screen:
- Select "Enroll MOK"
- Select "Continue"
- Select "Yes"
- Enter the password you created
- Reboot
After rebooting, run the installation script again to complete the installation.
Check if the installation was successful:
# Check if EVDI module is loaded
lsmod | grep evdi
# Check if SMI service is running
systemctl status smiusbdisplay.service
# Check driver installation
ls -la /opt/siliconmotion/
# Monitor service logs
sudo journalctl -u smiusbdisplay.service -fIf the EVDI module fails to load:
# Check DKMS status
dkms status
# Try rebuilding
sudo dkms remove evdi/1.14.11 --all
cd ~/Downloads/evdi
cd module
sudo dkms add .
sudo dkms build evdi/1.14.11
sudo dkms install evdi/1.14.11
# Load module
sudo modprobe evdiIf you see "Key was rejected by service":
# Check MOK status
mokutil --sb-state
# Re-enroll the key
sudo mokutil --import /var/lib/shim-signed/mok/MOK.der
sudo reboot- Check if USB device is recognized:
lsusb | grep 090c- Check kernel messages:
sudo dmesg | tail -50- Restart the service:
sudo systemctl restart smiusbdisplay.serviceIf you get build errors, ensure all dependencies are installed:
sudo apt update
sudo apt install -y build-essential dkms linux-headers-$(uname -r) libdrm-dev pkg-config gitThe official SMI driver includes EVDI 1.14.7, which has compatibility issues with kernel 6.14+ due to changes in the DRM (Direct Rendering Manager) subsystem. Specifically:
- Kernel 6.14 introduced breaking changes to
drm_planeanddrm_framebufferAPIs - EVDI 1.14.7 uses deprecated kernel functions
- EVDI 1.14.11+ includes patches for kernel 6.14+ compatibility
-
EVDI Installation:
- Clones the latest EVDI from GitHub (DisplayLink/evdi)
- Builds the userspace library
- Installs the kernel module via DKMS
- Signs the module for Secure Boot compatibility
-
Installer Patching:
- Extracts the SMI installer
- Replaces the
install_evdi()function to use system EVDI - Disables conflicting module checks
- Preserves all other SMI driver functionality
-
Service Configuration:
- Installs SMI binaries to
/opt/siliconmotion/ - Creates systemd service for automatic startup
- Configures udev rules for device detection
- Sets up X.org configuration
- Installs SMI binaries to
.
├── README.md # This file
├── install_smi_usb_display.sh # Main installation script
├── TROUBLESHOOTING.md # Detailed troubleshooting guide
├── LICENSE # License information
└── docs/
└── TECHNICAL.md # Technical details and architecture
To remove the SMI driver:
cd /opt/siliconmotion
sudo bash SMIUSBDisplay-driver.2.22.1.0.run uninstallTo also remove EVDI:
sudo dkms remove evdi/1.14.11 --all
sudo rm -rf /usr/src/evdi-1.14.11
sudo rm -rf ~/Downloads/evdi- Wayland compatibility: The driver works best with X.org. Wayland support is limited.
- Multi-monitor: Some configurations may require manual X.org configuration.
- Performance: USB display performance is inherently limited by USB bandwidth.
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Test your changes thoroughly
- Submit a pull request with a clear description
- DisplayLink/evdi - The EVDI kernel module
- AdnanHodzic/displaylink-debian - DisplayLink driver installer
This project is licensed under the MIT License - see the LICENSE file for details.
The SMI USB Display driver is proprietary software owned by Silicon Motion, Inc.
- Solution developed for Ubuntu 24.04 with kernel 6.14+ compatibility
- EVDI module by DisplayLink
- Original SMI driver by Silicon Motion, Inc.
This is an unofficial installation method. Use at your own risk. The author is not affiliated with Silicon Motion, Inc. or DisplayLink.
For issues and questions:
- Open an issue on GitHub
- Check the TROUBLESHOOTING.md guide
- Review closed issues for similar problems
Last Updated: November 2025
Version: 1.0.0