The new kernel module is called udldrmfb (CONFIG_DRM_UDL), make sure to disable the old fb driver, CONFIG_FB_UDL. With this in place, your kernel should recognize the displaylink device when plugged in.
Now we need the X server to actually do something with the device.
$ xrandr --listproviders Providers: number : 2 Provider 0: id: 0x54 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 2 outputs: 3 associated providers: 0 name:radeon Provider 1: id: 0x3cc cap: 0x2, Sink Output crtcs: 1 outputs: 1 associated providers: 0 name:modesetting
Here, the first provider is my radeon card, the second one is the displaylink device using the xf86-video-modesetting driver. This will drive the displaylink.
Here is the output of xrandr before we add the displaylink driver (using xrandr):
$ xrandr Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192 LVDS connected (normal left inverted right x axis y axis) 1366x768 60.0 + 1280x720 59.9 1152x768 59.8 1024x768 59.9 800x600 59.9 848x480 59.7 720x480 59.7 640x480 59.4 HDMI-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 509mm x 286mm 1920x1080 60.0*+ 1280x1024 75.0 60.0 1152x864 75.0 1024x768 75.1 60.0 800x600 75.0 60.3 640x480 75.0 60.0 720x400 70.1 VGA-0 disconnected (normal left inverted right x axis y axis)
Adding the displaylink display is done with this command:
$ xrandr --setprovideroutputsource 1 0
Now, the output is as follows (DVI-0 shows up):
$ xrandr Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192 LVDS connected (normal left inverted right x axis y axis) 1366x768 60.0 + 1280x720 59.9 1152x768 59.8 1024x768 59.9 800x600 59.9 848x480 59.7 720x480 59.7 640x480 59.4 HDMI-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 509mm x 286mm 1920x1080 60.0*+ 1280x1024 75.0 60.0 1152x864 75.0 1024x768 75.1 60.0 800x600 75.0 60.3 640x480 75.0 60.0 720x400 70.1 VGA-0 disconnected (normal left inverted right x axis y axis) DVI-0 connected (normal left inverted right x axis y axis) 1280x1024 60.0 + 75.0 1280x960 60.0 1152x864 75.0 1024x768 75.1 70.1 60.0 832x624 74.6 800x600 72.2 75.0 60.3 56.2 640x480 75.0 72.8 66.7 60.0 720x400 70.1 1280x1024 (0x5f) 108.0MHz h: width 1280 start 1328 end 1440 total 1688 skew 0 clock 64.0KHz v: height 1024 start 1025 end 1028 total 1066 clock 60.0Hz 1280x1024 (0x5e) 135.0MHz h: width 1280 start 1296 end 1440 total 1688 skew 0 clock 80.0KHz v: height 1024 start 1025 end 1028 total 1066 clock 75.0Hz 1152x864 (0x60) 108.0MHz h: width 1152 start 1216 end 1344 total 1600 skew 0 clock 67.5KHz v: height 864 start 865 end 868 total 900 clock 75.0Hz 1024x768 (0x61) 78.8MHz h: width 1024 start 1040 end 1136 total 1312 skew 0 clock 60.1KHz v: height 768 start 769 end 772 total 800 clock 75.1Hz 1024x768 (0x62) 65.0MHz h: width 1024 start 1048 end 1184 total 1344 skew 0 clock 48.4KHz v: height 768 start 771 end 777 total 806 clock 60.0Hz 800x600 (0x63) 49.5MHz h: width 800 start 816 end 896 total 1056 skew 0 clock 46.9KHz v: height 600 start 601 end 604 total 625 clock 75.0Hz 800x600 (0x64) 40.0MHz h: width 800 start 840 end 968 total 1056 skew 0 clock 37.9KHz v: height 600 start 601 end 605 total 628 clock 60.3Hz 640x480 (0x65) 31.5MHz h: width 640 start 656 end 720 total 840 skew 0 clock 37.5KHz v: height 480 start 481 end 484 total 500 clock 75.0Hz 640x480 (0x66) 25.2MHz h: width 640 start 656 end 752 total 800 skew 0 clock 31.5KHz v: height 480 start 490 end 492 total 525 clock 60.0Hz 720x400 (0x67) 28.3MHz h: width 720 start 738 end 846 total 900 skew 0 clock 31.5KHz v: height 400 start 412 end 414 total 449 clock 70.1Hz
Enabling the display is now as simple as:
$ xrandr --output DVI-0 --auto --right-of HDMI-0
There are some issues with the setup. Most notably, all the screens become slow (not just the USB displaylink one). I have not been able to work around this. It seems that all the rendering is done on the USB device and then passed back to my radeon driver, while it should be the other way around.
Here's an excerpt from my question and description on IRC in the #xorg channel on Freenode (as of yet no answer):
15:11 < Wizzup> Hi, sorry to just join and immediately start asking questions. I am playing around with a USB 2.0 DisplayLink device. (USB->DVI). ``It works''. Kernel 3.12.6 and xorg 1.14. I used xrandr with --listproviders and --setprovideroutputsource to set the usb card as provider for output sources. Then enable it via xrandr, voila. 15:12 < Wizzup> However, *all* the screens get jerky redrawing. From the USB-driven screen I would expect this, but not on my other screens. The other screens are driven by the radeon driver. 15:12 < Wizzup> I can understand that I may be doing something wrong with the --setprovideroutputsource, and that I may have to tell the driver to offload everything to radeon (that would be nice), but I cannot get that to work 15:13 < Wizzup> In particular, the USB device does not support Sink Offload, if I am correct 15:14 < Wizzup> It's still okay for presentations, but it would be nice if the other screens would be usable, too. ;-) 15:25 < Wizzup> For completeness, the usb device uses the modesetting driver and supports only "Sink Output" 15:25 < Wizzup> So I guess I'd need it to have Sink Offload capabilities before this can work? 15:26 < Wizzup> This guy has the same problem as I have (all displays lag), but he seems a bit less clueful as to the whole: http://forums.opensuse.org/english/get-technical-help-here/hardware/480963-usb-dvi-displaylink-opensuse-12-2-kde-xrandr-krandr-4.html 15:26 < Wizzup> No solution there, fwiw
Update 2015/06/21: Likely this has a problem in the radeon driver, since until now DisplayLink could not even be used as a master device: http://www.phoronix.com/scan.php?page=news_item&px=Modesetting-Output-Master
I did not yet get the driver to work properly on a hardened kernel, I can attach a display, but the X server gets killed by PaX after several seconds. I could try making X excempt from PaX, but right now it is not enough of an issue as I am not using the hardened kernel by default - yet.