Multiseat with 1 graphics card

Associate
Joined
4 Jul 2006
Posts
211
I've got a question that I'd like to up out there but first some background.

So I've got one of those HP Microservers that a lot of people here have got. It works absolutely fine for what I got it for but I want to try something pretty cool with it.

I've been thinking about setting up multiseat working with it (I just got an ATI 5450 just for this) which will start up 2 xservers at start up. One X server running off the monitor and the second off my TV. Once booted up the session with the TV will automatically start up XBMC and all interaction will be via a remote.

So my question is, has anyone ever managed to setup a multiseat system with just one graphics card? and am I asking too much from a tiny machine?

any thoughts please :)
 
Iirc I got it working with an 8800gt, two independent monitors each with their own keyboard. Didn't get two mice working though, unfortunately lost interest after a day or so trying to make sense of xorg.conf.

I'm fairly sure all there is to it is writing a custom xorg configuration file, associating a keyboard & mouse with each screen that way. I couldn't find any decent documentation beyond the man page though, and I'm not absolutely certain that part of the solution wasn't using two cards.

Good luck
 
I spent quiet abit of time trying to get this working on ubuntu 11.04 but after abit more research, it looks as though multiseat with Gnome 2.20+ is broken.

I'm going to remove the default version of Gnome and install Gnome 2.20.

If anyones interested, I've been using this as a basis and I'm going to start using this instead
 
Last edited:
I've decided not to go through with the downgrade route as it looked far to destructive. So I've done a bit more research and it seems what I want is more common than I thought.

There are a few posts over at the XBMC forums that have people starting up XBMC in the second monitor and using wmctrl and screenswitch to release the mouse and keyboard from the second monitor.
 
I'm running 2 openbox sessions on two x-servers on *two* graphic cards (4850 and 5770) which are driving 4 monitors - two Dells in portrait and two sony's in landscape.

I am using ATI fglrx!

state of my .xinitrc
#first x
DISPLAY=:0.0 exec ...
#second x
DISPLAY=:0.1 exec ...

i.e. each server is addressed as described


Xorg.conf

Code:
#===================== 24" Portrait Dell's
#===================== 17" Sony Landscape

Section "ServerLayout"
	Identifier     "aticonfig Layout"
	Screen      0  "aticonfig-Screen[0]-0" 0 0
	Screen         "aticonfig-Screen[1]-1" 2400 0
EndSection

Section "Module"
EndSection

Section "ServerFlags"
	Option	    "Xinerama" "off"
EndSection

Section "Monitor"
	Identifier   "0-DFP2"
	Option	    "VendorName" "ATI Proprietary Driver"
	Option	    "ModelName" "Dell U2410"
	Option	    "DPMS" "true"
	Option	    "PreferredMode" "1920x1200"
	Option	    "TargetRefresh" "60"
	Option	    "Position" "1200 0"
	Option	    "Rotate" "left"
	Option	    "Disable" "false"
EndSection

Section "Monitor"
	Identifier   "0-DFP3"
	Option	    "VendorName" "ATI Proprietary Driver"
	Option	    "ModelName" "Dell U2410"
	Option	    "DPMS" "true"
	Option	    "PreferredMode" "1920x1200"
	Option	    "TargetRefresh" "60"
	Option	    "Position" "0 0"
	Option	    "Rotate" "left"
	Option	    "Disable" "false"
EndSection

Section "Monitor"
	Identifier   "1-DFP1"
	Option	    "VendorName" "ATI Proprietary Driver"
	Option	    "ModelName" "Generic Autodetecting Monitor"
	Option	    "DPMS" "true"
	Option	    "PreferredMode" "1280x1024"
	Option	    "TargetRefresh" "60"
	Option	    "Position" "0 0"
	Option	    "Rotate" "normal"
	Option	    "Disable" "false"
EndSection

Section "Monitor"
	Identifier   "1-DFP2"
	Option	    "VendorName" "ATI Proprietary Driver"
	Option	    "ModelName" "Generic Autodetecting Monitor"
	Option	    "DPMS" "true"
	Option	    "PreferredMode" "1280x1024"
	Option	    "TargetRefresh" "60"
	Option	    "Position" "1280 0"
	Option	    "Rotate" "normal"
	Option	    "Disable" "false"
EndSection

Section "Device"
	Identifier  "aticonfig-Device[0]-0"
	Driver      "fglrx"
	Option	    "Monitor-DFP2" "0-DFP2"
	Option	    "Monitor-DFP3" "0-DFP3"
	Option      "SWCursor" "true"
	BusID       "PCI:2:0:0"
EndSection

Section "Device"
	Identifier  "aticonfig-Device[1]-1"
	Driver      "fglrx"
	Option	    "Monitor-DFP1" "1-DFP1"
	Option	    "Monitor-DFP2" "1-DFP2"
	Option      "SWCursor" "true"
	BusID       "PCI:1:0:0"
EndSection

Section "Screen"
	Identifier "aticonfig-Screen[0]-0"
	Device     "aticonfig-Device[0]-0"
	DefaultDepth     24
	SubSection "Display"
		Viewport   0 0
		Virtual   2400 1920
		Depth     24
	EndSubSection
EndSection

Section "Screen"
	Identifier "aticonfig-Screen[1]-1"
	Device     "aticonfig-Device[1]-1"
	DefaultDepth     24
	SubSection "Display"
		Viewport   0 0
		Virtual   2560 2560
		Depth     24
	EndSubSection
EndSection

If you are using fglrx then your setup should not be too different from this, i.e. you wouldn't have "PCI:2:0:0" nor a secondary device nor twin monitor setup. the key is the server layout and your screen definition.

Particulars: X.Org X Server 1.10.2, Gentoo, Openbox, fglrx 11.6

amdcccle - can be useful if your running fglrx, helped me figure out why I "Virtual 2560 1024" didn't work for the twin 17 inch bug? don't know but it works.
 
@inSilica

hi, thanks for your xorg.conf :) I had a conf file that was pretty similar to yours with some extra sections regarding input. but when i ran it, the second screen was just empty. Maybe that had something to do with not changing my .xinitrc file
 
hmmm maybe your xorg is correct ...

which distro are you running? trouble is if its something like ubuntu, out of the box will probably run on DISPLAY=:0.0 --- only, since your not multiheading, extended or duplicating, i.e. your spawning a second x instance, you would expect second screen to be empty.

... having anything > 1 x server is kinda exotic ...., so you have to tell the os what to do

xinitrc is used at bootup, i.e. a place to have programs start on reboot, depending on your configuration that is, some configurations will not execute .xinitrc which is typically in ~/


are you using consolekit?

open up terminal and try:

Code:
DISPLAY=:0.1 exec ck-launch-session gnome-session

or no consolekit

Code:
DISPLAY=:0.1 exec gnome-session

this should spawn a second gnome instance? I think... sorry been a while since I used gnome.

if it works, then great, you need to use something like xinitrc to get it to work on login

p.s. also if you don't know about "xrandr", it basically allows you to set configurations in x without actually restarting x.
 
Last edited:
Hi inSilica

Yes im running on ubuntu (64bit 11.04) with a few things installed but its still pretty much a bog standard install right now.

this is my xorg.conf file right now.

Code:
Section "ServerLayout"
        Identifier     "amdcccle Layout0"
        Screen       0 "amdcccle-Screen[1]-0" 1920 0
    InputDevice "kbd_0"
    InputDevice "mouse_0"
    Option      "AutoEnableDevices"     "false"
    Option      "AutoAddDevices"        "false"
    Option      "AllowEmptyInput"       "true"
EndSection

Section "ServerLayout"
    Identifier     "amdcccle Layout1"
        Screen      1 "amdcccle-Screen[1]-1" 0 0
    InputDevice "kbd_1"
    InputDevice "mouse_1"
    Option      "AutoEnableDevices"     "false"
    Option      "AutoAddDevices"        "false"
    Option      "AllowEmptyInput"       "true"
EndSection

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

Section "ServerFlags"
        Option      "Xinerama" "off"
EndSection


Section "InputDevice"
    Identifier     "kbd_0"
    Driver "evdev"
    Option      "Device"        "/dev/input/by-path/pci-0000:00:12.0-usb-0:5:1.0-event-kbd"
    Option "XkbRules" "xorg"
    Option "XkbModel" "105"
    Option "XkbLayout" "uk"
    Option  "Protocol"      "Standard"

EndSection

Section "InputDevice"
    Identifier     "mouse_0"
    Driver         "evdev"
    Option      "Device"        "/dev/input/by-path/pci-0000:00:12.0-usb-0:5:1.1-event-mouse"
    Option      "GrabDevice"    "on"
EndSection


Section "InputDevice"
    Identifier     "kbd_1"
    Driver "evdev"
    Option      "Device"        "/dev/input/by-path/pci-0000:00:12.0-usb-0:3:1.0-event-kbd"
    Option "XkbRules" "xorg"
    Option "XkbModel" "105"
    Option "XkbLayout" "uk"
    Option  "Protocol"      "Standard"
EndSection

Section "InputDevice"
    Identifier     "mouse_1"
    Driver         "evdev"
    Option      "Device"        "/dev/input/by-path/pci-0000:00:12.0-usb-0:3:1.1-event-mouse"
    Option      "GrabDevice"    "on"
EndSection


Section "Monitor"
        Identifier   "0-DFP1"
        Option      "VendorName" "ATI Proprietary Driver"
        Option      "ModelName" "Generic Autodetecting Monitor"
        Option      "DPMS" "true"
        Option      "PreferredMode" "1920x1080"
        Option      "TargetRefresh" "50"
        #Option     "Position" "0 0"
        Option      "Rotate" "normal"
        Option      "Disable" "false"
EndSection

Section "Monitor"
        Identifier   "0-CRT2"
        Option      "VendorName" "ATI Proprietary Driver"
        Option      "ModelName" "Generic Autodetecting Monitor"
        Option      "DPMS" "true"
        Option      "PreferredMode" "1680x1050"
        Option      "TargetRefresh" "60"
        #Option     "Position" "0 0"
        Option      "Rotate" "normal"
        Option      "Disable" "false"
EndSection

Section "Device"
        Identifier  "amdcccle-Device[1]-0"
        Driver      "fglrx"
        #Option     "Monitor-CRT2" "0-CRT2"
        BusID       "PCI:1:0:0"
EndSection

Section "Device"
        Identifier  "amdcccle-Device[1]-1"
        Driver      "fglrx"
        #Option     "Monitor-DFP1" "0-DFP1"
        BusID       "PCI:1:0:0"
        Screen      1
EndSection

Section "Screen"
        Identifier "amdcccle-Screen[1]-0"
        Device     "amdcccle-Device[1]-0"
    Monitor        "0-CRT2"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     24
        EndSubSection
EndSection

Section "Screen"
        Identifier "amdcccle-Screen[1]-1"
        Device     "amdcccle-Device[1]-1"
    Monitor        "0-DFP1"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     24
        EndSubSection
EndSection

I've just ssh'd into the machine as for some stupid reason my keyboard has now stopped working on it.

this config gives me a cloned display on my second screen, which isn't what i want.

regarding the two lines in your previous post

Code:
DISPLAY=:0.1 exec ck-launch-session gnome-session
DISPLAY=:0.1 exec gnome-session

they dont do anything. the terminal just disappears when executing them

this is quite annoying now and i might just revert back to my previous setup. It shouldn't be so difficult to do this nowadays. :(
 
Last edited:
well if your cloning it's using DISPLAY=:0.0 for both, i.e. if you move your mouse on monitor means the same movement is seen on the clone/TV. The normal behaviour is if you have DISPLAY=:0.1 running your display device, prior to configuration, if it supports DPMS, will come out of standby and wait to be drawn on if you like, not sure how TV would handle DPMS flags.

ok Im going to have a go. first of all backup your xorg.conf in /etc/X11/xorg.conf

I'm trying to make your monitor DISPLAY=:0.0 and your TV DISPLAY=:0.1. The monitor should appear left of the TV, i.e. mouse crosses over on right edge of monitor. I'm no X-guru but I will try to follow my xorg.conf

NB. I'm not assuming anything here, I will try to be thorough, please do not be offended if I describe trivial steps :). Backup your X config so that you can recover if all hell breaks loose. I make no guarantees that this works

i.e.

Code:
sudo mv xorg.conf.18.07.2011 xorg.conf

modify xorg.conf to reflect the following, I've dropped loads of stuff here, but it's just for testing (your refresh rates don't looks right, find out what they should be, 60 monitor , 60 TV?):

Code:
Section "ServerLayout"
        Identifier     "amdcccle Layout"
        Screen      0  "amdcccle-Screen[1]-1" 0 0
	Screen         "amdcccle-Screen[1]-0" 1920 0
EndSection

Section "ServerFlags"
        Option      "Xinerama" "off"
EndSection

Section "Monitor"
        Identifier   "0-DFP1"
        Option      "VendorName" "ATI Proprietary Driver"
        Option      "ModelName" "Generic Autodetecting Monitor"
        Option      "DPMS" "true"
        Option      "PreferredMode" "1920x1080"
        Option      "TargetRefresh" "60"
        #Option     "Position" "0 0"
        Option      "Rotate" "normal"
        Option      "Disable" "false"
EndSection

Section "Monitor"
        Identifier   "0-CRT2"
        Option      "VendorName" "ATI Proprietary Driver"
        Option      "ModelName" "Generic Autodetecting Monitor"
        Option      "DPMS" "true"
        Option      "PreferredMode" "1680x1050"
        Option      "TargetRefresh" "60"
        #Option     "Position" "0 0"
        Option      "Rotate" "normal"
        Option      "Disable" "false"
EndSection

Section "Device"
        Identifier  "amdcccle-Device[1]-0"
        Driver      "fglrx"
        Option      "Monitor-CRT2" "0-CRT2"
        BusID       "PCI:1:0:0"
EndSection

Section "Device"
        Identifier  "amdcccle-Device[1]-1"
        Driver      "fglrx"
        Option      "Monitor-DFP1" "0-DFP1"
        BusID       "PCI:1:0:0"
EndSection

Section "Screen"
        Identifier "amdcccle-Screen[1]-0"
        Device     "amdcccle-Device[1]-0"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     24
        EndSubSection
EndSection

Section "Screen"
        Identifier "amdcccle-Screen[1]-1"
        Device     "amdcccle-Device[1]-1"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     24
        EndSubSection
EndSection

drop x (Ctrl + Alt + F2)

login and run:
Code:
startx

should light up gnome/or whatever wm you've configured on the monitor.

if all hell breaks loose, get to the terminal by killing x, if its not dead already and run

Code:
sudo mv xorg.conf xorg.conf.18.07.2011

If you reach this stage then great, your almost there:

running
Code:
DISPLAY=:0.1 exec gnome-session

should instantiate a second gnome session on your TV.

if all is ok, you can go back and add other stuff you want.

Will try to help :). X issues can still cause nightmares! ... and didn't ubuntu get rid of xorg.conf? ;-)
 
Last edited:
Hi inSilica, thanks for all the help.

the conf you you provided looks almost identical to what i get if i were to change the display settings in the catalyst control centre.

after spending way too much time trying to get this to work, i just decided to give up and stick to the wmctrl and switch screen method. its not the way i initially liked it but it works and it was pretty much easy to setup.

thanks for all the help!
 
Back
Top Bottom