View previous topic :: View next topic |
Author |
Message |
thatdude n00b
Joined: 13 Mar 2005 Posts: 14
|
Posted: Thu Jun 08, 2006 2:53 am Post subject: MythTV: mythfrontend init script |
|
|
I've written an init script for mythfrontend, and thought I'd post it here in case it might be of use to anyone else. It isn't meant to cover all setups or situations, just to work well for my all-in-one setup, and be a little flexible.
I originally had startx (and thus mythfrontend) being started via an entry in /etc/inittab, but I didn't like that I would see the boot messages for a couple of seconds between the time that the gensplash image disappeared and when X started. I needed something to start startx earlier, and this did the trick. I no longer have to look at those boot messages, and this approach seems cleaner to me, too.
/etc/init.d/mythfrontend:
Code: | #!/sbin/runscript
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
depend() {
need mythbackend
}
start() {
ebegin "Starting MythTV Frontend"
eindent
einfo "Starting mythfrontend"
start-stop-daemon --start --quiet --background \
--chuid ${MYTH_UID} \
--exec /usr/bin/startx \
-- -- ${MYTH_XOPTS} vt${MYTH_VT}
eend $?
if [ -n "${MYTH_IREXEC}" ]; then
local name_opt="${MYTH_IREXEC_NAME:+--name ${MYTH_IREXEC_NAME}}"
einfo "Starting irexec"
start-stop-daemon --start --quiet \
--chuid ${MYTH_UID} \
--exec /usr/bin/irexec \
-- --daemon ${name_opt} ${MYTH_LIRCRC}
eend $?
fi
eoutdent
}
stop() {
ebegin "Stopping MythTV Frontend"
eindent
# Make an assumption here: if there are any of these programs running
# under MYTH_UID, then this script started them, and now needs to kill
# them.
if [ "$(pgrep -u ${MYTH_UID} irexec)" ]; then
einfo "Terminating irexec"
start-stop-daemon --stop --exec /usr/bin/irexec \
--user ${MYTH_UID} --quiet
eend $?
fi
if [ "$(pgrep -u ${MYTH_UID} mythfrontend)" ]; then
einfo "Terminating mythfrontend"
start-stop-daemon --stop --name mythfrontend \
--user ${MYTH_UID} --quiet
eend $?
fi
if [ "$(pgrep -u ${MYTH_UID} mythwelcome)" ]; then
einfo "Terminating mythwelcome"
start-stop-daemon --stop --name mythwelcome \
--user ${MYTH_UID} --quiet
eend $?
fi
eoutdent
} |
/etc/conf.d/mythfrontend:
Code: | # User id that all the processes should run as.
MYTH_UID="mythtv"
# HOME directory. Needed to find .xinitrc file and .mythtv directory.
HOME="/home/${MYTH_UID}"
# X runs on the first VT available. At the point this script runs during
# system start-up, the gettys haven't started yet, so the first available VT is
# VT2. Then, when the getty on VT2 starts, it grabs the keyboard away from X.
# To avoid having to turn off gettys in /etc/inittab, tell X where to find an
# "unreserved" VT.
MYTH_VT="7"
# If there are any other X server options you want to use, set them here.
MYTH_XOPTS="-nolisten tcp -br"
# irexec, part of the lirc package, can be used to run commands in response to
# remote control button presses. If this variable is set, then irexec will be
# started and pointed to the appropriate config file. Leave this blank or null
# to not start irexec.
MYTH_IREXEC="yes"
# Name that irexec is configured to respond to in the lircrc file.
MYTH_IREXEC_NAME="mythirexec"
# Where irexec can find the lircrc file.
MYTH_LIRCRC="${HOME}/.mythtv/lircrc" |
/home/mythtv/.xinitrc:
Code: | xset -dpms s off
fvwm &
/usr/bin/mythwelcome
|
That's it. |
|
Back to top |
|
|
thesnowman Guru
Joined: 08 May 2003 Posts: 365 Location: Sydney, Australia
|
Posted: Sat Jul 15, 2006 4:37 am Post subject: |
|
|
Thanks thatdude. Works great and much better than patching inittab. |
|
Back to top |
|
|
afabco Guru
Joined: 24 Feb 2004 Posts: 380
|
Posted: Sat Jul 15, 2006 7:44 pm Post subject: |
|
|
Very nice. This is the first one I've tried that's actually worked consistently. (other than an xterm).
one question. When I start from an xterm, I turn on logging using the "-v all -l /home/mythtv/mythfrontend.log" options.
Where would I set those up? _________________ Anyone who puts a small gloss on a fundamental technology, calls it proprietary, and then tries to keep others from building on it, is a thief.
-Tim O'Reilly |
|
Back to top |
|
|
thatdude n00b
Joined: 13 Mar 2005 Posts: 14
|
Posted: Mon Jul 17, 2006 1:14 am Post subject: |
|
|
afabco,
If you're using mythwelcome, those settings can be configured there. Hit F11 while in mythwelcome to get to the configuration screen where you can set the mythfrontend start-up command.
If you don't have a need for mythwelcome, then replace its command in .xinitrc with your mythfrontend command. |
|
Back to top |
|
|
belrpr Guru
Joined: 22 May 2006 Posts: 440
|
Posted: Mon Jul 17, 2006 7:11 am Post subject: |
|
|
I don't really get what this does.
I am creating my own mythtv right now and I use fluxbox and start mythtv frontend like that.
Tried using directfb to start it but due lack of documentation I stopped trying.
Do you care to explain a bit to quite a linux noob? |
|
Back to top |
|
|
afabco Guru
Joined: 24 Feb 2004 Posts: 380
|
Posted: Tue Jul 18, 2006 12:28 am Post subject: |
|
|
thatdude:
Thanks!
I wasn't really quite sure what else mythwelcome did (my server stays on 24/7) so was hesitant to replace the code with mythfrontend.
Appreciate it. _________________ Anyone who puts a small gloss on a fundamental technology, calls it proprietary, and then tries to keep others from building on it, is a thief.
-Tim O'Reilly |
|
Back to top |
|
|
afabco Guru
Joined: 24 Feb 2004 Posts: 380
|
Posted: Tue Jul 18, 2006 12:29 am Post subject: |
|
|
belrpr:
Do you have to manually log in each time the mythtv box fires up? Or does it just automagically come up to the mythfrontend screen? _________________ Anyone who puts a small gloss on a fundamental technology, calls it proprietary, and then tries to keep others from building on it, is a thief.
-Tim O'Reilly |
|
Back to top |
|
|
riscycdj n00b
Joined: 09 Oct 2005 Posts: 61
|
Posted: Tue Jul 18, 2006 4:39 am Post subject: |
|
|
I use KDM to automatically log the mythtv user on the local box. |
|
Back to top |
|
|
belrpr Guru
Joined: 22 May 2006 Posts: 440
|
Posted: Tue Jul 18, 2006 10:08 am Post subject: |
|
|
afabco wrote: | belrpr:
Do you have to manually log in each time the mythtv box fires up? Or does it just automagically come up to the mythfrontend screen? |
I need to login in shell then startx which will start fluxbox and mythtv in the process.
So basicly this script makes an autologin and starts mythtv? |
|
Back to top |
|
|
riscycdj n00b
Joined: 09 Oct 2005 Posts: 61
|
|
Back to top |
|
|
Nicias Guru
Joined: 06 Dec 2005 Posts: 446
|
Posted: Tue Jul 18, 2006 10:06 pm Post subject: |
|
|
Here is my method: This is the last line of my /etc/conf.d/local.start: Code: | cd ~myth
su myth -c 'source /etc/profile;startx' |
Then here is myth's .xinitrc: Code: | [ -f $HOME/.Xdefaults ] && xrdb $HOME/.Xdefaults
xsetroot -solid \#400040
xsetroot -cursor_name top_left_arrow
/usr/bin/fluxbox &
setxkbmap -rules xorg -symbols remote -compat basic
v4lctl volume mute off
exec ~/mythwhile.sh |
Then here is the script mythwhile.sh: Code: | #!/bin/bash
while true
do /usr/bin/mythfrontend
done |
Mythfrontend gets started automatically on startup. |
|
Back to top |
|
|
DocterD Tux's lil' helper
Joined: 15 May 2004 Posts: 129
|
Posted: Mon Sep 04, 2006 4:05 pm Post subject: |
|
|
maybe you can mtd support and something that respawned mythfrontend when it crashes? |
|
Back to top |
|
|
belrpr Guru
Joined: 22 May 2006 Posts: 440
|
Posted: Tue Sep 05, 2006 8:26 am Post subject: |
|
|
What does this do:
Quote: | /home/mythtv/.xinitrc:
Code: | xset -dpms s off
fvwm &
/usr/bin/mythwelcome |
|
|
|
Back to top |
|
|
dreadhead Guru
Joined: 09 Jul 2004 Posts: 470 Location: Ulm - Germany
|
Posted: Tue Sep 05, 2006 8:35 am Post subject: |
|
|
belrpr wrote: | What does this do:
Quote: | /home/mythtv/.xinitrc:
Code: | xset -dpms s off
fvwm &
/usr/bin/mythwelcome |
|
|
When X is started ba user mythtv, X looks into that file for some commands to execute. Is basically like an autorun for X. First it turns off dpms (So that the screensaver isn't coming on while watching TV) and then it starts fvwm. After this it starts the frontend. _________________ Kopete OTR Plugin |
|
Back to top |
|
|
belrpr Guru
Joined: 22 May 2006 Posts: 440
|
Posted: Tue Sep 05, 2006 12:24 pm Post subject: |
|
|
dreadhead wrote: | belrpr wrote: | What does this do:
Quote: | /home/mythtv/.xinitrc:
Code: | xset -dpms s off
fvwm &
/usr/bin/mythwelcome |
|
|
When X is started ba user mythtv, X looks into that file for some commands to execute. Is basically like an autorun for X. First it turns off dpms (So that the screensaver isn't coming on while watching TV) and then it starts fvwm. After this it starts the frontend. |
Ah ok but what is fvwm?
BTW there is no need for a window manager like fluxbox or kde or gnome? |
|
Back to top |
|
|
Icer Guru
Joined: 26 Aug 2003 Posts: 395 Location: @home
|
Posted: Tue Sep 05, 2006 12:44 pm Post subject: |
|
|
belrpr wrote: | dreadhead wrote: | belrpr wrote: | What does this do:
Quote: | /home/mythtv/.xinitrc:
Code: | xset -dpms s off
fvwm &
/usr/bin/mythwelcome |
|
|
When X is started ba user mythtv, X looks into that file for some commands to execute. Is basically like an autorun for X. First it turns off dpms (So that the screensaver isn't coming on while watching TV) and then it starts fvwm. After this it starts the frontend. |
Ah ok but what is fvwm?
BTW there is no need for a window manager like fluxbox or kde or gnome? |
AFAIK fvwm is a window manager. So I would assume that you need a window manager. _________________ Everything can be done. There's just a longer delivery time for impossible projects. |
|
Back to top |
|
|
dreadhead Guru
Joined: 09 Jul 2004 Posts: 470 Location: Ulm - Germany
|
Posted: Tue Sep 05, 2006 2:23 pm Post subject: |
|
|
Yes. fvwm is a window manager. There is no need to use a windowmanager for mythfrontend but the devs say that it is only tested with a wm and you could run into window focusing problems. I had mythfe running without a wm and I have seen this problems. Sometimes when a warning message comes up (for example that the connection to the backend is lost) you cannot see it because it appears behind the frontend. Since I use a wm I haven't seen this problem any more.
Most people use fvwm because it would be senseless to compile kde or gnome for many hours while all the features they offer aren't used. fvwm is just a wm without any other tools. _________________ Kopete OTR Plugin |
|
Back to top |
|
|
Hobbes-X l33t
Joined: 04 Feb 2004 Posts: 823 Location: Seattle, WA
|
Posted: Thu Oct 19, 2006 3:27 pm Post subject: Re: MythTV: mythfrontend init script |
|
|
thatdude wrote: | I've written an init script for mythfrontend, and thought I'd post it here in case it might be of use to anyone else. It isn't meant to cover all setups or situations, just to work well for my all-in-one setup, and be a little flexible.
I originally had startx (and thus mythfrontend) being started via an entry in /etc/inittab, but I didn't like that I would see the boot messages for a couple of seconds between the time that the gensplash image disappeared and when X started. I needed something to start startx earlier, and this did the trick. I no longer have to look at those boot messages, and this approach seems cleaner to me, too.
|
thatdude- This is exactly what I was dreading trying to make on my own, thank you very much for posting this and saving me a lot of research and work! |
|
Back to top |
|
|
Hobbes-X l33t
Joined: 04 Feb 2004 Posts: 823 Location: Seattle, WA
|
Posted: Thu Oct 19, 2006 4:50 pm Post subject: |
|
|
DocterD wrote: | maybe you can mtd support and something that respawned mythfrontend when it crashes? |
If you have mythdvd installed from the ebuilds in portage, there's an init script already existing for mtd:
Code: |
To have Myth Transcode Daemon (mtd) start on boot do the following
rc-update add mtd default
Make sure you run 'mtd -n' to setup mtd first
|
|
|
Back to top |
|
|
theBlackDragon l33t
Joined: 23 Nov 2002 Posts: 768 Location: Belgium
|
Posted: Fri Oct 20, 2006 10:38 am Post subject: |
|
|
dreadhead wrote: | Yes. fvwm is a window manager. There is no need to use a windowmanager for mythfrontend but the devs say that it is only tested with a wm and you could run into window focusing problems. I had mythfe running without a wm and I have seen this problems. Sometimes when a warning message comes up (for example that the connection to the backend is lost) you cannot see it because it appears behind the frontend. Since I use a wm I haven't seen this problem any more.
Most people use fvwm because it would be senseless to compile kde or gnome for many hours while all the features they offer aren't used. fvwm is just a wm without any other tools. |
That would be quite underestimating FVWM, but anyway. Why use FVWM and not twm? I think (I'm not sure though) that twm still comes with Xorg by default, so why compile FVWM if twm is already there? _________________ Fvwm|Fvwm forum |
|
Back to top |
|
|
Hobbes-X l33t
Joined: 04 Feb 2004 Posts: 823 Location: Seattle, WA
|
Posted: Fri Oct 20, 2006 1:17 pm Post subject: |
|
|
theBlackDragon wrote: | That would be quite underestimating FVWM, but anyway. Why use FVWM and not twm? I think (I'm not sure though) that twm still comes with Xorg by default, so why compile FVWM if twm is already there? |
IIRC there's been reports of window focus issues with twm, but only in certain cases- like when starting an external program when all the window decorations are disabled? Entirely hearsay of course, since there's all sorts of problems caused by user configuration... |
|
Back to top |
|
|
JloR n00b
Joined: 29 Jun 2004 Posts: 43 Location: Denmark
|
Posted: Sun Nov 12, 2006 5:15 pm Post subject: |
|
|
THANK YOU! I've just figured out why my system was hanging just after udev... Damn ivtv / kernel-2.6.18 problem! So.. After spending 2 weeks trying to figure that out I'm happe I found this treasure :)
Thanks a lot.. Saved me some work :) Now to setup lirc for mythtv - and figure out why one of the cards in the machine only work 50% of the time.. :) But that's a completely different problem. _________________ -- Jakob L. O. Rosenlund |
|
Back to top |
|
|
derheld42 Tux's lil' helper
Joined: 31 Mar 2003 Posts: 97 Location: Washington, US
|
Posted: Wed Apr 04, 2007 6:14 am Post subject: |
|
|
Just have to say thanx a bundle for this script!
I had rigged something up in /etc/X11/startdm.sh, which essentially accomplished the same thing, but your approach isn't just a hack. It's adds a good degree of flexibility.
I think it should be submitted to the gentoo mythtv ebuild.
Users can choose to use it if they want to.... |
|
Back to top |
|
|
dpl Tux's lil' helper
Joined: 22 Apr 2003 Posts: 137 Location: Canada
|
Posted: Fri May 04, 2007 8:42 pm Post subject: |
|
|
I just set up my mthtv box, and was looking for something to do exactly this... I have fluxbox autostart mythfrontend, but that didn't quite do it. I also wanted something that would not require either kdm or gdm, and this was spectacular!
dpl _________________ puto risi vidi |
|
Back to top |
|
|
thatdude n00b
Joined: 13 Mar 2005 Posts: 14
|
Posted: Fri May 04, 2007 9:29 pm Post subject: |
|
|
I'm glad to hear that this has helped a few people out.
Since I first posted, I discovered that irexec had its own init script (duh!), split my all-in-one box into physically separate frontend and backend machines, and stopped using a window manager with no ill effects.
Here is the simpler version currently running on my net-booting frontend...
/etc/init.d/mythfrontend:
Code: |
#!/sbin/runscript
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
depend() {
use net irexec mythbackend
}
start() {
ebegin "Starting MythTV Frontend"
start-stop-daemon --start --quiet --background \
--chuid ${MYTH_UID} \
--exec /usr/bin/startx \
-- -- ${MYTH_XOPTS} vt${MYTH_VT}
eend $?
}
stop() {
ebegin "Stopping MythTV Frontend"
# Make an assumption here: if there are any of these programs running
# under MYTH_UID, then this script started them, and now needs to kill
# them.
if [ "$(pgrep -u ${MYTH_UID} xinit)" ]; then
start-stop-daemon --stop --name xinit \
--user ${MYTH_UID} --quiet
eend $?
fi
} |
The "use mythbackend" above should make it run in the right spot on a box that runs both the frontend and backend.
/etc/conf.d/mythfrontend:
Code: |
# User id that all the processes should run as.
MYTH_UID="mythtv"
# HOME directory. Needed to find .xinitrc file and .mythtv directory.
HOME="/home/${MYTH_UID}"
# X runs on the first VT available. At the point this script runs during
# system start-up, the gettys haven't started yet, so the first available VT is
# VT2. Then, when the getty on VT2 starts, it grabs the keyboard away from X.
# To avoid having to turn off gettys in /etc/inittab, tell X where to find an
# "unreserved" VT.
MYTH_VT="7"
# If there are any other X server options you want to use, set them here.
MYTH_XOPTS="-nolisten tcp -br -dpi 100" |
/home/mythtv/.xinitrc:
Code: |
/usr/local/bin/xwarppointer abspos 720 480
/usr/bin/xset -dpms s off
while :; do
/usr/bin/mythfrontend -v important,general -l /var/log/mythtv/mythfrontend.log
done |
The loop in .xinitrc allows mythfrontend to automatically restart if it dies, or if I kill it using a button on my remote. The init script is still able to stop mythfrontend because it kills the script running the loop.
I may take the suggestion to submit this for inclusion in the mythtv ebuild, but I wouldn't count on it getting in since there is already a different "autostart" method that the ebuild sets up when that use flag is enabled.
Enjoy! |
|
Back to top |
|
|
|