Please recommend a Port Replicator / Docking Station

So, I have a solution that works alright for me…

I got a USB 2.0 displaylink adapter that works with the opensource ugl driver. Specifically: http://www.win-star.com/eshop/goods.php?id=90

I use that for one monitor, and the hdmi out for the other monitor.

It doesn’t seem to use an obscene amount of CPU like I noticed with the closed source driver, and actually seems to work acceptably.

However I did have issues getting it to work initially, and needed to make my own xorg.conf … but I now have it working perfectly fine, other than the mouse flickering during animation on the screen, which I suppose can be fixed somehow…

3 Likes

krad,

Can you give me a pointer on what you did with xorg.conf? I have one of those devices, but whenever I try to activate the display, X crashes.

This is what my Xorg.conf looks like:

Section "ServerLayout"
	Identifier     "X.org Configured"
	Screen      0  "Screen0" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
	ModulePath   "/usr/lib/xorg/modules"
	FontPath     "/usr/share/fonts/X11/misc"
	FontPath     "/usr/share/fonts/X11/cyrillic"
	FontPath     "/usr/share/fonts/X11/100dpi/:unscaled"
	FontPath     "/usr/share/fonts/X11/75dpi/:unscaled"
	FontPath     "/usr/share/fonts/X11/Type1"
	FontPath     "/usr/share/fonts/X11/100dpi"
	FontPath     "/usr/share/fonts/X11/75dpi"
	FontPath     "built-ins"
EndSection

Section "Module"
	Load  "glx"
EndSection

Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "kbd"
EndSection

Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option	    "Protocol" "auto"
	Option	    "Device" "
/dev/input/mice"
	Option	    "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "Monitor Model"
EndSection

Section "Device"
	Identifier "Intel Graphics"
	Driver "intel"
	Option "PageFlip" "false"
EndSection

Section "Device"
    Identifier  "usbdev"
    Driver      "modesetting"
    Option      "kmsdev" "/dev/dri/card0"
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
	SubSection "Display"
		Viewport   0 0
		Depth     1
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     4
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     8
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     15
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     16
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     24
	EndSubSection
EndSection

This is how I am activating the second monitor:

xrandr --setprovideroutputsource 1 0
xrandr --output HDMI1 --auto --primary --output DVI-I-1-1 --auto --right-of HDMI1 --output eDP1 --off

I am using lxde with xorg instead of the default xorg with wayland. (might have something to do with it)

Hope that helps! :slight_smile:

1 Like

So, after rebooting, my config stopped working, and I spent awhile playing with everything until I figured out what was wrong.

Basically, my xorg.conf before was wrong, and xorg server greater than 1.19 has a bug that prevents it from working: https://github.com/DisplayLink/evdi/issues/133

So this is my current working xorg.conf:

Section "Device"
    Identifier  "inteldev"
    Driver      "intel"
    # These options make the mouse flicker not as bad
    Option "AccelMethod" "sna"
    Option "TearFree" "true"
    Option "TripleBuffer" "true"
    Option "MigrationHeuristic" "greedy"
    Option "Tiling" "true"
    Option "ExaNoComposite" "false"
    Option "Pageflip" "true"
#    BusID       "PCI:0:2:0"
EndSection

Section "Device"
    Identifier  "usbdev"
    Driver      "modesetting"
    Option      "kmsdev" "/dev/dri/card0"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "inteldev"
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "usbdev"
EndSection

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen1"
    Option         "Xinerama" "0"
EndSection

And then to downgrade to a 1.19 xorg server I followed these instructions:

https://lists.debian.org/debian-user/2012/07/msg00647.html

Except that I used the following sources.list entries:

deb http://snapshot.debian.org/archive/debian/20180131T223129Z/ buster main
deb-src http://snapshot.debian.org/archive/debian/20180131T223129Z/ buster main

Then it is all working again :slight_smile:

I have actually got everything working, and have even got a USB 3.0 dock working with two display outputs. I am on Arch Linux, so I also had to downgrade xorg-server. Also I had to install the proprietary Ubuntu Displaylink driver, and enable the service for it through systemctl. I did not have to do anything with my xorg.conf.

1 Like

@swinny, thank you for updating this thread with your progress, I’m really interested in a Librem 13 but using 2 external displays is a pretty important requirement for me. Would you be willing to share some of the details about your setup? For example which dock you’re using, what xorg changes/version was necessary to get the setup working, the resolution of the external displays you’re able to drive, et cetera.

I am on Arch linux, so you may not need to do all of this if you are already on something like Ubuntu 16.04.

I am using this dock: https://www.amazon.com/HP-3005PR-USB-Port-Replicator/dp/B008KMDVPQ

Had to downgrade xorg-server to version 1.19.6. Had to downgrade xf86-video-vesa to version 2.3.4. Also need to configure package manager to blacklist updates for those packages. This will probably cause problems down the road unless something gets fixed(xorg or displaylink). See here for updates to the issue: https://github.com/DisplayLink/evdi/issues/133

I am running the displaylink proprietary driver designed for Ubuntu. I’ve installed it from the Arch User Repository. PureOS is based on Debian, so this might help you install it https://github.com/AdnanHodzic/displaylink-debian

I have two displays running off the dock 1920x1200 and 1920x1080. Frame rate is not amazing, but it doesn’t bother me. YouTube is watchable.

1 Like

I’m an Arch user as well, so that’s all useful info. Thank you for linking to the DisplayLink issue; hopefully the upstream issues are resolved soon.

1 Like

Should be clear that, usb 3 displaylink need the closed source proprietary drivers but usb 2 displaylink devices has working open source drivers already built into the linux kernel.

2 Likes

Exactly.

Last time I tried one of these with a fully free (libre) kernel, it worked as advertised, with no need for any additional drivers.

The CPU usage increased while using it, but not very much. This was on a machine much less powerful than the Librems. As long as the adapter was not being used with content that needed large areas of the display to be completely redrawn frequently (3D games or video editing, for example), I found the performance to be perfectly adequate.

Hi all,
I’m interested in having two additional monitors as well. I’ve gone some way to solving this with only free and open source software. I’m running stock-ish PureOS on a 15v3.

I bought a Plugable USB 2.0 DVI adapter and I’ve managed to get it working pretty well with an external monitor, albeit only at 1024 x 768 or similar (the monitor is a 1920 x 1080 Asus).

Steps:

  1. obtain the adapter
  2. blacklist old udlfb driver just in case–not sure necessary: add “blacklist udlfb” to /etc/modprobe.d/blacklist.framebuffer.conf (you may have to create file)
  3. install evdi-dkms package from repos (you may have to reboot, not sure)
  4. Set /etc/X11/xorg.conf.d/21-displaylink.conf (you may have to create file) to:

Section “Device”
Identifier “DisplayLink”
Driver “modesetting”
Option “PageFlip” “false”
EndSection

  1. check out what’s going on with xrandr following the Arch wiki article. I just have to do xrandr --setprovideroutputresource 1 0
  2. Things will probably work now if you go to the gnome display settings and turn on the additional monitor. I see the monitor, but at a lower than optimal resolution. Mouse lag is acceptable.

Now to try modelines to get the higher resolution working.

First try modeline from the 1920x1080 resolution already present on the 15v3 because of its main monitor:
xrandr --addmode DVI-I-1-1 "1920x1080" (my adapter is called DVI-I-1-1, but yours may be called something different. Investigate with xrandr per the Arch wiki article).
Then to gnome display settings to turn the monitor on.
This works, but there’s a lot of mouse lag (not crazy jumping around, just lag) and there are artifacts around the dialog box for keep display settngs.

You would add a custom modeline like so:
xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync

and then add it to your display like so:
xrandr --addmode DVI-I-1-1 "1920x1080_60.00"

None of these work:
gtf 1920 1080 60 generates:
"1920x1080_60.00" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync

cvt 1920 1080 generates:
"1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync

Both just show a black screen.
Before adding the custom 21-displaylink.conf to turn pageflipping off per the Arch wiki suggestion, pretty much all modes were useless because the mouse pointer was jumping around like crazy.

So–I’m no expert on this, but I thought I’d share what I’ve learned in the hope it’s helpful to others.
If you think you can solve this problem or can point me in the right direction, I’d appreciate the help!

Edit: I should mention that at present removing the USB connection for the Plugable adapter currently causes the system to freeze, or appear to do so. It’s some problem with X, I think it’s noted in the Arch wiki article. Keyboard and mouse don’t appear to work. I couldn’t ctrl+alt+F3 into another tty, but maybe a script that restarts X if xyz happens would work. I mention it because being able to hot-plug into and off of a monitor may be important for certain workflows.

2 Likes

that looks pretty cool, but i don’t like the idea of running proprietary drivers… it looks like a maintenance nightmare…

isn’t there anything that can be done with the USB-C port? I don’t need multiple monitor support, a single one is fine for me.

my ideal setup is that i have a mouse, keyboard and monitor all plugged into some sort of USB-C hub that I could connect with a single wire… isn’t that something that USB-c is supposed to solve?

update: the answer is yes, USB-C is supposed to solve that, but the librem laptops don’t have support for the fancy “display over USB-C” stuff anyways, so that wouldn’t work. i’ll probably end up getting a USB-C hub and connect through HDMI…

It’s outside of the spirit of “Open Source first and always” but I ended up using a Plugable docking station and a hand-edited version of https://github.com/AdnanHodzic/displaylink-debian. It was a small edit just added some if/then logic but I’m happy to share the script if I can find it. The Plugable worked out of the box except for the monitors. The displaylink-debian script bridged the gap.

1 Like

which pluggable docking station did you end up using?

This one here: https://plugable.com/products/ud-3900h/. The 3900H.

I assume it was adding a new supported OS stanza, e.g. as for Parrot. Could you share your edit please? Or ideally, submit a PR to the repo?

Also, did you have to have to perform any of the post-installation tasks as listed in the repo notes?

1 Like

@Corbeau I’m also trying to get the UD-3900H working. Can you share or describe any modifications you made to the displayport script?

1 Like

I’m on the road currently. When I return, i will pull it from backups and share it.

FYI. The device listed in this thread has open source drivers which are now in the mainline kernel. They state that they are working with kernel devs on the site: https://plugable.com/products/usb-vga-165/

Can anyone give an update of how well your setup is working in 2020 and with what distros/releases?

About your HP 3005PR, it seems the issues are related with DisplayPort. How about HDMI, does that work out of the box? And does it work under Wayland?