Displaylink: Difference between revisions

From NixOS Wiki
m fix link syntax
remove note about pending pr that was merged https://github.com/NixOS/nixpkgs/pull/324121
 
(One intermediate revision by the same user not shown)
Line 6: Line 6:
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.
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.


As of 2024-05-01, the current latest version for the driver can be found at https://www.synaptics.com/products/displaylink-graphics/downloads/ubuntu-6.0?filetype=exe. As of 2024-06-27, version 6.0.0 support in NixOS is pending merge of [https://github.com/NixOS/nixpkgs/pull/317292 nixpkgs#317292]
As of 2024-05-01, the current latest version for the driver can be found at https://www.synaptics.com/products/displaylink-graphics/downloads/ubuntu-6.0?filetype=exe.


After you have downloaded the driver, run something like the following, adjusting the version number in <code>displaylink-600.zip</code> to match the version supported in NixOS at the moment:<syntaxhighlight lang="console">
After you have downloaded the driver, run something like the following, adjusting the version number in <code>displaylink-600.zip</code> to match the version supported in NixOS at the moment:<syntaxhighlight lang="console">
Line 35: Line 35:
nixpkgs.overlays = [
nixpkgs.overlays = [
   (final: prev: {     
   (final: prev: {     
     wlroots_0_17 = prev.wlroots_0_17.overrideAttrs (old: {                                                                                    
     wlroots_0_17 = prev.wlroots_0_17.overrideAttrs (old: { # you may need to use 0_18
       patches = (old.patches or [ ]) ++ [  
       patches = (old.patches or [ ]) ++ [
         (prev.fetchpatch {
         (prev.fetchpatch {
           url = "https://gitlab.freedesktop.org/wlroots/wlroots/uploads/bd115aa120d20f2c99084951589abf9c/DisplayLink_v2.patch";
           url = "https://gitlab.freedesktop.org/wlroots/wlroots/uploads/bd115aa120d20f2c99084951589abf9c/DisplayLink_v2.patch";
Line 48: Line 48:
systemd.services.dlm.wantedBy = [ "multi-user.target" ];
systemd.services.dlm.wantedBy = [ "multi-user.target" ];
</syntaxhighlight>
</syntaxhighlight>
Note as of [https://github.com/NixOS/nixpkgs/pull/351752 2014-10-30] nixos-unstable sway uses <code>wlroots_0_18</code>. The patch above applies correctly but you will need to invoke sway with the <code>--unsupported-gpu</code> flag.
[https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/1823#note_2146862 Source]
[https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/1823#note_2146862 Source]


[[Category:Video]]
[[Category:Video]]

Latest revision as of 21:33, 9 November 2024

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" ];

The module nixos/modules/hardware/video/displaylink.nix should also work for wlroots compositors.

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.

As of 2024-05-01, the current latest version for the driver can be found at https://www.synaptics.com/products/displaylink-graphics/downloads/ubuntu-6.0?filetype=exe.

After you have downloaded the driver, run something like the following, adjusting the version number in displaylink-600.zip to match the version supported in NixOS at the moment:

$ nix-prefetch-url --name displaylink-600.zip https://www.synaptics.com/sites/default/files/exe_files/2024-05/DisplayLink%20USB%20Graphics%20Software%20for%20Ubuntu6.0-EXE.zip

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
'';

Sway

Identify which card has the render device, evdi is the DisplayLink interface, so it's not card0, but card1.

$ ls -l /dev/dri/by-path
lrwxrwxrwx - root  2 Nov 13:38 pci-0000:00:02.0-card -> ../card1
lrwxrwxrwx - root  2 Nov 13:38 pci-0000:00:02.0-render -> ../renderD128
lrwxrwxrwx - root  2 Nov 13:38 platform-evdi.0-card -> ../card0
environment.variables = {    
  WLR_EVDI_RENDER_DEVICE = "/dev/dri/card1";                                                                                                   
};
nixpkgs.overlays = [
  (final: prev: {    
    wlroots_0_17 = prev.wlroots_0_17.overrideAttrs (old: { # you may need to use 0_18
      patches = (old.patches or [ ]) ++ [
        (prev.fetchpatch {
          url = "https://gitlab.freedesktop.org/wlroots/wlroots/uploads/bd115aa120d20f2c99084951589abf9c/DisplayLink_v2.patch";
              hash = "sha256-vWQc2e8a5/YZaaHe+BxfAR/Ni8HOs2sPJ8Nt9pfxqiE=";
            })       
          ];
        });
      })
];
services.xserver.videoDrivers = [ "displaylink" ];
systemd.services.dlm.wantedBy = [ "multi-user.target" ];

Note as of 2014-10-30 nixos-unstable sway uses wlroots_0_18. The patch above applies correctly but you will need to invoke sway with the --unsupported-gpu flag.

Source