and in the last couple months finally got all the needed parts together.
The main system specs are:
- Motherboard:
Asus M4A78 Plus
- CPU:
AMD Athlon II X2 250 Regor 3.0Ghz AM3 65W Dual Core
- RAM:
2 x Crucial 1GB PC2-5300
- PSU:
Antec earthwatts EA500
- Hard Disk:
Seagate Barracuda 7200 RPM 1.5TB SATA 3.0Gb/s
- Video Card 1:
Asus GeForce 210 512MB DDR2
- Video Card 2:
XFX GeForce 7600 GT 256MB GDDR3
- Sound Card 1:
On board Intel HDA
- Sound Card 2:
Turtle Beach Santa Cruz
- Digital Tuner 1 & 2:
SiliconDust HDHomeRun (dual digital tuners - raw digital mpeg feeds)
- Analog Tuner 1 & 2:
Hauppauge WinTV PVR-500 (dual analog tuners - onboard mpeg encoding)
- Analog Tuner 3:
LeadTek Winfast TV2000 XP Deluxe
- Remote:
Snapstream Firefly PC Remote (compiled lirc with atilibusb driver)
- Operating System:
Funtoo Linux (Kernel 2.6.31-gentoo-r6)
- Window Manager:
Fluxbox (autostarts Mythfrontend on launch)
The system is running a multiseat X configuration.
On boot, two separate X sessions are launched as separate users and each launches an independent Mythfrontend session.
The HDHomeRun's tuners and the PVR-500's tuners are used by MythTV.
Since both of these cards are feeding mpeg streams, recording puts very little load on the box.
Analog Tuner 3 is used by Zoneminder most of the time, and is also used for recording VHS tapes, playing with other video input devices, etc.
The system is working nicely overall.
I don't have the cat6 lines run yet, so for now I just drag them and the extender from my room to the tv across the floor when I want to use it.
The remote works nicely. It will pick up through most of the living room and parts of the dining room and kitchen. The box says it works up to 30 feet.
I will briefly cover the main system setup and how it was accomplished.
First, here is the basic information for each session:
X session 1 is tied to the primary video card and the workbench KVM for controlling the system and for using it with a local monitor when it is not connected to the TV.
The video card and audio card are connected to a
DVI + SPDIF to HDMI converter box. This is in turn connected to an
HDMI over Ethernet extender set. Two cat6 lines connect the input end in my room to the output end in the living room, which is then connected to the family TV.
X session 2 is tied to the secondary video card and a 2 port USB KVM connected to the 19" LCD that is used for that X session and for my laptop when connected.
Glitches I've noticed and other notes:
The session on the tv seems to be losing the very top of the screen.
I don't know if this is universal or only in certain places.
It is noticeable when browsing the video library.
The settings for mythgame are NOT per frontend. They are apparently saved as backend settings, since changing the setting on one of my frontends changed it for the other.
I don't know if this applies to frontends on different physical machines.
Gallery does not support storage groups yet like videos does.
This would be nice so you wouldn't have to configure them per-frontend.
Here is how I set everything up:
First the main system configuration:
Run an X session as a user and use mythtv-setup to configure the backend as normal and ensure the basic functions are working.
I setup storage groups for the video stuff since mythvideo has support for them now to avoid having to manually configure it in each frontend.
Run mythfrontend and ensure that all normal functions are working.
Once everything is working in a standard setup, you can move on to configuring multiple frontends as multiple users.
Next the multiple Mythfrontend setup:
Run an X session as each dedicated session user and configure mythfrontend to use a custom name for each of them rather than the machine name and configure each user's mythfrontend appropriately.
One way to start this process quickly is to copy the .mythtv directory from the configured user's home to each of the dedicated users' home directories and chowning it to that user. Then you can edit the .mythtv/mysql.txt and enable the LocalHostName directive and set it to define the custom name for that user.
Alternately you can do this in the mythfrontend configuration.
Configure each dedicated user's mythfrontend session to use the appropriate audio device, lirc device, etc.
My session 1 is set to use the primary audio card and the Firefly remote.
My session 2 is set to use the secondary audio card.
Once you have each user's session configured, launch an X session for each and ensure that the independent frontends are working properly when both are running simultaneously. When you know that everything is working, you can move on to setting up the multiseat configuration.
Now we have the multiseat X Configuration:
/etc/X11/xorg.conf
#########################################################################
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 1.0 (root@vidmaster) Wed Dec 30 22:09:58 EST 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"
Identifier "Keyboard0"
Driver "evdev"
Option "Device" "/dev/input/event1" ### event device according to /proc/bus/input/devices
Option "XkbModel" "evdev"
Option "XkbLayout" "us" ### Language setting
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol"
Option "Device" "/dev/input/mouse1" ### mouse device according to /proc/bus/input/devices
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5" ### Wheel mouse
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor0"
VendorName "Unknown"
ModelName "GATEWAY EV700"
HorizSync 30.0 - 70.0
VertRefresh 50.0 - 120.0
Option "DPMS"
EndSection
Dection "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 210"
BusID "PCI:1:0:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "TwinView" "0"
# Option "metamodes" "nvidia-auto-select +0+0"
Option "metamodes" "1280x1024 +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 1.0 (root@vidmaster) Wed Dec 30 22:09:58 EST 2009
Section "ServerLayout"
Identifier "Layout1"
Screen 1 "Screen1" 0 0
InputDevice "Keyboard1" "CoreKeyboard"
InputDevice "Mouse1" "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"
Identifier "Keyboard1"
Driver "evdev"
Option "Device" "/dev/input/event3" ### event device according to /proc/bus/input/devices
Option "XkbModel" "evdev"
Option "XkbLayout" "us" ### Language setting
EndSection
Section "InputDevice"
Identifier "Mouse1"
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"
Identifier "Keyboard1"
Driver "evdev"
Option "Device" "/dev/input/event3" ### event device according to /proc/bus/input/devices
Option "XkbModel" "evdev"
Option "XkbLayout" "us" ### Language setting
EndSection
Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Protocol"
Option "Device" "/dev/input/mouse2" ### mouse device according to /proc/bus/input/devices
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5" ### Wheel mouse
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor1"
VendorName "Unknown"
ModelName "LCD R912E"
HorizSync 30.0 - 83.0
VertRefresh 55.0 - 75.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 7600 GT"
BusID "PCI:2:0:0"
EndSection
Section "Screen"
Identifier "Screen1"
Device "Device1"
Monitor "Monitor1"
DefaultDepth 24
Option "TwinView" "0"
Option "TwinViewXineramaInfoOrder" "CRT-0"
# Option "metamodes" "1280x1024 +0+0"
# Option "metamodes" "1920x1080 +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection
/etc/inittab
added in the Terminals section
c8:2345:respawn:/sbin/mingetty --autologin tv1 tty8
c9:2345:respawn:/sbin/mingetty --autologin tv tty9
/home/<user>/.bash_profile
user tv (session 1, video card 1)
# .bash_profile
case "`tty`" in
*tty9) /usr/bin/startx -- :1 -novtswitch -sharevts -isolateDevice PCI:1:0:0 -layout layout0; logout ;;
esac
user tv1 (session 2, video card 2)
# .bash_profile
case "`tty`" in
*tty8) /usr/bin/startx -- :0 -novtswitch -sharevts -isolateDevice PCI:2:0:0 -layout layout1; logout ;;
esac
Any questions?
Feel free to drop me a line or post a comment and I'll try to answer.
Mark II