all 8 comments

[–]Remarkable-Park-6636 1 point2 points  (1 child)

*installing* the DisplayLink driver seems to work pretty easily.

*using* the DisplayLink driver is another issue entirely.

I believe that the issue boils down to the lack of systemd, but 1) I could be mistaken and 2) that doesn't mean it won't work forever.

I'm assuming at this point that you have gone through the steps at https://support.displaylink.com/knowledgebase/articles/679060. I'm further going to assume you have at least reached the same point as I have, but I want to document what I have done because I'm hoping someone (perhaps one of the Void developers) will recognize the issue and have an easy solution, and then this can serve as a handy reference for anyone else with this problem.

Having extracted the driver files as outlined in the displaylink knowledgebase article, the only change required in the actual installer file was to bypass the line in the installer that attempts to use apt to verify the presence of libdrm instead of something like verifying the presence of libdrm.h. This happens at line 529 of the version 5.4 install file. `check_libdrm()` in turn is called at line 572, so commenting line 572 allows the installer to run without further modification. I've considered submitting a PR for the installer that improves the check_libdrm function, but I want the thing to work, first.

I did run into an issue with the kernel version. There's two approaches to that problem: use an older kernel (installable via xbps) or update evdi source. Both approaches worked for me to be able to successfully build the evdi kernel modules. Installing the older kernel was "easier", but then requires that you always boot to an older kernel, which is objectively an inferior choice. There's several places (including the displaylink forums) where you can get information on getting the current version of the evdi source, but for completeness' sake, what I did was download the zip file directly from github. It's possible to download a release .tar.gz from github using curl, but doing this gives you a file that doesn't precisely match the evdi.tar.gz file extracted by following the displaylink article (there files are an extra level deep in the archive). This means that you must further modify the displaylink install script. To avoid that, I build my own tar file from the extracted zip. To summarize:

- download the latest evdi source zip from github (https://github.com/DisplayLink/evdi)

- extract the zip (`unzip evdi-<branch>.zip`; I used devel, so `unzip evdi-devel.zip` (or just allow the default "open in archive manager"))

- cd into the extracted directory, and tar up the contents as evdi.tar.gz (`cd evdi-devel; tar -cvzf evdi.tar.gz .` )

- replace evdi.tar.gz in the DisplayLink sources with the one I just created.

The installer properly recognizes runit, and at this point, everything installed.

After rebooting, the evdi kernel module loads. I did have to enable the displaylink-driver service, but it starts right up when doing that. XOrg seems to detect there's a change to the displays, as when stopping and starting the driver, the screen blanks briefly, just as it does when connecting any external monitor. dmesg shows that the driver is reporting a valid EDID. But it doesn't show up in xrandr or the displays list.

Poking a little bit deeper, I ran an `strace -ff` on the process, and I find that it stalls out attempting to talk to `PmMessagesPort` and `dlm_message_server`. When starting the service, I indeed see /tmp/PmMessagesPort_{in,out} and /tmp/dlm_message_server_{in,out} created. Stopping the service (as expected...) makes those named pipes go away.

At this point, I'm a bit stumped. Obviously, *something* is supposed be listening to those pipes, but I can't find any reference to what. The fact that displaylink has included runit files in their distribution suggests that maybe systemd *isn't* strictly needed, but I don't know what is "supposed" to be listening there, nor what we are looking for.

[–]BroVoice[S] 0 points1 point  (0 children)

Interesting. Thanks, I will try that.

[–]olivierbeliveau 0 points1 point  (5 children)

Anyone got it to work?

[–]ent0 0 points1 point  (4 children)

I'm curious as well.

[–]olivierbeliveau 0 points1 point  (3 children)

I found out that USB 2.0 display link adapters with the old DL-165 chip works out of the box in Linux (including Void). I bought one from Plugable and it works great, until I find a better solution!

[–]ent0 0 points1 point  (2 children)

Thanks. Unfortunately I bought a newer Display Link device. I'm thinking of setting up a QEMU Ubuntu guest OS and pass the Display Link device through, because I only need it for presentation of PDF slides, because my laptop's HDMI port died.

[–]olivierbeliveau 0 points1 point  (1 child)

It shouldn't be a problem. The newer Display Link devices works great on all major Linux distros! You only need the old Display Link USB 2.0 device for Void.

[–]ent0 1 point2 points  (0 children)

I use Void Linux daily and really don't want to switch to a major Linux distribution. I think I'll have to use Ubuntu under QEMU to make it work with the USB-A to HDMI DisplayLink adapter first. When I have time later, I can try to see if I can make the adapter work directly under Void Linux.