Well, it’s time to see if I can get my DisplayLink device working on an old dying laptop using Ubuntu 9.10 (32 bit) – so here goes.
Install Ubuntu 9.10 (32 bit). Once finally installed and booted lets drop to a console (via Applications > Accessories > Terminal) and do some stuff.
Start by updating the package list:
sudo apt-get update
Then download and install any package & system updates:
sudo apt-get upgrade sudo apt-get dist-upgrade
Then download some packages we’ll need later:
sudo apt-get install build-essential xorg-dev libusb-dev git-core
Reboot (via console or other means):
sudo shutdown -r now
Once the system is back up drop to a console and get the following package (I’m saving it to the Desktop):
cd Desktop wget http://projects.unbit.it/downloads/udlfb-0.2.3_and_xf86-video-displaylink-0.3.tar.gz
NOTE: this package takes FOREVER to download.
Extract the package and delete the udlfb directory it contains (we’ll get a newer udlfb library in a bit):
tar xzvf udlfb-0.2.3_and_xf86-video-displaylink-0.3.tar.gz rm -rf udlfb
Get the latest udlfb and build it:
git clone http://git.plugable.com/webdav/udlfb cd udlfb make sudo make install
Compile the DisplayLink X driver:
cd ../xf86-video-displaylink ./configure && make sudo make install sudo shutdown -r now
You should now be able to plug in your DisplayLink device and see the green screen.
Now, here’s where things may get a bit difficult – setting up an xorg.conf file. Modern distros don’t ship with xorg.conf’s anymore so it’s up to the end user to create one when one is needed. Also, since this laptop doesn’t have an ATI or NVIDIA card there’s no proprietary driver to install (that would then automatically set up an xorg.conf file for me). I’m creating a xorg.conf file based on this previous DisplayLink blog entry.
Some things to note:
- Which /dev/fb* entry maps to the DisplayLink device. You can see this by unplugging the device, doing an ‘ls‘ in the /dev directory, then plugging back in the device and doing another ‘ls‘ and seeing which entry was just added.
- The ‘BusId‘ of the non-DisplayLink video card. This can be obtained through lspci and is needed in the xorg.conf file.
- Be sure to modify /etc/gdm/Init/Default to contain the following blurb right after the definition of the gdmwhich() function (this is taken from Patrick Gilmore’s blog):
XRANDR=`gdmwhich xrandr` if [ "x$XRANDR" != "x" ] ; then $XRANDR -o 0 fi
Once you do/know these things you can start tailoring your xorg.conf. Creating the xorg.conf file is above the scope of this blog and highly dependent on your own computers’ specific hardware. However, here is how mine turned out:
# xorg.conf (X.Org X Window System server configuration file)
############ Original Video Settings ###########
Section "Device"
Identifier "Configured Video Device"
Driver "intel"
BusID "PCI:0:2:0"
EndSection
Section "Monitor"
Identifier "Configured Monitor"
EndSection
Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Configured Video Device"
SubSection "Display"
Depth 24
Modes "1280x800"
EndSubSection
EndSection
#################################################
Section "ServerLayout"
Identifier "Server Layout"
Screen 0 "DisplayLinkScreen" 0 0
Screen 1 "Default Screen" LeftOf "DisplayLinkScreen"
Option "Xinerama" "off"
EndSection
#################################################
Section "Files"
ModulePath "/usr/lib/xorg/modules"
ModulePath "/usr/local/lib/xorg/modules"
ModulePath "/usr/local/lib/xorg/modules/drivers"
EndSection
############### DisplayLink Stuff ###############
Section "Device"
Identifier "DisplayLinkDevice"
driver "displaylink"
Option "fbdev" "/dev/fb1"
EndSection
Section "Monitor"
Identifier "DisplayLinkMonitor"
EndSection
Section "Screen"
Identifier "DisplayLinkScreen"
Device "DisplayLinkDevice"
Monitor "DisplayLinkMonitor"
SubSection "Display"
Depth 16
Modes "1280x1024"
EndSubSection
EndSection
Some pictures: