[vdr] Launching vdr + xineliboutput at startup

Laz laz at club-burniston.co.uk
Mon Oct 31 21:59:42 CET 2011


On Monday 31 October 2011 08:07:10 Nicolas Huillard wrote:
> Le vendredi 28 octobre 2011 à 22:59 +0200, Damien Bally a écrit :
> > I'm making some kind of embedded vdr distribution based on busybox and
> > minimal X11, the problem is I have no idea of how I can launch vdr and
> > xineliboutput at startup.
> 
> What I recently did, based on Debian + e-tobi + minimal X11 + vdr-sxfe:
> * use nodm to auto-log-in and launch X11 (tweak /etc/default/nodm), and
> relaunch in case of crash
> * create a simple /var/lib/vdr/.xsession to run xcompmgr and vdr-sxfe
> with proper options
> * comment-out a few useless lines in /etc/X11/Xsession.options
> * standard output and errors lies in /var/lib/vdr/.xsession-errors

The way I did it (hacked together from what I've done before and various 
things I've found on t'internet!). I'm not saying it's the best way or perfect 
but it works for me and I may improve it later on. This is on a basic Debian 
installation.


Autologin: /etc/inittab:
Change 1:2345:respawn:/sbin/getty 38400 tty1 to
1:2345:respawn:/sbin/mingetty --autologin vdr tty1

(Autologin on tty1 as user vdr)


Start X when user vdr logs in on the console (and it isn't already running):
~vdr/.bashrc ends with:

if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then
        startx
fi

(This means I can su to the user vdr without it trying to run X all the time!)


Then set up the commands to run vdr-sxfe.
~vdr/.xinit contains:
#!/bin/sh
xsetroot -solid black
evilwm &
xcompmgr -n &
unclutter -idle 2 &
exec /home/vdr/bin/start_vdrfe

(Set the root window to black rather than the X checkerboard thing, although 
htis doesn't seem to work! Run a very lightweight window manager. Run xcompmgr 
to handle compositing for HUD. Run unclutter to hide the mouse cursor. Then 
start my start+vdrfe script.)


~vdr/bin/start_vdrfe:

#!/bin/bash

FEOPTS="--fullscreen"
FEOPTS=${FEOPTS}" --reconnect"
FEOPTS=${FEOPTS}" --post method:tvtime=use_vo_driver"
FEOPTS=${FEOPTS}" --video=vdpau"
FEOPTS=${FEOPTS}" --audio=alsa:hw:1,7"
FEOPTS=${FEOPTS}" --hud"
FEOPTS=${FEOPTS}" --nokbd"
FEOPTS=${FEOPTS}" --silent"

LOGFILE=/var/tmp/vdr-sxfe.log

mv $LOGFILE ${LOGFILE}.old

while (true)
do
        vdr-sxfe $FEOPTS >& $LOGFILE
done


(vdr-sxfe options probably not optimal but it seems to work for now!)


As I say, there's many ways to do this and this is what I'm currently using 
for the lightweight client I've just built.

I still have my remote receiver attached to the server and I have 
commands.conf containing lines such as:

"Restart vdr frontend: ssh vdrfe killall -KILL vdr-sxfe"

for when the frontend hangs (seems to happen mainly when I skip forward 
several times in quick succession). I also have a command set up to shut down 
the client from the remote.

Cheers,

Laz



More information about the vdr mailing list