Kör Mythbuntu (8.04) och har installerat open-sasc-ng. Har installerat startup script i init.d etc och de fungerar utmärkt när jag kör dem manuellt och Mythtv kodar av kanaler.
Problemet är när scripten körs vid boot så verkar de fungera som de skall enl loggar men Mythtv kodar inte av kodade kanaler.
sasc-ng programmet ger bra loggar när man kör det manuellt men jag kan inte få ut loggar när programmet körs i bakgrunden.
Blir tokig på detta och hoppas någon har ett tips?
Här är scriptet i init.d (symlinkar finns i rc...):
[codebox]#! /bin/bash
#
# sasc start-stop script
#
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME="runsasc"
DESC="SASC-NG"
DAEMON="sasc-ng"
ENABLED=0
test -f /etc/default/sascc && . /etc/default/sascc
test "$ENABLED" != "0" || exit 0
rm -f /tmp/SASC_COMPLETE
LOOP=0
case "$1" in
start)
if ! ps -C sasc-ng > /dev/null 2>&1; then
echo -e "Starting $DESC: $NAME. \n"
runsasc &
until [ -e /tmp/SASC_COMPLETE ] || [ $LOOP -eq $TIMEOUT ] ; do
sleep 1
LOOP=$((LOOP+1))
done
if [ $LOOP -eq $TIMEOUT ]; then
echo -e "SASC-NG startup sequence has timed out in $TIMEOUT seconds. SASC-NG will not start. \n"
exit 1
fi
echo -e "SASC-NG startup time was $LOOP second(s). \n"
echo -e "SASC-NG startup sequence completed. \n"
else
echo -e "SASC-NG is already running. \n"
fi
;;
stop)
if ps -C sasc-ng > /dev/null 2>&1; then
echo -e "Stopping $DESC: $NAME. \n"
sleep 3
killall -q -TERM $NAME
killall -q -TERM $DAEMON
sleep 5
rmmod dvbloopback.ko
else
echo -e "SASC-NG is not running. \n"
fi
;;
restart|force-reload)
if ps -C sasc-ng > /dev/null 2>&1; then
echo -e "Restarting $DESC: $NAME. \n"
sleep 3
killall -q -TERM $NAME
killall -q -TERM $DAEMON
sleep 5
rmmod dvbloopback.ko
sleep 2
runsasc &
until [ -e /tmp/SASC_COMPLETE ] || [ $LOOP -eq $TIMEOUT ] ; do
sleep 1
LOOP=$((LOOP+1))
done
if [ $LOOP -eq $TIMEOUT ]; then
echo -e "SASC-NG startup sequence has timed out in $TIMEOUT seconds. SASC-NG will not start. \n"
exit 1
fi
echo -e "SASC-NG startup time was $LOOP second(s). \n"
echo -e "SASC-NG startup sequence completed. \n"
else
echo -e "SASC-NG is not running. \n"
fi
;;
*)
N=/etc/init.d/$NAME
echo "Use: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
rm -f /tmp/SASC_COMPLETE
[/codebox]
Här är runasc scriptet i /usr/local/bin:
[codebox]#!/bin/bash
# Script to automate running of SASC-NG and Drivers
# Driver directory
DRIVERDIR="/usr/src/trunk/open-sasc-ng"
# Path to SASC-NG binary
SASCPRG="/usr/src/trunk/open-sasc-ng/sasc-ng"
# Path to CAM Directory
CAMDIR=""
# Number of DVB Cards you have in your system dedicated to SASC-NG
ADAPTERS="1"
# Startup Options passed to SASC-NG. Adjust according to your devices.
#OPTIONS="-r 0 -v 1 -o"
#OPTIONS="-j 0:1"
OPTIONS="--cam-dir /usr/src/trunk/open-sasc-ng/sc_files -j 0:1"
# Number of times runsasc will attempt to restart SASC-NG after a crash has occured (set to 0 for no limit)
MAXTRIES=10
# Minimum runtime required (in seconds) for SASC-NG to continue restart attempts
MINRUN=20
## End Configuration Section ##
#SASCCMD="$SASCPRG $OPTIONS $CAMDIR"
SASCCMD="$SASCPRG $OPTIONS"
KILL="/usr/bin/killall -q -TERM"
# Detect whether the DVBLooopback driver is already loaded
# and return 0 if it *is* loaded, 1 if not:
function DriverLoaded()
{
grep -qse dvbloopback /proc/modules
}
# Load all DVBLoopback driver modules needed for your hardware:
function LoadDriver()
{
insmod $DRIVERDIR/dvbloopback.ko num_adapters=$ADAPTERS
sleep 5
}
# Unload all DVBLoopback driver modules loaded in LoadDriver():
function UnloadDriver()
{
rmmod dvbloopback.ko
}
# Load driver if it hasn't been loaded already:
if ! DriverLoaded; then
LoadDriver
fi
LASTRESTART=$(date +%s)
LOOPCOUNT=0
while (true) do
if [ $LOOPCOUNT -le $MAXTRIES ] || [ $MAXTRIES -eq 0 ] ; then
eval "screen -D -m -S sasc-ng $SASCCMD &"
# Wait for SASC-NG to initialize then do rest
sleep 10
touch /tmp/SASC_COMPLETE
else
$KILL runsasc
fi
# Remember PID of SASC-NG process
PID=$!
# Wait for SASC-NG to end or signal to arrive
wait $PID
# Remember return value of SASC-NG
RET=$?
if test $RET -eq 0 -o $RET -eq 2; then exit; fi
TIMEOFDEATH=$(date +%s)
RUNTIME=$((TIMEOFDEATH - LASTRESTART))
if [ $TIMEOFDEATH -le $(($LASTRESTART + $MINRUN)) ] ; then
echo "`date` SASC-NG crashed in $RUNTIME seconds. Minimum required runtime for SASC-NG is $MINRUN seconds. Killing runsasc process..."
$KILL runsasc
fi
echo "`date` Reloading DVBLoopback drivers"
$KILL sasc-ng
sleep 10
UnloadDriver
LoadDriver
LASTRESTART=$(date +%s)
LOOPCOUNT=$((LOOPCOUNT+1))
echo "`date` Restarting SASC-NG $LOOPCOUNT time(s). Maximum retries set to $MAXTRIES"
done[/codebox]
Som sagt kör jag "sudo /etc/init.d/sascd start" fungerar allt utmärkt!
Redigerat av Crocco, 12 augusti 2008 - 21:58.