Displaylink: Difference between revisions
Note that driver version 6.0.0 support is pending |
Hughobrien (talk | contribs) add instructions for display link support on sway/wlroots |
||
Line 18: | Line 18: | ||
${lib.getBin pkgs.xorg.xrandr}/bin/xrandr --setprovideroutputsource 2 0 | ${lib.getBin pkgs.xorg.xrandr}/bin/xrandr --setprovideroutputsource 2 0 | ||
'';</syntaxhighlight> | '';</syntaxhighlight> | ||
==Sway== | |||
Identify which card has the render device, <code>evdi</code> is the DisplayLink interface, so it's not <code>card0</code>, but <code>card1</code>. | |||
<syntaxhighlight lang="console"> | |||
$ 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 | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="nix"> | |||
environment.variables = { | |||
WLR_EVDI_RENDER_DEVICE = "/dev/dri/card1"; | |||
}; | |||
nixpkgs.overlays = [ | |||
(final: prev: { | |||
wlroots_0_17 = prev.wlroots_0_17.overrideAttrs (old: { | |||
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" ]; | |||
</syntaxhighlight> | |||
[Source https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/1823#note_2146862] | |||
[[Category:Video]] | [[Category:Video]] |
Revision as of 21:14, 2 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. As of 2024-06-27, version 6.0.0 support in NixOS is pending merge of nixpkgs#317292
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: {
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" ];
[Source https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/1823#note_2146862]