Displaylink

From NixOS Wiki
Revision as of 13:45, 15 November 2021 by imported>Lillecarl (xorg configuration added, required for me to get displaylink working on 21.05)

DisplayLink monitors

In order to use Displaylink monitors over USB, such as the ASUS MB16AC, the displaylink driver needs to be installed:

$ services.xserver.videoDrivers = [ "displaylink" "modesetting" ];

Since these drivers depend on binary unfree blobs, you will need to first add it to your nix-store. Go to https://www.displaylink.com/downloads/ubuntu to get the appropriate driver version and note the download URL you get after accepting the EULA. Then (example):

$ nix-prefetch-url --name displaylink.zip http://assets.displaylink.com/live/downloads/software/f1369_DisplayLink%20USB%20Graphics%20Software%20for%20Ubuntu%205.2.zip\?AWSAccessKeyId\=AKIAJHGQWPVXWHEDJUEA\&Expires\=1579838008\&Signature\=4UidRIwBYLZPHSf2EkcyLFKb%2B8o%3D

Before the monitor can be used by xrandr, you will need to run the following command, which can be added to e.g. your ~/.xprofile (this is not necessary since NixOS 20.03):

$ xrandr --setprovideroutputsource 1 0

Connecting a second external monitor

In order to add a second external monitor you can add the following to your configuration:

services.xserver.displayManager.sessionCommands = ''
    ${lib.getBin pkgs.xorg.xrandr}/bin/xrandr --setprovideroutputsource 2 0
'';

xorg configuration

After some experimentation at work getting our Dell D6000 docks to work i had to create an xorg configuration file as follows

environment.etc."X11/xorg.conf.d/20-evdi.conf" = {
  enable = true;
  text = ''
    Section "OutputClass"
      Identifier "DisplayLink"
      MatchDriver "evdi"
      Driver "modesetting"
      Option "AccelMethod" "none"
    EndSection
  '';
};

Taken from arch wiki (https://wiki.archlinux.org/title/DisplayLink#Configuring_X_Server)

Note that modesetting is the modern Intel iGPU driver, read further into the Arch wiki if you're experiencing issues.

evdi is automatically pulled in as a dependency from the displaylink package, you might need to add it to boot.kernelModules.

Status of the package

As of right now (2020-01-24), the package in the nixos stable channel is out of date, so you may need to override it from nixpkgs.

Since NixOS 20.03 this package is working out of the box again.