PDA

View Full Version : [ubuntu] Multi-seat setup: Error with Input Devices



ignisuti
December 10th, 2009, 06:22 PM
I'm trying to setup my first multi-seating PC using Ubuntu 9.10. I'm using a Nvidia Geforce 9400 video card along with the Nvidia Settings driver.

I've gotten the video to output to two seperate X screens (mostly automatically done for me with the Nvidia software). However, my input devices are all tied to screen0! That is with the following strange exception:
Right after I bootup, Both keyboards appear to control screen1. However, they quickly loose control of screen1 and permanently gain control of screen0 when I press the WindowsKey & E OR click the mouse button.

Here are the contents of my xorg.conf file:

##### XORG.CONF #####

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

# xorg.conf file based on this tutorial: http://wiki.archlinux.org/index.php/Xorg_multiseat

# Important TV Output Format Info: http://http.download.nvidia.com/solaris/1.0-9629/README/appendix-h.html


Section "Files"
RgbPath "/usr/share/X11/rgb"
FontPath "/usr/share/fonts/misc"
FontPath "/usr/share/fonts/75dpi"
FontPath "/usr/share/fonts/100dpi"
FontPath "/usr/share/fonts/TTF"
FontPath "/usr/share/fonts/Type1"
FontPath "/usr/share/fonts/msfonts"
FontPath "/usr/share/fonts/misc2"
FontPath "/usr/share/fonts/local"
FontPath "/usr/local/share/fonts"
EndSection

Section "Module"
Load "dbe" # Double buffer extension
SubSection "extmod"
Option "omit xfree86-dga" # don't initialize the DGA extension
EndSubSection
Load "type1"
Load "speedo"
Load "freetype"
Load "glx"
EndSection

Section "ServerFlags"
# Disable ctrl alt backspace
# Option "DontZap"
# Xorg will otherwise not start if it can't find a mouse to use.
Option "AllowMouseOpenFail" "true"
# Disable xinerama
Option "Xinerama" "0"
EndSection

### SERVER LAYOUT ###
## A definition of which screen, keyboard and mouse to use.
## seat: A workplace with a physical monitor, physical keyboard and physical mouse.
Section "ServerLayout"
Identifier "seat0"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" RightOf "Screen0"
InputDevice "mouse0" "CorePointer"
InputDevice "keyboard0" "CoreKeyboard"
EndSection
Section "ServerLayout"
Identifier "seat1"
Screen "screen1" 0 0
InputDevice "mouse1" "CorePointer"
InputDevice "keyboard1" "CoreKeyboard"
EndSection

### MICE ###
## Identify mouse #'s "gedit /proc/bus/input/devices".
## OR... Find out which mouse is which: "sudo cat /dev/input/mouse1". If you then move your mouse and you see all weird things happening than that is the mouse you're moving.
## Common Mouse Protocols: http://www.faqs.org/docs/Linux-mini/XFree86-Second-Mouse.html
Section "InputDevice"
Identifier "mouse0"
Driver "mouse"
Option "Protocol" "PS/2"
Option "Device" "/dev/input/mouse1"
EndSection
Section "InputDevice"
Identifier "mouse1"
Driver "mouse"
Option "Protocol" "IMPS/2"
Option "Device" "/dev/input/mouse3"
EndSection

### KEYBOARDS ###
## Identify keyboards Event #'s "gedit /proc/bus/input/devices".
Section "InputDevice"
Identifier "keyboard0"
Driver "evdev"
Option "Device" "/dev/input/event3"
Option "XkbModel" "evdev"
Option "XkbLayout" "be"
EndSection
Section "InputDevice"
Identifier "keyboard1"
Driver "evdev"
Option "Device" "/dev/input/event7"
Option "XkbModel" "evdev"
Option "XkbLayout" "be"
EndSection

### MONITORS ###
## A physical monitor like the one you're now sitting in front of
Section "Monitor"
Identifier "monitor0"
VendorName "Unknown"
ModelName "DELL 1901FP"
HorizSync 30.0 - 80.0
VertRefresh 56.0 - 76.0
Option "dpms"
EndSection
Section "Monitor"
Identifier "monitor1"
VendorName "Unknown"
ModelName "DELL 1901FP"
HorizSync 30.0 - 80.0
VertRefresh 56.0 - 76.0
Option "dpms"
EndSection

### GRAPHICS CARD ###
## Run "lspci" in Terminal to find Graphics card PCI location. NOTE: Convert from HEX to DECIMAL
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 9400 GT"
BusID "PCI:1:0:0"
Screen 0
EndSection
Section "Device"
Identifier "Device1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 9400 GT"
BusID "PCI:1:0:0"
Screen 1
EndSection

### SCREENS ###
## A screen is something Xorg can display its stuff on. A screen has a monitor and a graphics card assigned to it
Section "Screen"
Identifier "screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "DPI" "100x100"
Option "TwinView" "0"
Option "metamodes" "DFP: 1280x1024 +0+0; DFP: 1024x768 +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "screen1"
Device "Device1"
Monitor "Monitor1"
DefaultDepth 24
Option "DPI" "100x100"
Option "TwinView" "0"
Option "metamodes" "CRT: nvidia-auto-select +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection

This is my first experience playing with X. So, most of this file was created based on my interpretations of the online tutorials that I've read.

ignisuti
December 10th, 2009, 06:25 PM
Also, I read the following steps on one of Chris Tyler's pages (http://blog.chris.tylers.info/index.php?/archives/14-Multiseat-X-Under-X11R6.97.0.html):

Code:

0=Standard0
1=Standard1
...

- Add these sections:
[server-Standard0]
name=Standard server
command=/usr/X11R6/bin/X0 -novtswitch -sharevts -layout seat0
flexible=false

[server-Standard1]
name=Standard server
command=/usr/X11R6/bin/X1 -novtswitch -sharevts -layout seat1
flexible=false

I updated my gdm.conf file with this code, but don't think it's quite right for my situation. Since I'm using Ubuntu 9.10, I'm guessing I'm using the latest X.Org release (X11R7.5). However, I don't see an X11R7.5 folder in the /usr folder. What do I need to do?

olithered
December 10th, 2009, 10:54 PM
You need to add the following to your xorg.conf:
====
Section "ServerFlags"
Option "AIGLX" "on"
Option "AutoAddDevices" "false"
Option "AutoEnableDevices" "false"
EndSection
====

ignisuti
December 11th, 2009, 05:21 PM
You need to add the following to your xorg.conf:
====
Section "ServerFlags"
Option "AIGLX" "on"
Option "AutoAddDevices" "false"
Option "AutoEnableDevices" "false"
EndSection
====

This change killed the mice altogether...

ignisuti
December 12th, 2009, 05:37 AM
I had been messing with tons of settings and decided to start over with a clean slate. Here is my current xorg.conf file:


##### XORG.CONF #####
## xorg.conf file based on this tutorial: http://wiki.archlinux.org/index.php/Xorg_multiseat

Section "Module"
Load "dbe" # Double buffer extension

SubSection "extmod"
Option "omit xfree86-dga" # don't initialize the DGA extension
EndSubSection

Load "type1"
Load "speedo"
Load "freetype"
Load "glx"
EndSection

Section "Files"
RgbPath "/usr/share/X11/rgb"

FontPath "/usr/share/fonts/misc"
FontPath "/usr/share/fonts/75dpi"
FontPath "/usr/share/fonts/100dpi"
FontPath "/usr/share/fonts/TTF"
FontPath "/usr/share/fonts/Type1"
FontPath "/usr/share/fonts/msfonts"
FontPath "/usr/share/fonts/misc2"
FontPath "/usr/share/fonts/local"
FontPath "/usr/local/share/fonts"
EndSection

Section "ServerFlags"
# Disable ctrl alt backspace
# Option "DontZap"

Option "AIGLX" "on"
Option "AutoXAddDevices" "false"
Option "AutoEnableDevices" "false"

# Xorg will otherwise not start if it can't find a mouse to use.
Option "AllowMouseOpenFail" "true"

# Disable xinerama
Option "Xinerama" "0"
EndSection

### MICE ###
## Identify mouse #'s "gedit /proc/bus/input/devices".
## OR... Find out which mouse is which: "sudo cat /dev/input/mouse1". If you then move your mouse and you see all weird things happening than that is the mouse you're moving.
## Common Mouse Protocols: http://www.faqs.org/docs/Linux-mini/XFree86-Second-Mouse.html
Section "InputDevice"
Identifier "mouse0"
Driver "vmmouse"
Option "CorePointer"
Option "Protocol" "PS/2"
Option "Device" "/dev/input/mouse3"
Option "Buttons" "5"
Option "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
Identifier "mouse1"
Driver "vmmouse"
Option "CorePointer"
Option "Protocol" "IMPS/2"
Option "Device" "/dev/input/mouse1"
Option "Buttons" "5"
Option "ZAxisMapping" "4 5"
EndSection

### KEYBOARDS ###
## Identify keyboards Event #'s "gedit /proc/bus/input/devices".
Section "InputDevice"
Identifier "keyboard0"
Driver "evdev"
Option "Device" "/dev/input/event3"
Option "XkbModel" "evdev"
Option "XkbLayout" "be"
EndSection
Section "InputDevice"
Identifier "keyboard1"
Driver "evdev"
Option "Device" "/dev/input/event5"
Option "XkbModel" "evdev"
Option "XkbLayout" "be"
EndSection

### GRAPHICS CARD ###
## Run "lspci" in Terminal to find Graphics card PCI location. NOTE: Convert from HEX to DECIMAL
Section "Device"
Identifier "nvidia0"
Driver "nvidia"
Option "NoLogo" "1" # Remove nvidia branding at startup
BusId "PCI:1:0:0"
EndSection

### DEVICES ###
Section "Device"
Identifier "nvidia0"
Driver "nvidia"
Option "NoLogo" "1" # Remove nvidia branding at startup
BusID "PCI:1:0:0"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 9400 GT"
BusID "PCI:1:0:0"
Screen 0
EndSection
Section "Device"
Identifier "Device1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 9400 GT"
BusID "PCI:1:0:0"
Screen 1
EndSection

### SCREENS ###
## A screen is something Xorg can display its stuff on. A screen has a monitor and a graphics card assigned to it
Section "Screen"
Identifier "screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "DPI" "100x100"
Option "TwinView" "0"
Option "metamodes" "DFP: 1280x1024 +0+0; DFP: 1024x768 +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "screen1"
Device "Device1"
Monitor "Monitor1"
DefaultDepth 24
Option "DPI" "100x100"
Option "TwinView" "0"
Option "metamodes" "CRT: nvidia-auto-select +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection

### MONITORS ###
## A physical monitor like the one you're now sitting in front of
Section "Monitor"
Identifier "monitor0"
VendorName "Unknown"
ModelName "DELL 1901FP"
HorizSync 30.0 - 80.0
VertRefresh 56.0 - 76.0
Option "dpms"
EndSection

Section "Monitor"
Identifier "monitor1"
VendorName "Unknown"
ModelName "DELL 1901FP"
HorizSync 30.0 - 80.0
VertRefresh 56.0 - 76.0
Option "dpms"
EndSection

### SERVER LAYOUT ###
#A definition of which screen, keyboard and mouse to use.
Section "ServerLayout"
Identifier "seat0"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" RightOf "Screen0"
InputDevice "mouse0" "CorePointer"
InputDevice "keyboard0" "CoreKeyboard"
EndSection

Section "ServerLayout"
Identifier "seat1"
Screen "screen1" 0 0
InputDevice "mouse1" "CorePointer"
InputDevice "keyboard1" "CoreKeyboard"
EndSection


Here is a summary of my current situation:
Only one mouse & keyboard pair work on seat 0. The other pair doesn't work at all. Seat 1 appears to loading fine. I just have no way to control it... Please help. I must be fairly close to my goal.

olithered
December 12th, 2009, 12:06 PM
Maybe your /dev/input devices have changed (eg: after a reboot)?

You can use the ones under these paths for a more permanent config:
/dev/input/by-id/
/dev/input/by-path/

ignisuti
December 12th, 2009, 08:46 PM
Thanks for the suggestion. But, I've verified the mouse and keyboard #'s are not changing after reboot. They have been very consistent.

I've since tried to download and install the Userful Screen multiplier app. I thought maybe I could peak at how they setup my xorg.conf file. However, their software appears to only setup one seat!

Very frustrating to be so close, yet still unable to reach my goal. I was here months ago and gave up and only recently decided to give it another go.

ignisuti
March 1st, 2010, 04:29 AM
Bump...

It's been a few months. I gave up again, but am once again making another go at it. This time, I figure I'll just use Userful's Multiplier software to automatically set it up for me. Works great except that last remaining problem is that I can't get my Nvidia 9400 GT video card to output a component signal from the 7-pin connector.

Any suggestions?