Thursday, July 16, 2009

Multiseat with nVidia card

A new configuration of the dual seat system has been tested with a different hardware.

Computer: HP dc7700 ultra-slim 1GB RAM, 250GB HD

The computer comes with an integrated Intel graphics card:
$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 82Q963/Q965 Integrated Graphics Controller (rev 02)


Unfortunately, this card has only one output, so we had to replace the original card. We added another one, in particular one suggested by HP (we are limited since this is a small form factor PC with important limitations in the physical size of PCI cards).

We added a PCIe nVidia card with dual output:
$ lspci | grep VGA
01:00.0 VGA compatible controller: nVidia Corporation Quadro NVS 290 (rev a1)


First of all, we encountered some problems:
Once installed the new card, we were unable to boot the live version of Ubuntu 9.04. We had to revert back to the intel card, install the Ubuntu distribution, then plug the nVidia card and finally boot the computer with the system already installed. Doing the installation in this way everything worked properly and we were able to continue with the setup of the dual seat system.

In order to setup the nVidia cards, we choose to use the proprietary drivers (nvidia-glx-180 and two dependent packages: nvidia-180-libvdpau, nvidia-180-modaliases) and we also installed the package nvidia-settings

The tool nvidia-settings is useful to generate the proper xorg.conf. We need this file to tell the system that we are going to have a multihead setup.



In our particular case, this is the xorg.conf generated file

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 1.0 (buildd@palmer) Sun Feb 1 20:21:04 UTC 2009

Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "Module"
Load "dbe"
Load "extmod"
Load "type1"
Load "freetype"
Load "glx"
EndSection

Section "ServerFlags"
Option "Xinerama" "0"
EndSection

Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection

Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor0"
VendorName "Unknown"
ModelName "LG L1953HM"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 75.0
Option "DPMS"
EndSection

Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "Quadro NVS 290"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "TwinView" "1"
Option "TwinViewXineramaInfoOrder" "CRT-0"
Option "metamodes" "CRT-0: 1280x1024 +0+0, CRT-1: 1280x1024_60 +0+1024"
SubSection "Display"
Depth 24
EndSection

Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "Quadro NVS 290"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "TwinView" "1"
Option "TwinViewXineramaInfoOrder" "CRT-0"
Option "metamodes" "CRT-0: 1280x1024 +0+0, CRT-1: 1280x1024_60 +0+1024"
SubSection "Display"
Depth 24
EndSubSection
EndSection


Having done these changes, the rest of the setup is just the same as with the ATI graphics card.
The seats now do support glx functions (glxgears, screensavers, and so)