Thursday, September 07, 2006

Multiseat (III): xorg.conf

(...comes from step II)

Changes on the xorg.conf file

Since the system automatically generated a correct configuration file, this step is not really necessary. Anyway, if you need to obtain information about the bus in which your card is plugged, the lspci command will give you such data.

Obtaining the information for the graphic card.

# lspci | grep VGA
0000:01:00.0 VGA compatible controller: nVidia Corporation NV34 [GeForce FX 5200] (rev a1)


Before making any change, it is advisable to make a backup of the original configuration file. Then edit it using your favorite text editor.

# cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak
# vi /etc/X11/xorg.conf


The next step is the edition of the xorg.conf according to your configuration. In particular, we must create the corresponding device, monitor and screen sections for every seats.

Section "Files"
FontPath "/usr/share/X11/fonts/misc"
# FontPath "/usr/share/X11/fonts/cyrillic"
FontPath "/usr/share/X11/fonts/100dpi/:unscaled"
FontPath "/usr/share/X11/fonts/75dpi/:unscaled"
FontPath "/usr/share/X11/fonts/Type1"
FontPath "/usr/share/X11/fonts/100dpi"
FontPath "/usr/share/X11/fonts/75dpi"
# path to defoma fonts
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection

Section "Module"
Load "bitmap"
Load "ddc"
# Load "dri"
Load "extmod"
Load "freetype"
Load "glx"
Load "int10"
Load "type1"
Load "vbe"
EndSection

# ------------------------------------------------------------------------
# Input devices
# ------------------------------------------------------------------------

Section "InputDevice"
Identifier "Keyboard-base"
Driver "kbd"
EndSection

Section "InputDevice"
Identifier "Mouse-base"
Driver "mouse"
Option "Device" "/dev/input/mice"
EndSection

# ------------------------------------------------------------------------
# Dual head system. Notice the two devices sharing the same BusID
# ------------------------------------------------------------------------

Section "Device"
Identifier "Card0.0" # CRT-0 (VGA output)
Driver "nvidia"
VendorName "nVidia Corporation"
BoardName "NV34 [GeForce FX 5200]"
BusID "PCI:1:0:0"
Screen 0
Option "NoLogo"
EndSection

Section "Device"
Identifier "Card0.1" # CRT-1 (Analog-DVI, DFP-0 : Digital-DVI)
Driver "nvidia"
VendorName "nVidia Corporation"
BoardName "NV34 [GeForce FX 5200]"
BusID "PCI:1:0:0"
Screen 1
Option NoLogo"
EndSection

# ------------------------------------------------------------------------
# Monitor section: Most of the parameters are optional
# ------------------------------------------------------------------------

Section "Monitor"
Identifier "Monitor0"
VendorName "HP"
ModelName "HP D8904"
Option "DPMS"
HorizSync 30-70
VertRefresh 50-160
DisplaySize 320 240 # CRT 17" (81 DPI @ 1024x768)
EndSection

Section "Monitor"
Identifier "Monitor1"
VendorName "Compaq"
ModelName "Compaq 5500"
HorizSync 30-54
VertRefresh 50-120
DisplaySize 280 210 # CRT 15" (72 DPI @ 800x600)
Option "DPMS"
EndSection

# ------------------------------------------------------------------------
# Screen section: Pairing video cards and monitors
# ------------------------------------------------------------------------

Section "Screen"
Identifier "Screen0"
Device "Card0.0"
Monitor "Monitor0"
SubSection "Display"
Depth 24
Modes "1024x768" "800x600" "640x480"
EndSubSection
EndSection

Section "Screen"
Identifier "Screen1"
Device "Card0.1"
Monitor "Monitor1"
SubSection "Display"
Depth 24
Modes "800x600" "640x480"
EndSubSection
EndSection

# ------------------------------------------------------------------------
# Layout section
# ------------------------------------------------------------------------

Section "ServerLayout"
Identifier "Multihead"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" LeftOf "Screen0"
InputDevice "Keyboard-base" "CoreKeyboard"
InputDevice "Mouse-base" "CorePointer"
EndSection

# ------------------------------------------------------------------------
# Additional sections
# ------------------------------------------------------------------------

# Xephyr can not use DRI, so it is not enabled
# Section "DRI"
# Mode 0666
# EndSection

Section "ServerFlags"
# Xinerama does not affect this configuration, so it is not enabled
# Option "Xinerama" "on"

# Even if mouse detection fails, X will start
Option "AllowMouseOpenFail" "yes"

# VT switching is disabled
Option "DontVTSwitch" "yes"

# X restart (Ctrl+Alt+Backspace) is disabled
Option "DontZap" "yes"
EndSection




If everything was OK, when you log into your computer, you should have either two independent adjacent desktops (Xinerama disabled) or a bigger desktop extended through the two monitors (Xinerama enabled)

Do not worry in this moment about configuring your keyboard layout. This X configuration will not be seen by the final user of the system. The only goal in this moment is to define properly your video hardware in order to have the two monitors working simultaneously.

Take into account that the login greeter will appear in only one of the screens, but as soon as you log into the system you will see your desktop along the two screens.

The next step is to create a true multiseat computer. We will use Xephyr: A software able to act as an intermediary between the input devices and the underlying X.

(Continues on step IV...)

8 comments:

bert said...

Help!, the two monitors are already running but the problem is i can't adjust the resolution of one the the monitor its default is 640x480., i've already tried adding defaultDepth 24 and remove the other resolution in the screen section leaving only "1024x768". i've also added DisplaySize 320 240 at the monitor section. by the way i'm using fx5500 dvi+svideo+vga with both 17" monitor

bert said...

the solution for the problem above regarding screen resolution is to adjust the default setup use
sudo dpkg-reconfigure xserver-xorg

Frederik said...

Hello,

I want to make a Six-user multiseat. Everything works perfect to 5 user (5 seats), but the 6 seats doesn't work. It gives a Xepher fault.

How many screens can one xorg make ?
How many Xepher versions can be run ?

Can that doesn't work with more than 5 seats ?

Anonymous said...

Hi!

Thanks for this great tutorial!

I'm planing to build a multiseat machine for my wife and me. Right now we're using two separate machines which is a great waste of energy and hardware.

Your tutorial fits perfectly to my plans: the VGA-card you're using (GeForce 5200) is one of the cards that's available to me so I don't have to buy a new one. Great! :-)

But before I try I'd like to ask a few questions:

1.
This VGA card has one VGA connector and one DVI connector. As far as I know the DVI connector is a digital output and is ment to be used to connect to an LCD monitor. On the picture of the back of your machine there's some kind of adapter plugged between the DVI connector and the VGA cable that leads to the analog CRT.

So it seems that it is possible to use an analog monitor on a DVI connector if you just use an adaptor that makes the analog connector fit to the DVI connector.

Am I right there or do you need special monitors that can handle the digital signals provided by the DVI output from the VGA card?

2.
What will happen if I later switch to LCD monitors? Will the configuration work after I just change the setting for the timings and the xmodes?

I know that in this case only one of the LCDs can be connected digitaly using the DVI output while the other one will have to be connected to the analog output. As long as the loss in picture quality isn't too much this would be acceptable.

3.
What about 3D-applications that heavily use OpenGL, e.g. games? Will they run at all using Xephyr?

If they will run, it would be acceptable if they just slow down the second terminal. In that case I just will have to play when my wife doesn't need the machine. That's ok.

But if they won't run at all this would be bad.

4.
What about appplications run with Wine, including games? Will they work with Xephyr?


Thanks in advance for your answers and your time.


Wolfgang.

josean said...

1.- The DVI connector can output digital signals and analog ones. You can connect an analog VGA monitor using an adapter.

2.- You can switch to LCD monitors. All of them have analog inputs, and high end ones have DVI inputs. Jus run 'X -configure' to identify them and to obtain their working frequencies.

3.- Bad news: 3D support is very limited. You will have to test your particular application to see if it is going to work.

4.- Some of them will run, some others will not. As in (3) you will have to test every particular application.

Anonymous said...

3d doesn't work at all, For multiseat with 3d support you must do it in an other way:

http://blog.chris.tylers.info/index.php?/archives/14-Multiseat-X-Under-X11R6.97.0.html

But they are problems with dual-head vga cards, you can only use 1 head.

dup said...

- Someone says that you can compile Xephyr with glx support, but where can I find a uncompiled version off Xephyr ?

- Amsn crashed allways, it restart the seat. I have seen that everyone has this problem. I want amsn for a librarie multiseat, the peoples want a look-a-like off microsoft msn, otherwise they don't understand it. How can I fix it ?
No I work with gaim, but that not a good look-a-like off microsoft msn.

Thanks a lot for information.

Ahuma said...

could someone point me towards the kind of hardware to use e.g.usb mouse,keyboard and headphone. how do you get to use all this at a go for each of the seat you've created, i know one can use kvm but what type that has both slot for usb mouse,keyboard and music jack?

thanks