UPDATED! – D3100 Docking Station with Dell XPS 15 Laptop & Linux Mint 18.1
Getting the D3100 working on our Dell XPS 15 machines using the NVIDIA proprietary drivers. If you have to ask why then this tutorial is not for you.
XPS 15 specs:
- 7th Generation Intel(R) Core(TM) i7-7700HQ Quad Core Processor (6M cache, up to 3.8 GHz)
- 1TB PCIe SSD
- 32GB DDR4 2.400MHz
Also included in the order were 2 D3100 Docking stations. If you are here then you probably already know that these “Docking stations” are based on DisplayLink technology that is barely supported under Linux.
Officially there is no support for DisplayLink hardware unless you are using the opensource drivers. However, as anyone can tell you, those drivers are so sub-optimal that they are the first thing to be removed after installing Linux. If you are serious about FPS in games you cannot rely on the OS drivers. On top of that, while the DisplayLink hardware is supported on the OS drivers, there are huge shortcomings in the form of lag, screen tearing, disappearing mouse cursor and artifacts. This is just not an acceptable solution.
My current display setup is quite simple. In the office I have 2 Dell 24″ monitors and the D3100. I am connecting 1 monitor to the laptop HDMI port and the other to 1 of the D3100 HDMI ports. There is still MAJOR lag and the mouse keeps going on vacation but it works. This ensures that I have at least 1 external monitor that has full performance. Once I can figure out how to get better performance I will be adding more monitors (1 Displayport and 1 HDMI port is still available). At home I am only using the D3100 as a USB hub until I can get performance out of it.
Below you will find how I got things working. Your mileage WILL vary. After all these are DisplayLink boxes. And I advise steering clear of the 378 NVIDIA drivers as they seem to be a bit unstable atm.
newferno ~ # uname -a
Linux newferno 4.10.3-041003-generic #201703142331 SMP Wed Mar 15 03:32:45 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Next, install the proprietary NVIDIA driver:
newferno ~ # sudo apt-get install nvidia-375
Make sure the driver is being used:
newferno ~ # nvidia-smi
Thu Mar 23 15:50:59 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.39 Driver Version: 375.39 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 1050 Off | 0000:01:00.0 Off | N/A |
| N/A 56C P0 N/A / N/A | 736MiB / 4041MiB | 11% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1635 G /usr/lib/xorg/Xorg 384MiB |
| 0 2409 G cinnamon 94MiB |
| 0 3319 G evolution 19MiB |
| 0 3690 G ...s-passed-by-fd --v8-snapshot-passed-by-fd 237MiB |
+-----------------------------------------------------------------------------+
Check which providers are available to you once the D3100 is plugged in.
@newferno ~ $ xrandr --listproviders
Providers: number : 5
Provider 0: id: 0x214 cap: 0x1, Source Output crtcs: 0 outputs: 0 associated providers: 2 name:NVIDIA-0
Provider 1: id: 0x253 cap: 0x2, Sink Output crtcs: 1 outputs: 1 associated providers: 1 name:modesetting
Provider 2: id: 0x47 cap: 0x2, Sink Output crtcs: 3 outputs: 5 associated providers: 1 name:modesetting
Provider 3: id: 0x253 cap: 0x2, Sink Output crtcs: 1 outputs: 1 associated providers: 1 name:modesetting
Provider 4: id: 0x47 cap: 0x2, Sink Output crtcs: 3 outputs: 5 associated providers: 1 name:modesetting
Use xrandr to select the correct provider.
xrandr --setprovideroutputsource 2 0
Check for available screens afterwards.
newferno ~ # xrandr
Screen 0: minimum 8 x 8, current 5760 x 1080, maximum 32767 x 32767
DVI-I-2-1 connected 1920x1080+1920+0 509mm x 286mm
1920x1080 60.00*+
1600x900 60.00
1280x1024 75.02 60.02
1152x864 75.00
1024x768 75.03 60.00
800x600 75.00 60.32 56.25
848x480 60.00
640x480 75.00 59.94
720x400 70.08
eDP-1-1 connected 1920x1080+3840+0 346mm x 194mm
3840x2160 60.00 +
2048x1536 60.00
1920x1440 60.00
1856x1392 60.01
1792x1344 60.01
1920x1200 59.95
1920x1080 59.93*
1600x1200 60.00
1680x1050 59.95 59.88
1600x1024 60.17
1400x1050 59.98
1280x1024 60.02
1440x900 59.89
1280x960 60.00
1360x768 59.80 59.96
1152x864 60.00
1024x768 60.04 60.00
960x720 60.00
928x696 60.05
896x672 60.01
960x600 60.00
960x540 59.99
800x600 60.00 60.32 56.25
840x525 60.01 59.88
800x512 60.17
700x525 59.98
640x512 60.02
720x450 59.89
640x480 60.00 59.94
680x384 59.80 59.96
576x432 60.06
512x384 60.00
400x300 60.32 56.34
320x240 60.05
DP-1-1 disconnected
HDMI-1-1 connected primary 1920x1080+0+0 509mm x 286mm
1920x1080 60.00*+
1600x900 60.00
1280x1024 75.02 60.02
1152x864 75.00
1024x768 75.03 60.00
800x600 75.00 60.32
640x480 75.00 59.94
720x400 70.08
DP-1-2 disconnected
HDMI-1-2 disconnected
1280x1024 (0x54) 108.000MHz +HSync +VSync
h: width 1280 start 1328 end 1440 total 1688 skew 0 clock 63.98KHz
v: height 1024 start 1025 end 1028 total 1066 clock 60.02Hz
1024x768 (0x5b) 65.000MHz -HSync -VSync
h: width 1024 start 1048 end 1184 total 1344 skew 0 clock 48.36KHz
v: height 768 start 771 end 777 total 806 clock 60.00Hz
800x600 (0x62) 40.000MHz +HSync +VSync
h: width 800 start 840 end 968 total 1056 skew 0 clock 37.88KHz
v: height 600 start 601 end 605 total 628 clock 60.32Hz
800x600 (0x63) 36.000MHz +HSync +VSync
h: width 800 start 824 end 896 total 1024 skew 0 clock 35.16KHz
v: height 600 start 601 end 603 total 625 clock 56.25Hz
640x480 (0x6b) 25.175MHz -HSync -VSync
h: width 640 start 656 end 752 total 800 skew 0 clock 31.47KHz
v: height 480 start 490 end 492 total 525 clock 59.94Hz
1920x1080 (0x73) 148.500MHz +HSync +VSync
h: width 1920 start 2008 end 2052 total 2200 skew 0 clock 67.50KHz
v: height 1080 start 1084 end 1089 total 1125 clock 60.00Hz
1600x900 (0x74) 108.000MHz +HSync +VSync
h: width 1600 start 1624 end 1704 total 1800 skew 0 clock 60.00KHz
v: height 900 start 901 end 904 total 1000 clock 60.00Hz
1280x1024 (0x75) 135.000MHz +HSync +VSync
h: width 1280 start 1296 end 1440 total 1688 skew 0 clock 79.98KHz
v: height 1024 start 1025 end 1028 total 1066 clock 75.02Hz
1152x864 (0x76) 108.000MHz +HSync +VSync
h: width 1152 start 1216 end 1344 total 1600 skew 0 clock 67.50KHz
v: height 864 start 865 end 868 total 900 clock 75.00Hz
1024x768 (0x77) 78.750MHz +HSync +VSync
h: width 1024 start 1040 end 1136 total 1312 skew 0 clock 60.02KHz
v: height 768 start 769 end 772 total 800 clock 75.03Hz
800x600 (0x78) 49.500MHz +HSync +VSync
h: width 800 start 816 end 896 total 1056 skew 0 clock 46.88KHz
v: height 600 start 601 end 604 total 625 clock 75.00Hz
640x480 (0x79) 31.500MHz -HSync -VSync
h: width 640 start 656 end 720 total 840 skew 0 clock 37.50KHz
v: height 480 start 481 end 484 total 500 clock 75.00Hz
720x400 (0x7a) 28.320MHz -HSync +VSync
h: width 720 start 738 end 846 total 900 skew 0 clock 31.47KHz
v: height 400 start 412 end 414 total 449 clock 70.08Hz
Now you can adjust your system to make use of the new screen(s).
UPDATE! – I have actually been able to get a usable DisplayLink screen by setting the nice level of the DisplayLinkManager process to “-10”.
newferno ~ # renice -n -10 -p `pidof DisplayLinkManager`
Enjoy