This answer pertains to Ubuntu 11.04 with an ATI radeon graphics card, and the Diamond DisplayLink BVU-195 USB display adapter.
I finally got it working for three monitors. I have an ATI radeon card with 1 DVI and 2 DisplayPort outputs (but you can only use two at once) and 1 Diamond DisplayLink BVU 195 USB adaptor.
You have to install the displaylink driver. Then you have to write your own xorg.conf file.
sudo apt-get install xserver-xorg-video-displaylink
Here are three crucial points.
I want to be able to move windows between displays. That means that I cannot use xrandr. Instead, i have to enable something called Xinerama. If you use the default "xrandr" option, then only the mouse cursor can move between displays, and programs cannot. Not very usuable! So Xinerama is a necessity.
When configuring the ATI radeon driver, the display is stuck as cloned across the two monitors that it uses, unless you specify the "ZaphodHeads" option. Valid options on my card are "DVI-0" and "DisplayPort-0" or "DisplayPort-1".
You have to configure all monitors as 16 bit. If you stick with the default 24 bit, the X server crashes.
I only get blank screens if the USB monitor is plugged in when I boot. I have to boot with it unplugged, plug it in, then log in only when the USB screen turns green.
Here is my xorg.conf, which I placed in /etc/X11/xorg.conf. The USB displaylink monitor is Screen0, and the DVI monitor connected to the ATI card is Screen1, and the DisplayPort monitor also connected to the ATI card via an adaptor is Screen2.
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" RightOf "Screen0"
Screen 2 "Screen2" RightOf "Screen1"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
Option "Xinerama" "on"
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 "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
FontPath "built-ins"
EndSection
Section "Module"
Load "dri"
Load "record"
Load "extmod"
Load "dri2"
Load "dbe"
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 "Monitor"
Identifier "Monitor1"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
EndSection
Section "Monitor"
Identifier "Monitor2"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
EndSection
Section "Device"
Identifier "DisplayLinkDevice"
driver "displaylink"
Option "fbdev" "/dev/fb1"
EndSection
Section "Device"
Identifier "Card0"
Driver "radeon"
BusID "PCI:1:0:0"
Screen 0
Option "ZaphodHeads" "DVI-0"
EndSection
Section "Device"
Identifier "Card1"
Driver "radeon"
BusID "PCI:1:0:0"
Screen 1
Option "ZaphodHeads" "DisplayPort-1"
EndSection
Section "Screen"
Identifier "Screen0"
Device "DisplayLinkDevice"
Monitor "Monitor2"
DefaultDepth 16
EndSection
Section "Screen"
Identifier "Screen1"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 16
EndSection
Section "Screen"
Identifier "Screen2"
Device "Card1"
Monitor "Monitor1"
DefaultDepth 16
EndSection