[Libdlo] Tips for setting up displaylink with Xinerama
Christoph Rissner
c.r at visotech.at
Mon Jan 11 04:57:46 PST 2010
Hi,
> Are you saying you had the 2 nvidia screens + 1 displaylink screen setup
> working in the past? This is the sort of setup I'm interested in
> obtaining (triple head). Would you mind posting more on this and/or your
> aforementioned patches?
Thats still my current setup. My nvidia card is a little old:
# lspci
01:00.0 VGA compatible controller: nVidia Corporation NV37GL [Quadro
PCI-E Series] (rev a2)
So I'm stuck with nvidia drivers from the 173.xx series.
I started with udlfb and xf86-driver-displaylink by Roberto (see
http://libdlo.freedesktop.org/wiki/xf86-driver-displaylink) using xorg
1.6. In the last couple of days I tried the udlfb version from
plugable.com (http://git.plugable.com/webdav/udlfb) but this still needs
the EDID patch.
I had no issues building both, but to get X running I had to patch udlfb
(for reasons yet unknown EDID queries do not work on my system).
X crashes complaining about the EDID version 0:
...
(EE) DL(1): Unknown EDID version 0
...
Since I have 3 identical monitors (Samsung SyncMaster 940T) I used
nvidia-settings to capture EDID data and converted them to hex (I think
I wrote a python script, not sure about this), than patched udlfb.h
replacing dlfb_get_edid() with a hardcoded version (see attached
udlfb_hardcoded_edid.patch).
I played around with xorg.conf (it's attached) to get the most out of it:
- extended desktop
- hardware acceleration
My first attempt was to use nvidias TwinView feature + xinerama, but
then I got a single screen spanning across 2 monitors attached to the
nvidia card, plus another screen on the displaylink card. I found this
is pretty annoying. I use e17 and have a centered shelf on the bottom of
each screen, which was then positioned via 2 monitors. Also maximised
windows covered 2 monitors ...
Note: e17 has a -fake-xinerama-screen option, I used that for some time.
Unfortunately I can't remember where I found out about libxinerama and
its problems with TwinView, but I found a simple patch sufficient where
I hardcode the xinerama configuration (see
face-xinerama.hardcoded.patch, this is for libxinerama 1.0.3).
I tried to make this more configurable (parsing some environment
variable or reading a configuration file) but had no success there,
thats why the "parseFXI()" function does not actually parse something.
Thats how I did it. Of course I'm not satisfied with the hardcoded
stuff, but I assume I have to live with this for some time, at least for
libxinerama.
Aside of that, I am pretty happy with this setup.
Another note:
I also tried to use fbdev driver instead of displaylink but this doesn't
work in my setup, X bails out with:
...
Fatal server error:
Cannot run in framebuffer mode. Please specify busIDs for all
framebuffer devices
...
I don't know yet whether I cannot run fbdev together with nvidia or I
just have to specify a BusID for the displaylink device, and for the
latter: How do I determine a BusID for a USB device?
Finally, there are 2 more things I would like to try/solve:
* I don't know whether this will work with xorg 1.7, but I plan to
upgrade in the next couple of weeks.
* I read about libxcb as replacement for Xlib, and I think that would
also replace libxinerama (at least "awesome" WM uses libxcb) but I don't
know what it would mean to patch that.
Hope that helps,
Christoph
More information about the Libdlo
mailing list