knight187
August 17th, 2009, 12:00 AM
Ubuntu (Jaunty) and Multiseat
Let me start with saying that I know their are some really good articles and posts out there about how to setup multiseat. I am writing this because I couldn't find one that was a complete setup that included compiz desktop effects, sound and bug fixes for each terminal. It has taken me days to workout all the bugs and get a proper working desktop for 2 users off 1 PC, this includes sound for each users and desktop effects.
My config uses Jaunty (32bit), 2 x Nvidia GPU's, 2 sound cards, Intel E8500 CPU (3.16GHz), 4GiB RAM.
Most of my information I used to get my multiseat setup running was from this page (https://help.ubuntu.com/community/MultiseatX) but this config did not allow for either of the desktops to have Compiz desktop effects because it sets up a X session across both the GPU's and then sets up 2 nested X sessions inside that "dummy" X session. I have no idea why the author of this page has decided to do this, but I'm no expert so maybe there's a reason that I haven't found yet or maybe its how older versions of X needed to be setup for multiseat. Anyway to get compiz running on multiseat you just need to take out the dummy X session and just setup 2 independient X sessions each with its own keyboard and mouse. This is my xorg.conf
Section "ServerLayout"
Identifier "Seat.0"
Screen "Screen.0.0"
InputDevice "Keyboard.0" "CoreKeyboard"
InputDevice "Mouse.0" "CorePointer"
EndSection
Section "ServerLayout"
Identifier "Seat.1"
Screen "Screen.1.0"
InputDevice "Keyboard.1" "CoreKeyboard"
InputDevice "Mouse.1" "CorePointer"
EndSection
Section "Extensions"
Option "RENDER" "True"
Option "DAMAGE" "True"
Option "Composite" "True"
EndSection
Section "Module"
Load "dbe"
Load "glx"
SubSection "extmod"
Option "omit xfree86-dga"
EndSubSection
EndSection
Section "ServerFlags"
Option "RandR" "True"
Option "AllowDeactivateGrabs" "true"
Option "DontZap" "True"
Option "DefaultServerLayout" "seat0"
Option "AllowMouseOpenFail" "true"
Option "AutoAddDevices" "false"
Option "AutoEnableDevices" "false"
EndSection
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "void"
EndSection
Section "InputDevice"
Identifier "Generic Mouse"
Driver "void"
EndSection
Section "InputDevice"
Identifier "Keyboard.0"
Driver "evdev"
Option "Name" "Microsft Microsoft Wireless Desktop Receiver 3.1A"
Option "Device" "/dev/input/by-id/usb-Microsft_Microsoft_Wireless_Desktop_Receiver_3.1A-event-kbd"
EndSection
Section "InputDevice"
Identifier "Mouse.0"
Driver "evdev"
Option "Name" "Microsft Microsoft Wireless Desktop Receiver 3.1A"
Option "Device" "/dev/input/by-id/usb-Microsft_Microsoft_Wireless_Desktop_Receiver_3.1A-event-joystick"
EndSection
Section "InputDevice"
Identifier "Keyboard.1"
Driver "evdev"
Option "Name" "Microsoft Natural� Ergonomic Keyboard 4000"
Option "Device" "/dev/input/by-id/usb-Microsoft_Natural__Ergonomic_Keyboard_4000-event-kbd"
EndSection
Section "InputDevice"
Identifier "Mouse.1"
Driver "evdev"
Option "Name" "Microsoft Microsoft 5-Button Mouse with IntelliEye(TM)"
Option "Device" "/dev/input/by-id/usb-Microsoft_Microsoft_5-Button_Mouse_with_IntelliEye_TM_-event-mouse"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Samsung SyncMaster"
HorizSync 30.0 - 81.0
VertRefresh 56.0 - 75.0
EndSection
Section "Monitor"
Identifier "Monitor1"
VendorName "Unknown"
ModelName "Philips 190SW"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 76.0
EndSection
Section "Device"
Identifier "GeForce 8800 Ultra"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 8800 Ultra"
BusID "PCI:3:0:0"
EndSection
Section "Device"
Identifier "GeForce 9400 GT"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 9400 GT"
BusID "PCI:4:0:0"
EndSection
Section "Screen"
Identifier "Screen.0.0"
Device "GeForce 8800 Ultra"
Monitor "Monitor0"
DefaultDepth 24
Option "Coolbits" "1"
Option "NoLogo" "True"
Option "CursorShadow" "True"
Option "RenderAccel" "True"
Option "AddARGBGLXVisuals" "True"
Option "ConnectToAcpid" "False"
Option "TwinView" "0"
Option "metamodes" "nvidia-auto-select +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "Screen.1.0"
Device "GeForce 9400 GT"
Monitor "Monitor1"
DefaultDepth 24
Option "Coolbits" "1"
Option "NoLogo" "True"
Option "CursorShadow" "True"
Option "RenderAccel" "True"
Option "AddARGBGLXVisuals" "True"
Option "ConnectToAcpid" "False"
Option "TwinView" "0"
Option "metamodes" "nvidia-auto-select +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection
As you can see from the xorg.conf I have 2 server layouts each with a GPU, monitor, keyboard and mouse. It really is that easy..... The final thing you have to do to get your base multiseat setup working is modify your /etc/gdm/gdm.conf-custom. This is mine
[daemon]
VTAllocation=false
[security]
[xdmcp]
[gui]
[greeter]
[chooser]
[debug]
[servers]
0=Seat0
1=Seat1
[server-Seat0]
name=Seat 0 server
command=/usr/bin/X -br -audit 0 -layout Seat.0 -sharevts -novtswitch vt09
flexible=false
[server-Seat1]
name=Seat 1 server
command=/usr/bin/X -br -audit 0 -layout Seat.1 -sharevts -novtswitch vt09
flexible=false
Once you have done this you can reboot and you should have a working multiseat setup with compiz desktop effects. So now moving onto sound. To get the sound to work for each workstation I installed a second sound card and speakers and to control where the sound would play for each desktop I installed "padevchooser" (Pulse Audio Device Chooser) once this package is installed and running goto the Preferences and choose start application at login. Then goto Volume control, output devices, right click on the device you want from this terminal and select default. Do the same for the second terminal, logout and back in and you should have your own sound playing from your own speakers on your seat of the multiseat computer.
Now you sould have a working multiseat setup with Compiz and Sound on each Seat.
After setting up multiseat I had some keyboard problems on both seats eg. extra buttons on the top of the keyboards were now not working and the Left and Down arrow had lost there repeat function to fix the repeat problem I had to run this command from the terminal
xset r 113; xset r 116
I just put this in a file called keyboard-fix.sh and added it to my start up applications so it would run at login. don't forget to chmod +x it so it can execute. To fix the extra keyboard buttons I had to select my keyboard model from the Layout Tab of the system -> Preferences -> keyboard application. Now my keyboard works perfectly but unfortunately the keyboard on the other seat on my multiseat system is a "Microsoft Natural Ergonomic Keyboard 4000" and there is no selection for this keyboard on the keyboard application so I still cant get the extra buttons working on this keyboard but there must be a way because when I use this keyboard on a standard install of Jaunty all the functions on the keyboard seem to work fine. If anyone out there has a solution for this keyboard I would be keen to here it.
Anyway, Cheers all and good luck, feel free to contact me if you have any issues setting any of this up I am happy to help.
Note: you can even run network games on each seat against each other. Now that's cool....
EDIT: I found a solution to my Microsoft 4000 Keyboard, apparently this keyboard is 2 devices in one, 1 device is the normal keys and the second device is the extra keys (http://www.gentoo-wiki.info/HOWTO_Microsoft_Natural_Ergonomic_Keyboard_4000)
Let me start with saying that I know their are some really good articles and posts out there about how to setup multiseat. I am writing this because I couldn't find one that was a complete setup that included compiz desktop effects, sound and bug fixes for each terminal. It has taken me days to workout all the bugs and get a proper working desktop for 2 users off 1 PC, this includes sound for each users and desktop effects.
My config uses Jaunty (32bit), 2 x Nvidia GPU's, 2 sound cards, Intel E8500 CPU (3.16GHz), 4GiB RAM.
Most of my information I used to get my multiseat setup running was from this page (https://help.ubuntu.com/community/MultiseatX) but this config did not allow for either of the desktops to have Compiz desktop effects because it sets up a X session across both the GPU's and then sets up 2 nested X sessions inside that "dummy" X session. I have no idea why the author of this page has decided to do this, but I'm no expert so maybe there's a reason that I haven't found yet or maybe its how older versions of X needed to be setup for multiseat. Anyway to get compiz running on multiseat you just need to take out the dummy X session and just setup 2 independient X sessions each with its own keyboard and mouse. This is my xorg.conf
Section "ServerLayout"
Identifier "Seat.0"
Screen "Screen.0.0"
InputDevice "Keyboard.0" "CoreKeyboard"
InputDevice "Mouse.0" "CorePointer"
EndSection
Section "ServerLayout"
Identifier "Seat.1"
Screen "Screen.1.0"
InputDevice "Keyboard.1" "CoreKeyboard"
InputDevice "Mouse.1" "CorePointer"
EndSection
Section "Extensions"
Option "RENDER" "True"
Option "DAMAGE" "True"
Option "Composite" "True"
EndSection
Section "Module"
Load "dbe"
Load "glx"
SubSection "extmod"
Option "omit xfree86-dga"
EndSubSection
EndSection
Section "ServerFlags"
Option "RandR" "True"
Option "AllowDeactivateGrabs" "true"
Option "DontZap" "True"
Option "DefaultServerLayout" "seat0"
Option "AllowMouseOpenFail" "true"
Option "AutoAddDevices" "false"
Option "AutoEnableDevices" "false"
EndSection
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "void"
EndSection
Section "InputDevice"
Identifier "Generic Mouse"
Driver "void"
EndSection
Section "InputDevice"
Identifier "Keyboard.0"
Driver "evdev"
Option "Name" "Microsft Microsoft Wireless Desktop Receiver 3.1A"
Option "Device" "/dev/input/by-id/usb-Microsft_Microsoft_Wireless_Desktop_Receiver_3.1A-event-kbd"
EndSection
Section "InputDevice"
Identifier "Mouse.0"
Driver "evdev"
Option "Name" "Microsft Microsoft Wireless Desktop Receiver 3.1A"
Option "Device" "/dev/input/by-id/usb-Microsft_Microsoft_Wireless_Desktop_Receiver_3.1A-event-joystick"
EndSection
Section "InputDevice"
Identifier "Keyboard.1"
Driver "evdev"
Option "Name" "Microsoft Natural� Ergonomic Keyboard 4000"
Option "Device" "/dev/input/by-id/usb-Microsoft_Natural__Ergonomic_Keyboard_4000-event-kbd"
EndSection
Section "InputDevice"
Identifier "Mouse.1"
Driver "evdev"
Option "Name" "Microsoft Microsoft 5-Button Mouse with IntelliEye(TM)"
Option "Device" "/dev/input/by-id/usb-Microsoft_Microsoft_5-Button_Mouse_with_IntelliEye_TM_-event-mouse"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Samsung SyncMaster"
HorizSync 30.0 - 81.0
VertRefresh 56.0 - 75.0
EndSection
Section "Monitor"
Identifier "Monitor1"
VendorName "Unknown"
ModelName "Philips 190SW"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 76.0
EndSection
Section "Device"
Identifier "GeForce 8800 Ultra"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 8800 Ultra"
BusID "PCI:3:0:0"
EndSection
Section "Device"
Identifier "GeForce 9400 GT"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 9400 GT"
BusID "PCI:4:0:0"
EndSection
Section "Screen"
Identifier "Screen.0.0"
Device "GeForce 8800 Ultra"
Monitor "Monitor0"
DefaultDepth 24
Option "Coolbits" "1"
Option "NoLogo" "True"
Option "CursorShadow" "True"
Option "RenderAccel" "True"
Option "AddARGBGLXVisuals" "True"
Option "ConnectToAcpid" "False"
Option "TwinView" "0"
Option "metamodes" "nvidia-auto-select +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "Screen.1.0"
Device "GeForce 9400 GT"
Monitor "Monitor1"
DefaultDepth 24
Option "Coolbits" "1"
Option "NoLogo" "True"
Option "CursorShadow" "True"
Option "RenderAccel" "True"
Option "AddARGBGLXVisuals" "True"
Option "ConnectToAcpid" "False"
Option "TwinView" "0"
Option "metamodes" "nvidia-auto-select +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection
As you can see from the xorg.conf I have 2 server layouts each with a GPU, monitor, keyboard and mouse. It really is that easy..... The final thing you have to do to get your base multiseat setup working is modify your /etc/gdm/gdm.conf-custom. This is mine
[daemon]
VTAllocation=false
[security]
[xdmcp]
[gui]
[greeter]
[chooser]
[debug]
[servers]
0=Seat0
1=Seat1
[server-Seat0]
name=Seat 0 server
command=/usr/bin/X -br -audit 0 -layout Seat.0 -sharevts -novtswitch vt09
flexible=false
[server-Seat1]
name=Seat 1 server
command=/usr/bin/X -br -audit 0 -layout Seat.1 -sharevts -novtswitch vt09
flexible=false
Once you have done this you can reboot and you should have a working multiseat setup with compiz desktop effects. So now moving onto sound. To get the sound to work for each workstation I installed a second sound card and speakers and to control where the sound would play for each desktop I installed "padevchooser" (Pulse Audio Device Chooser) once this package is installed and running goto the Preferences and choose start application at login. Then goto Volume control, output devices, right click on the device you want from this terminal and select default. Do the same for the second terminal, logout and back in and you should have your own sound playing from your own speakers on your seat of the multiseat computer.
Now you sould have a working multiseat setup with Compiz and Sound on each Seat.
After setting up multiseat I had some keyboard problems on both seats eg. extra buttons on the top of the keyboards were now not working and the Left and Down arrow had lost there repeat function to fix the repeat problem I had to run this command from the terminal
xset r 113; xset r 116
I just put this in a file called keyboard-fix.sh and added it to my start up applications so it would run at login. don't forget to chmod +x it so it can execute. To fix the extra keyboard buttons I had to select my keyboard model from the Layout Tab of the system -> Preferences -> keyboard application. Now my keyboard works perfectly but unfortunately the keyboard on the other seat on my multiseat system is a "Microsoft Natural Ergonomic Keyboard 4000" and there is no selection for this keyboard on the keyboard application so I still cant get the extra buttons working on this keyboard but there must be a way because when I use this keyboard on a standard install of Jaunty all the functions on the keyboard seem to work fine. If anyone out there has a solution for this keyboard I would be keen to here it.
Anyway, Cheers all and good luck, feel free to contact me if you have any issues setting any of this up I am happy to help.
Note: you can even run network games on each seat against each other. Now that's cool....
EDIT: I found a solution to my Microsoft 4000 Keyboard, apparently this keyboard is 2 devices in one, 1 device is the normal keys and the second device is the extra keys (http://www.gentoo-wiki.info/HOWTO_Microsoft_Natural_Ergonomic_Keyboard_4000)