User:Lwoggardner
Lwoggardner (Talk | contribs) (tweaks after upgrading to Ubuntu Karmic) |
Lwoggardner (Talk | contribs) (Update configuration for Zotac ION board) |
||
| Line 11: | Line 11: | ||
* [[MythGallery]] | * [[MythGallery]] | ||
* [[MythVideo]] | * [[MythVideo]] | ||
| − | + | * Suspend + Wake On USB | |
== Backend == | == Backend == | ||
| Line 17: | Line 17: | ||
=== Hardware === | === Hardware === | ||
| − | * | + | * HDDs totalling 1.2Tb |
* Intel S775 Core 2 Q6600 Quad-Core CPU | * Intel S775 Core 2 Q6600 Quad-Core CPU | ||
* Gigabyte S775 GA-G33M-S2 Motherboard | * Gigabyte S775 GA-G33M-S2 Motherboard | ||
| Line 36: | Line 36: | ||
* DVICO used device id 17de:a8a6 for two distinct devices requiring different drivers. Need to set "options cx88xx card=19" in /etc/modprobe.d to force use of Conexant reference drivers. Fortunately the Hauppauge tuner is a USB device so we can override the auto detection rather than patch the v4l dvb drivers to override it. | * DVICO used device id 17de:a8a6 for two distinct devices requiring different drivers. Need to set "options cx88xx card=19" in /etc/modprobe.d to force use of Conexant reference drivers. Fortunately the Hauppauge tuner is a USB device so we can override the auto detection rather than patch the v4l dvb drivers to override it. | ||
| − | == Frontend | + | == Frontend == |
| − | + | == Hardware == | |
| − | * | + | * ZOTAC ionitx-d-e board, 2G memory |
| − | * | + | * Szrealan E-2011 case (tiny!) |
| − | * | + | * External DVD player |
| − | * | + | * 1Tb external e-Sata drive |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
* BenQ PE8700 DLP Projector | * BenQ PE8700 DLP Projector | ||
* Samsung LCD Television | * Samsung LCD Television | ||
* CambridgeAudio AV receiver | * CambridgeAudio AV receiver | ||
| + | * MCE Remote | ||
=== Software === | === Software === | ||
| Line 57: | Line 54: | ||
=== Configuration === | === Configuration === | ||
| − | + | ==== Enable Wake on USB ==== | |
| + | We need to enable USB0 in /proc/acpi/wakeup | ||
| + | |||
| + | Note if USB2 is also enabled, then the board immediately wakes up regardless, unsure if this is due to another USB device | ||
| + | |||
| + | ===== /etc/rc.local ===== | ||
| + | <pre> | ||
| + | /usr/local/bin/set_wakeup.sh | ||
| + | </pre> | ||
| + | |||
| + | ===== /usr/local/bin/set_wakeup.sh ===== | ||
| + | <pre> | ||
| + | #!/bin/sh | ||
| + | |||
| + | #set wake via remote | ||
| + | |||
| + | WAKEUP="" | ||
| + | if [ -f /etc/default/wakeup ] ; then | ||
| + | . /etc/default/wakeup | ||
| + | fi | ||
| + | |||
| + | for device in $WAKEUP | ||
| + | do | ||
| + | enabled=`cat /proc/acpi/wakeup | grep "$device" | awk {'print $3}'` | ||
| + | if [ "$enabled" != "enabled" ] | ||
| + | then | ||
| + | logger -t "wakeup" "Enabling wakeup for $device" | ||
| + | echo "$device" > /proc/acpi/wakeup | ||
| + | fi | ||
| + | enabled=`cat /proc/acpi/wakeup | grep "$device" | awk {'print $3}'` | ||
| + | logger -t "wakeup" "$device $enabled" | ||
| + | |||
| + | done | ||
| + | </pre> | ||
| + | |||
| + | ===== /etc/default/wakeup ===== | ||
| + | <pre> | ||
| + | WAKEUP="USB0" | ||
| + | </pre> | ||
| − | |||
==== Auto-start X Server ==== | ==== Auto-start X Server ==== | ||
| Line 66: | Line 100: | ||
* user .xsession linked to /usr/share/mythbuntu/session.sh so we get the same xfce startup. | * user .xsession linked to /usr/share/mythbuntu/session.sh so we get the same xfce startup. | ||
| − | =====/etc/init/tty7.conf ===== | + | ===== /etc/init/tty7.conf ===== |
<pre> | <pre> | ||
# tty7 - mingetty for MythTv | # tty7 - mingetty for MythTv | ||
| Line 85: | Line 119: | ||
</pre> | </pre> | ||
| − | ===== ~/.profile ===== | + | ===== ~mythtv/.profile ===== |
Appended to detect if we are on tty7, in which case we start-up X with an optional layout specified in ~/.mythrc | Appended to detect if we are on tty7, in which case we start-up X with an optional layout specified in ~/.mythrc | ||
| Line 100: | Line 134: | ||
[ ! -z "$LAYOUT" ] && LAYOUT_SPEC="-layout $LAYOUT" | [ ! -z "$LAYOUT" ] && LAYOUT_SPEC="-layout $LAYOUT" | ||
| − | startx -- $LAYOUT_SPEC | + | startx -- $LAYOUT_SPEC -logverbose 5 |
logout | logout | ||
} | } | ||
| Line 110: | Line 144: | ||
For PE8700 Samsung LCD. See also the tips for the [[NVidiaProprietaryDriver]] | For PE8700 Samsung LCD. See also the tips for the [[NVidiaProprietaryDriver]] | ||
| − | The FX5200 cards were the cause of my DVI problems on my projector. Apparently they | + | The FX5200 cards were the cause of my DVI problems on my projector. Apparently they freak out a PCB component causing the EDID data to become corrupt. |
| − | ( | + | (a Gigabyte card lasted from Aug 2006 to Dec 2007. Fortunately the new nvidia driver allow you to use a CustomEDID to load the data from a file. |
Option ExactModeTimingsDVI is also important for the projector. | Option ExactModeTimingsDVI is also important for the projector. | ||
| Line 119: | Line 153: | ||
There are two layouts, the default uses outputs via VGA to a Samsung LCD television, the second uses DVI to the PE8700 projector. | There are two layouts, the default uses outputs via VGA to a Samsung LCD television, the second uses DVI to the PE8700 projector. | ||
| − | <pre>Section "ServerLayout" | + | <pre> |
| − | Identifier "Main" # | + | Section "ServerLayout" |
| + | Identifier "Main" # Output to Samsung LCD television | ||
| + | #LCD[0] VGA, LCD[1] HDMI | ||
Screen 0 "LCD[0]" 0 0 | Screen 0 "LCD[0]" 0 0 | ||
Option "Xinerama" "off" | Option "Xinerama" "off" | ||
| Line 136: | Line 172: | ||
Section "Device" | Section "Device" | ||
| − | Identifier " | + | Identifier "ION-GPU[0]" |
Driver "nvidia" | Driver "nvidia" | ||
| − | BusID "PCI: | + | BusID "PCI:3:0:0" |
Screen 0 | Screen 0 | ||
| − | Option " | + | EndSection |
| + | |||
| + | Section "Screen" | ||
| + | Identifier "LCD[1] " | ||
| + | Device "ION-GPU[0]" | ||
| + | Monitor "AnyMonitor" | ||
| + | DefaultDepth 24 | ||
| + | Option "UseDisplayDevice" "DFP-1" # HDMI | ||
| + | Option "ConnectedMonitor" "DFP-1" | ||
| + | Option "IgnoreEDID" "on" | ||
| + | SubSection "Display" | ||
| + | Depth 24 | ||
| + | Modes "1360x768" "1280x720" | ||
| + | EndSubSection | ||
EndSection | EndSection | ||
Section "Screen" | Section "Screen" | ||
Identifier "LCD[0]" | Identifier "LCD[0]" | ||
| − | Device " | + | Device "ION-GPU[0]" |
Monitor "AnyMonitor" | Monitor "AnyMonitor" | ||
DefaultDepth 24 | DefaultDepth 24 | ||
| + | Option "ConnectedMonitor" "CRT-1" | ||
Option "UseEDIDDpi" "FALSE" #Computed DPI values not so good for TV display | Option "UseEDIDDpi" "FALSE" #Computed DPI values not so good for TV display | ||
| − | Option "UseDisplayDevice" "CRT" # VGA out | + | Option "UseDisplayDevice" "CRT-1" # VGA out |
SubSection "Display" | SubSection "Display" | ||
Depth 24 | Depth 24 | ||
| Line 158: | Line 208: | ||
Section "Screen" | Section "Screen" | ||
Identifier "Projector[0]" | Identifier "Projector[0]" | ||
| − | Device " | + | Device "ION-GPU[0]" |
Monitor "AnyMonitor" | Monitor "AnyMonitor" | ||
Option "ConnectedMonitor" "DFP" | Option "ConnectedMonitor" "DFP" | ||
| Line 180: | Line 230: | ||
</pre> | </pre> | ||
| − | ==== | + | ===== ~mythtv/.mythtv/session ===== |
| − | + | Start a ruby program that listens to /dev/lircd and manages - | |
| − | + | * mythtv via updating the database + network control port | |
| − | + | * the AV receiver via RS232 - volume/mute, power on/off, input type | |
| + | * alsa via calls to amixer - volume/mute, digital/analog outputs | ||
| + | * suspend on lirc idle or power button | ||
| + | * restart specifying TV or Projector layout | ||
| − | + | <pre> | |
| + | #!/bin/sh | ||
| − | + | #store our dbus session and display where our kill script can pick it up | |
| + | export | egrep "DBUS_SESSION_BUS_ADDRESS|DISPLAY" > ~/.xsession-export | ||
| − | + | #Run unclutter to hide the cursor after resume | |
| − | # | + | unclutter -display $DISPLAY & |
| − | + | ||
| − | + | #run our main lirc control program | |
| − | + | /home/mythtv/bin/audiomodeswitch/main.rb & | |
| − | + | ||
| − | + | ||
| − | + | ||
</pre> | </pre> | ||
| − | ===== ~/ | + | ===== ~mythtv/bin/suspend_mythtv.sh ===== |
| − | + | ||
<pre> | <pre> | ||
| − | + | #!/bin/sh | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | # We use dbus-send because it seems to block until resume which is what we want | |
| − | + | echo "Suspending" | |
| − | + | dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer \ | |
| − | + | org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:2 | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | echo "Resumed" | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
</pre> | </pre> | ||
| − | ===== ~/bin/ | + | ===== ~mythtv/bin/kill_mythtv.sh ===== |
| − | + | Script is called by the ruby program, but also useful to restart from ssh | |
| − | + | ||
<pre> | <pre> | ||
| − | #!/bin/ | + | #!/bin/sh |
| − | + | [ -f $HOME/.xsession-export ] && . $HOME/.xsession-export | |
| − | + | echo "killing mythfrontend" | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
pkill mythfrontend | pkill mythfrontend | ||
| − | xfce4-session-logout | + | pkill unclutter |
| − | + | echo "xfce logout $DISPLAY" | |
| + | xfce4-session-logout --logout --fast | ||
</pre> | </pre> | ||
| − | + | ==== LIRC Remote Control ==== | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | Standard mythbuntu setup for MCE remote. | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
==== Sound ==== | ==== Sound ==== | ||
| − | + | Onboard sound | |
| − | + | ||
| − | + | ||
=====~/.asoundrc===== | =====~/.asoundrc===== | ||
| − | |||
| − | |||
Could probably do better 48/44kHz switching on the analog output between music and video but if that is important we just go digital passthrough and let the receiver do the work. | Could probably do better 48/44kHz switching on the analog output between music and video but if that is important we just go digital passthrough and let the receiver do the work. | ||
| − | In myth config, you can see that default sound device is ALSA:myth-video, the passthrough device is ALSA:myth-passthru, and mythmusic uses ALSA:myth-music | + | In myth config, you can see that default sound device is ALSA:myth-video, the passthrough device is ALSA:myth-passthru, and mythmusic uses ALSA:myth-music. the AC3PassThru and DTSPassThru |
| + | settings are managed by the ruby program | ||
<pre> | <pre> | ||
#First line comment | #First line comment | ||
| + | |||
pcm.myth-music { | pcm.myth-music { | ||
| − | type | + | type copy |
| − | slave.pcm " | + | slave.pcm "default" |
} | } | ||
| Line 330: | Line 308: | ||
pcm.myth-video { | pcm.myth-video { | ||
| − | type | + | type copy |
| − | slave.pcm " | + | slave.pcm "default" |
} | } | ||
| Line 350: | Line 328: | ||
</pre> | </pre> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
=== minimyth.conf === | === minimyth.conf === | ||
| − | TODO - | + | TODO - Works nicely through the WRT310N router etc, but we have a hard drive have decided to stick with Mythbuntu for now. |
== Upgrades == | == Upgrades == | ||
| Line 376: | Line 344: | ||
=== 0.21-fixes === | === 0.21-fixes === | ||
upgrade smooth | upgrade smooth | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
[[Category:User_Systems]] | [[Category:User_Systems]] | ||
Revision as of 10:46, 24 January 2010
I was keeping track of where I was at with Myth on my home wiki, but then figured I might as well share it here!
Contents |
My Setup
MythBuntu 9.10 with separated front-end/backend
- Live TV/TV recording Free to air HD/SD (from Sydney, Australia)
- Multi-rec
- DTS/AC3 passthrough including 5,1 surround digital out
- MythMusic
- MythGallery
- MythVideo
- Suspend + Wake On USB
Backend
Hardware
- HDDs totalling 1.2Tb
- Intel S775 Core 2 Q6600 Quad-Core CPU
- Gigabyte S775 GA-G33M-S2 Motherboard
- 4GB RAM
- DNTVLive LP Tuner
- PCI Hauppauge Nova-T-500 MCE(OEM) Dual DVBT tuner
Software
- Ubuntu 9.10 64bit
- MythWeb on Jetty rather than apache including the WAP version on the BlackBerry!
- Shepherd XMLTV grabber
- NFS server for music/images
- TFTP server for MiniMyth
Configuration
- DVICO used device id 17de:a8a6 for two distinct devices requiring different drivers. Need to set "options cx88xx card=19" in /etc/modprobe.d to force use of Conexant reference drivers. Fortunately the Hauppauge tuner is a USB device so we can override the auto detection rather than patch the v4l dvb drivers to override it.
Frontend
Hardware
- ZOTAC ionitx-d-e board, 2G memory
- Szrealan E-2011 case (tiny!)
- External DVD player
- 1Tb external e-Sata drive
- BenQ PE8700 DLP Projector
- Samsung LCD Television
- CambridgeAudio AV receiver
- MCE Remote
Software
- MythBuntu 9.10 64bit
- Synergy to allow laptop to be the keyboard/mouse.
Configuration
Enable Wake on USB
We need to enable USB0 in /proc/acpi/wakeup
Note if USB2 is also enabled, then the board immediately wakes up regardless, unsure if this is due to another USB device
/etc/rc.local
/usr/local/bin/set_wakeup.sh
/usr/local/bin/set_wakeup.sh
#!/bin/sh
#set wake via remote
WAKEUP=""
if [ -f /etc/default/wakeup ] ; then
. /etc/default/wakeup
fi
for device in $WAKEUP
do
enabled=`cat /proc/acpi/wakeup | grep "$device" | awk {'print $3}'`
if [ "$enabled" != "enabled" ]
then
logger -t "wakeup" "Enabling wakeup for $device"
echo "$device" > /proc/acpi/wakeup
fi
enabled=`cat /proc/acpi/wakeup | grep "$device" | awk {'print $3}'`
logger -t "wakeup" "$device $enabled"
done
/etc/default/wakeup
WAKEUP="USB0"
Auto-start X Server
- disabled GDM in /etc/X11/default-display-manager
- Simple mingetty startup with a tty definition and a startx script in the console
- user .xsession linked to /usr/share/mythbuntu/session.sh so we get the same xfce startup.
/etc/init/tty7.conf
# tty7 - mingetty for MythTv # # This service maintains a mingetty on tty7 from the point the system is # started until it is shut down again. start on runlevel 2 stop on runlevel 0 stop on runlevel 1 stop on runlevel 4 stop on runlevel 5 stop on runlevel 6 respawn exec /sbin/mingetty --autologin=<user> tty7
~mythtv/.profile
Appended to detect if we are on tty7, in which case we start-up X with an optional layout specified in ~/.mythrc
Note that when X is stopped we automatically logout and respawn
start-frontend() {
MYTHRC="$HOME/.mythrc"
if [ -r $MYTHRC ] ; then
. $MYTHRC
fi
LAYOUT_SPEC=
[ ! -z "$LAYOUT" ] && LAYOUT_SPEC="-layout $LAYOUT"
startx -- $LAYOUT_SPEC -logverbose 5
logout
}
tty | grep tty7 && start-frontend
xorg.conf
For PE8700 Samsung LCD. See also the tips for the NVidiaProprietaryDriver
The FX5200 cards were the cause of my DVI problems on my projector. Apparently they freak out a PCB component causing the EDID data to become corrupt. (a Gigabyte card lasted from Aug 2006 to Dec 2007. Fortunately the new nvidia driver allow you to use a CustomEDID to load the data from a file.
Option ExactModeTimingsDVI is also important for the projector.
Option "UseEDIDDpi" "false" or some equivalent control of DPI is important for the Samsung television otherwise you get really small fonts (fixed in 0.21)
There are two layouts, the default uses outputs via VGA to a Samsung LCD television, the second uses DVI to the PE8700 projector.
Section "ServerLayout"
Identifier "Main" # Output to Samsung LCD television
#LCD[0] VGA, LCD[1] HDMI
Screen 0 "LCD[0]" 0 0
Option "Xinerama" "off"
EndSection
Section "ServerLayout"
Identifier "Projector"
Screen 0 "Projector[0]" 0 0
Option "Xinerama" "off"
EndSection
Section "Module"
Load "glx"
EndSection
Section "Device"
Identifier "ION-GPU[0]"
Driver "nvidia"
BusID "PCI:3:0:0"
Screen 0
EndSection
Section "Screen"
Identifier "LCD[1] "
Device "ION-GPU[0]"
Monitor "AnyMonitor"
DefaultDepth 24
Option "UseDisplayDevice" "DFP-1" # HDMI
Option "ConnectedMonitor" "DFP-1"
Option "IgnoreEDID" "on"
SubSection "Display"
Depth 24
Modes "1360x768" "1280x720"
EndSubSection
EndSection
Section "Screen"
Identifier "LCD[0]"
Device "ION-GPU[0]"
Monitor "AnyMonitor"
DefaultDepth 24
Option "ConnectedMonitor" "CRT-1"
Option "UseEDIDDpi" "FALSE" #Computed DPI values not so good for TV display
Option "UseDisplayDevice" "CRT-1" # VGA out
SubSection "Display"
Depth 24
Modes "1360x768" "800x600"
EndSubSection
EndSection
Section "Screen"
Identifier "Projector[0]"
Device "ION-GPU[0]"
Monitor "AnyMonitor"
Option "ConnectedMonitor" "DFP"
Option "UseDisplayDevice" "DFP" # DVI out
Option "CustomEDID" "DFP-0:/etc/X11/benq-c.bin"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1280x720" "800x600"
EndSubSection
EndSection
Section "Monitor"
Identifier "AnyMonitor"
Option "DPMS"
Option "ExactModeTimingsDVI" "true"
Option "RenderAccel" "true"
EndSection
~mythtv/.mythtv/session
Start a ruby program that listens to /dev/lircd and manages -
- mythtv via updating the database + network control port
- the AV receiver via RS232 - volume/mute, power on/off, input type
- alsa via calls to amixer - volume/mute, digital/analog outputs
- suspend on lirc idle or power button
- restart specifying TV or Projector layout
#!/bin/sh #store our dbus session and display where our kill script can pick it up export | egrep "DBUS_SESSION_BUS_ADDRESS|DISPLAY" > ~/.xsession-export #Run unclutter to hide the cursor after resume unclutter -display $DISPLAY & #run our main lirc control program /home/mythtv/bin/audiomodeswitch/main.rb &
~mythtv/bin/suspend_mythtv.sh
#!/bin/sh
# We use dbus-send because it seems to block until resume which is what we want
echo "Suspending"
dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:2
echo "Resumed"
~mythtv/bin/kill_mythtv.sh
Script is called by the ruby program, but also useful to restart from ssh
#!/bin/sh [ -f $HOME/.xsession-export ] && . $HOME/.xsession-export echo "killing mythfrontend" pkill mythfrontend pkill unclutter echo "xfce logout $DISPLAY" xfce4-session-logout --logout --fast
LIRC Remote Control
Standard mythbuntu setup for MCE remote.
Sound
Onboard sound
~/.asoundrc
Could probably do better 48/44kHz switching on the analog output between music and video but if that is important we just go digital passthrough and let the receiver do the work.
In myth config, you can see that default sound device is ALSA:myth-video, the passthrough device is ALSA:myth-passthru, and mythmusic uses ALSA:myth-music. the AC3PassThru and DTSPassThru settings are managed by the ruby program
#First line comment
pcm.myth-music {
type copy
slave.pcm "default"
}
ctl.myth-music {
type hw
card 0
}
pcm.myth-video {
type copy
slave.pcm "default"
}
ctl.myth-video {
type hw
card 0
}
pcm.myth-passthru {
type copy
slave.pcm = "spdif"
}
ctl.myth-passthru {
type hw
card 0
}
minimyth.conf
TODO - Works nicely through the WRT310N router etc, but we have a hard drive have decided to stick with Mythbuntu for now.
Upgrades
Mythbuntu 9.10
100% clean on server
front end needed /etc/events.d/tty7 moved to /etc/init/tty7.conf
Mythbuntu 8.10
0.21-fixes
upgrade smooth