Contact us
Leave a message

Mitglied bei

Logo "Bündnis '90/Die Grünen"
B'90/Grüne, OV Lehrte
Logo "Gospelchor 'Swing Low', Markus-Gemeinde, Lehrte"
Gospelchor "Swing Low", Markus-Gemeinde, Lehrte
Logo "Verein zum Erhalt klassischer Computer"
Verein zum Erhalt klassischer Computer

Endlich: MythTV

MythTV wird -- nach Auflösen der zahllosen Abhängigkeiten, was aber dank marillats Multimedia-Repository kein Problem ist -- direkt aus den Quellen compiliert & installiert. Dazu folgende kleine Hilfs-Skripte, die auch das gelegentliche Update auf die neueste Version aus dem SVN-Repository erleichtern:

/usr/src/updatemyth

#!/bin/sh

# updatemyth -- gets latest mythtv version from SVN
# Usage: updatemyth path_to_mythtv_sources

CURRENT_DIR=$PWD

cd $1
cd mythtv
svn update
cd ..
cd myththemes
svn update
cd ..
cd mythplugins
svn update
cd ..

cd $CURRENT_DIR

/usr/src/remakemyth

#!/bin/sh

# remakemyth -- uninstall and recompile MythTV
# Usage: remakemyth path_to_mythtv_sources

./removemyth $1
./makemyth $1

/usr/src/removemyth

#!/bin/sh

# removemyth -- uninstall MythTV
# Usage: removemyth path_to_mythtv_sources

CURRENT_DIR=$PWD
cd $1
echo Working in `pwd`

cd mythplugins
echo --- uninstalling mythplugins --------------------------------------------------
sudo make uninstall
sudo make clean
cd ../myththemes
echo --- uninstalling myththemes ---------------------------------------------------
sudo make uninstall
sudo make clean
cd ../mythtv
echo --- uninstalling mythtv -------------------------------------------------------
sudo make uninstall
sudo make clean
cd $PWD

/usr/src/makemyth

#!/bin/sh

# remakemyth -- compile and re-install MythTV
# Usage: makemyth path_to_mythtv_sources

CURRENT_DIR=$PWD
cd $1
echo Working in `pwd`

cd mythtv
echo --- configuring mythtv --------------------------------------------------------
./configure\
  --prefix=/usr/\
  --arch=c3-2\
  --enable-proc-opt\
  --enable-audio-oss\
  --enable-audio-alsa\
  --disable-audio-arts\
  --disable-audio-jack\
  --enable-frontend\
  --enable-backend\
  --enable-lirc\
  --disable-joystick-menu\
  --disable-firewire\
  --disable-freebox\
  --disable-dbox2\
  --disable-hdhomerun\
  --disable-crciprec\
  --disable-ivtv\
  --enable-dvb\
  --dvb-path=/usr/src/linux/include/\
  --enable-x11\
  --enable-xrandr\
  --enable-xv\
  --enable-xvmc\
  --enable-xvmc-vld\
  --disable-xvmc-pro\
  --disable-xvmc-opengl\
  --xvmc-lib=viaXvMC\
  --disable-mac-accel\
  --disable-opengl-vsync\
  --disable-directfb\
  --disable-directx
echo --- compiling mythtv ----------------------------------------------------------
qmake mythtv.pro
make
echo --- installing mythtv ---------------------------------------------------------
sudo make install
cd ..

cd myththemes
echo --- processing myththemes -----------------------------------------------------
./configure --prefix=/usr
qmake myththemes.pro
make
sudo make install
cd ..

cd mythplugins
echo --- configuring mythplugins ---------------------------------------------------
./configure\
  --prefix=/usr\
  --enable-opengl\
  --enable-mytharchive\
  --enable-create-dvd\
  --disable-create-archive\
  --disable-mythbrowser\
  --enable-mythcontrols\
  --enable-mythdvd\
  --enable-transcode\
  --enable-vcd\
  --disable-mythflix\
  --enable-mythgallery\
  --enable-exif\
  --enable-new-exif\
  --enable-mythgame\
  --enable-mythmusic\
  --enable-fftw\
  --enable-sdl\
  --disable-aac\
  --enable-mythnews\
  --disable-mythphone\
  --disable-festival\
  --enable-mythvideo\
  --disable-mythweather
echo --- compiling mythplugins -----------------------------------------------------
qmake mythplugins.pro
make
echo --- installing mythplugins ----------------------------------------------------
sudo make install
cd $CURRENT_DIR

echo --- setting sticky flag -------------------------------------------------------
sudo chmod +s /usr/bin/mythfrontend

echo --- done ----------------------------------------------------------------------

Automatischer Start von MythTV

Zunächst wurde in "/etc/rc.5" ein Start-Link "S30mythtv-backend" auf das "mythtv-backend"-Skript angelegt, um das Backend im Runlevel 5 automatisch zu starten. Das Start/Stop-Skript ist eine Modifikation entweder der Version, die mit dem Myth-Quellcode mitkommt, oder sie beruht auf dem Skript des mythtv-backend-Paketes von www.debian-multimedia.org -- so genau weiß ich das leider nicht mehr... ;-)

Weiterhin wurde die "/etc/inittab" wie folgt modifiziert:

/etc/inittab

# /etc/inittab: init(8) configuration.
# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $

# The default runlevel.
#--- CHANGED ----------------------------------------------
# Default runlevel is set to 5
id:5:initdefault:
#----------------------------------------------------------

# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS

# What to do in single-user mode.
~~:S:wait:/sbin/sulogin

# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# Normally not reached, but fallthrough in case of emergency.
z6:6:respawn:/sbin/sulogin

# What to do when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

# Action on special keypress (ALT-UpArrow).
#kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work."

# What to do when the power fails/returns.
pf::powerwait:/etc/init.d/powerfail start
pn::powerfailnow:/etc/init.d/powerfail now
po::powerokwait:/etc/init.d/powerfail stop

# /sbin/getty invocations for the runlevels.
#
# The "id" field MUST be the same as the last
# characters of the device (after "tty").
#
# Format:
#  :::
#
# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

# Example how to put a getty on a serial line (for a terminal)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

# Example how to put a getty on a modem line.
#
#T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3

#--- CHANGED ----------------------------------------------
# Do some last preparations for MythTV
twk:2345:once:/usr/local/sbin/tweak
# Launch X as user mythtv
myfe:5:respawn:/bin/su - mythtv -c "/usr/X11R6/bin/startx -- -quiet -dpi 100 -layout TV"
#----------------------------------------------------------

Wichtigste Änderungen: Der Default-Runlevel ist jetzt 5, und am Ende der Initialisierung wird zum einen das tweak-Skript aufgerufen...

/usr/local/sbin/tweak

# tweak -- called during system init; performs everything
#          required to be done before starting mythtv

# Initialize some variables
source /usr/local/bin/initSleepVars

# Set current time via ntp
ntpdate $NTP_SERVER

# Ensure BIOS clock is set correctly
hwclock -w --noadjfile --utc

# Set maximum DVD speed to 4x
hdparm -E 4 /dev/hdc

# Launch irexec daemon
killall irexec
irexec -d /etc/lirc/lircrc

# Launch lirc X event daemon
killall irxevent
irxevent /etc/lirc/lircrc &

# Prepare network adapter for Wake-on-LAN
ethtool -s eth1 wol g

...wohin alles wandert, was vor dem Start von MythTV erledigt sein muss, und zum anderen wird der X-Server für den User mythtv gestartet. Damit startet auch das MythTV-Frontend, denn mythtv's ".xinitrc" sieht wie folgt aus:

/home/mythtv/.xinitrc

# .xinitrc for user mythtv

# Set a background which doesn't cause eye 
# cancer when displayed on a TV ;-)
xsetroot -solid mediumblue 

# Switch of screen blanking when idle
xset s off

# Launch mythfrontend in background
/usr/bin/mythfrontend --logfile /var/log/mythtv/mythfrontend.log &

# Display a nice, large analog clock which will be
# visible when frontend is not running
xclock -g 320x360+200+108 -bw 0 -update 1

Die "xclock" bewirkt, dass sich der X-Server nach Starten des Frontends im Hintergrund nicht sofort wieder beendet -- und außerdem sieht's ganz nett aus, wenn auf dem Fernseher bei abgeschaltetem Frontend wenigstens die aktuelle Uhrzeit zu sehen ist.

Run, level, run!

Im neuen Default-Runlevel 5 wird also X sowie das Frontend gestartet -- für Diagnose-Zwecke möchte man aber vielleicht nicht mal das Backend automatisch starten, damit es einem den Rechner (mangels Frontend) nicht gleich wieder schlafen legt. Daher habe ich in allen "/etc/rc.n"-Verzeichnissen für n < 5 die Startlinks für das Backend entfernt und stattdessen Stopplinks angelegt.

Schließlich sollte GRUB noch entsprechend konfiguriert sein, so dass im Normalfall MythTV startet, bei Bedarf jedoch das Diagnose-System gebootet werden kann:

/boot/grub/menu.lst (Ausschnitt)

[...]

### BEGIN AUTOMAGIC KERNELS LIST
## lines between the AUTOMAGIC KERNELS LIST markers will be modified
## by the debian update-grub script except for the default options below

## DO NOT UNCOMMENT THEM, Just edit them to your needs

## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
##      kopt_2_6_8=root=/dev/hdc1 ro
##      kopt_2_6_8_2_686=root=/dev/hdc2 ro
# kopt=root=/dev/hda1 ro selinux_init=no quiet vga=785 quiet

## default grub root device
## e.g. groot=(hd0,0)
# groot=(hd0,0)

## should update-grub create alternative automagic boot options
## e.g. alternative=true
##      alternative=false
# alternative=true

## should update-grub lock alternative automagic boot options
## e.g. lockalternative=true
##      lockalternative=false
# lockalternative=false

## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
# defoptions=

## should update-grub lock old automagic boot options
## e.g. lockold=false
##      lockold=true
# lockold=false

## Xen hypervisor options to use with the default Xen boot option
# xenhopt=

## Xen Linux kernel options to use with the default Xen boot option
# xenkopt=console=tty0

## altoption boot targets option
## multiple altoptions lines are allowed
## e.g. altoptions=(extra menu suffix) extra boot options
##      altoptions=(single-user) single
# altoptions=(single-user mode) single noresume

## controls how many kernels should be put into the menu.lst
## only counts the first occurence of a kernel, not the
## alternative kernel options
## e.g. howmany=all
##      howmany=7
# howmany=all

## should update-grub create memtest86 boot option
## e.g. memtest86=true
##      memtest86=false
# memtest86=true

## should update-grub adjust the value of the default booted system
## can be true or false
# updatedefaultentry=false

## ## End Default Options ##

[...]

Nachtrag zur Couch

Auch MythTV möchte man sicher per Fernbedieung steuern können -- glücklicherweise versteht sich MythTV von Natur aus mit Lirc und kann mittels einer eigenen "lircrc" konfiguriert werden:

Tastenbelegung der Fernbedienung

Taste auf URC 7730 Taste auf Computer-Keyboard Funktion
0 - 9 0 - 9 Zahleneingabe
Channel up, Channel down Bild rauf, Bild runter Blättern; Wiedergabe: Vor- bzw. Zurückspringen
Mute Pipeline (senkrechter Strich) Stummschaltung linker / rechter / beide Kanäle (s.u.)
Volume up, Volume down F11, F10 Lautstärkenregelung
Left, Right, Up, Down entsprechende Cursor-Tasten Menüauswahl
Menu M Kontextmenü aufrufen
Exit Esc Abbrechen/Verlassen
OK Leertaste (Space) Auswählen/Aktivieren/OK
16:9 W Seitenverhältnisse 4:3, 16:9 etc. durchgehen
Rewind Cursor links Wiedergabe: Schnell zurückspulen
Pause P Wiedergabe: Pause/Weiter
Play Eingabetaste (Enter) OK; Wiedergabe: Position merken/löschen
FFwd Cursor rechts Wiedergabe: Schnell vorspulen
Red Z Wiedergabe: Werbung überspringen
Green T TV: Teletext ein/aus
Yellow R TV: aktuelle Sendung aufnehmen (2 x drücken!)
Blue I Kontextbezogene Informationen aufrufen (z.B. OSD)

Damit lässt sich MythTV fast komplett bedienen; was man nicht direkt auf der Fernbedienung hat (z. B. "D" für Löschen), lässt sich i. d. R. per "Menu" (Kontextmenü) oder "Blue" (Kontext-Informationen) erreichen.

Noch zwei Dinge zur Tastenbelegung:

  • Wenn man irgendwo tief in den MythTV-Konfigurationsdialogen die Option "Mute left and right channel separately" aktiviert, lässt sich mittels "Mute" ("|") zuerst der linke, dann der rechte und beim 3. Tastendruck beide Kanäle stummschalten. Sehr praktisch bei der ein oder anderen Sendung auf den besseren (d. h. öffentlich-rechtlichen) Sendern, wo gelegentlich mal auf einem der Känale der Originalton oder Kommentare für Sehbehinderte untergebracht werden!
  • Aktivieren des Teletextes erforderte die Umbelegung der Taste "T" von "TOGGLETT" auf "TOGGLETM" im MythTV-Keyboard-Editor (oder per MythWeb)