From ArchWiki
Revision as of 06:32, 2 June 2013 by Ndt (talk | contribs) (Load the framebuffer device)
Jump to: navigation, search

The following steps are the most recent ones that the DisplayLink support guy was suggesting. I packaged the revisions in AUR, that compiled and worked great so far. According to the Plugable information they should work with almost every DisplayLink (DL-1**) device although they don't suggest using their devices with Linux for production use for now.


Install the packages `udlfb` and `xf86-video-fbdev-for-displaylink`. Remember to remove any of them if already installed. The `xf86-video-fbdev-for-displaylink` is originally a patched `xf86-video-fbdev`, so you need to remove that one. Also keep the order when installing.


These instructions assume that you already have an up and running X server and are simply adding a monitor to your existing setup. You should also have a knowledge of installing from the AUR and an active internet connection.

Load the framebuffer device

You installed the udlfb kernel module, but it has to be loaded in order for the kernel to see the DisplayLink device. When loading make sure that you activate the `fb_defio` flag.

# modprobe udlfb

At this point, if your monitor is connected, it should go from either a black screen or the red-green-blue-checkers test pattern to a solid green screen, indicating the framebuffer is loaded and ready for an application to use it. You should also see a new device in /dev, likely /dev/fb1.

To automatically load it at boot, udlfb and it´s parameters need to be built into mkinitcpio. Therefore create or change the following conf files:

options udlfb fb_defio=1
MODULES="... udlfb ..."

Then, rebuild the kernel image:

# mkinitcpio -p linux

For more information on this, see Mkinitcpio.

Update Xorg.conf

You must update your xorg.conf in order to use your additional display. When using the 710-S I was only able to use it if I set the DisplayLink device as screen0 and my internal display as screen1. I do not know if this is a common problem or just local to my setup.

Add this to the bottom of xorg.conf:

################ DisplayLink Stuff ###################
Section "Device"
       Identifier      "DisplayLinkDevice"
       Driver          "fbdev"
       BusID           "USB"               # needed to use multiple DisplayLink devices 
       Option          "fbdev" "/dev/fb0"  # change to whatever device you want to use
#      Option          "rotate" "CCW"      # uncomment for rotation

Section "Monitor"
       Identifier      "DisplayLinkMonitor"

Section "Screen"
       Identifier      "DisplayLinkScreen"
       Device          "DisplayLinkDevice"
       Monitor         "DisplayLinkMonitor"
       DefaultDepth    16

Then you can adjust your server layout to your needs. Well, almost.

Then edit your server layout to look something like this

Screen		0	"DisplayLinkScreen"
Screen		1	"Internal" RightOf "DisplayLinkScreen"
Option		"Xinerama" "on"

Change Internal to whatever your main display is called. Reboot your system and the two should be linked together!


X crashes or keeps blank

If X crashes, or nothing shows up when you boot, try to start X only using the external display

Screen		0	"DisplayLinkScreen"
#Screen		1	"Internal" RightOf "DisplayLinkScreen"
#Option		"Xinerama" "on"

You may need to set your screen depths to be the same. Make sure that in both Screen sections it is set to 16. (This is because xinerama require that the screens use the same bitdepth)

DefaultDepth	16

With fbdev this is not true anymore, because fbdev provides virtual 24bit support. Just use everything with DefaultDepth 24.

Cannot start in framebuffer mode. Please specify busIDs for all framebuffer devices

I have not yet been able to correct this issue. It seems like it's an incompatibility between fbdev and nvidia driver.