Please recommend a Port Replicator / Docking Station

Hello everybody,

I am interested in Librem13 or Librem15 and I would like to use it (when at home) with the lid closed and in a dual-screen configuration with two monitors.

The first thing that came to my mind to achieve this was using a Port Replicator / Docking Station.

Can anybody recommend one or has some success stories?

Thanks in advance.



I am also very interested in having dual monitors, any suggestions here?

As far as I can tell, there are not many options to connect librem15 up to dual monitors, it does not appear to be possible to connect displays via the usb-c port.

That leaves the usb ports and the single hdmi port.

I tested a USB3 docking station that uses “displaylink” to connect monitors via the USB port. To get this to work I needed to install the binary blob drivers on pureos (

I got it to work, however the drivers used a lot of CPU, and I quickly ran into issues with one application that I use (

The performance however seemed acceptable, if you don’t plan to do anything more than editing documents…

Perhaps a displaylink dock would be perfectly acceptable if you are running windows as the host, however I have not tested that.

So I was looking into alternatives, and found that there are devices that take two monitors and merge them together as if they were a single big screen, and allows for them to be connected to a single VGA port. (for example the so called Matrox DualHead2Go Digital)

I am hoping I can just use the dualhead2go, and get a hdmi -> vga converter, i’ve ordered it but have not tested it yet.

If it works I believe I can use fakexrandr to split the “single” big monitor back into two. I’m not sure on the options if you are using wayland.

Perhaps I missed an entirely obvious way to connect two monitors to librem15?

1 Like

Update to my previous post, I have not been able to get the Matrox DualHead2Go Digital, to work with the HDMI input, a simple email to matrox and they responded saying it will not work :frowning:

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:

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…



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     " Configured"
	Screen      0  "Screen0" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "Keyboard0" "CoreKeyboard"

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"

Section "Module"
	Load  "glx"

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

Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option	    "Protocol" "auto"
	Option	    "Device" "
	Option	    "ZAxisMapping" "4 5 6 7"

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

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

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

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

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:

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"

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

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

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

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

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

Except that I used the following sources.list entries:

deb buster main
deb-src 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:

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:

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

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.



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).


  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”

  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.


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 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: 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