На руках у пользователей на руках у пользователей может оставаться устаревшее оборудование, которое уже не поддерживается современными linux дистрибутивами. Так же среди любителей linux много противников systemd. Мне же было просто интересно разобраться и хотя бы немного продлить жизнь уже мёртвому проекту sasc-ng.
Debian Wheezy + sasc-ng + kaffeine посвящается. Декабрь 2016 актуально с вложением.
apt-get install linux-headers-`uname -r` build-essential patch patchutils git-core libproc-processtable-perl libdigest-sha-perl subversion mercurial openssl gettext libssl-dev screen libv4l-dev libncurses5-dev libpng12-dev libtinfo-dev
Все действия я проводил для удобства в /usr/local/src
su
cd /usrlocal/src
hg clone https://bitbucket.org/liplianin/s2-liplianin-v35
wget http://www.vanbest.org/drupal6/sites/www.vanbest.org/files/linux-2.6.38-dvb-mutex.patch
patch -p1 < linux-2.6.38-dvb-mutex.patch -d linux
make config
# первый ввод по умолчанию, второй y и ввод, далее по умолчанию почти до самого конца пока не увидим phillips
# обсуждалось http://www.forum.free-x.de/wbb/index.php?page=Thread&postID=24070 выбираем и ввод, дальше по умолчанию до конца
# для ускорения сборки на многоядерных процессорах make с ключём j количество ядер +1 например 2 ядра J3 4 ядра j5
make -j5
make install
reboot
Копируем из архива каталог sc в /usr/local/src
это то что когда то было hg clone http://85.17.209.13:6100/sc
бисс в нём кстати уже поправлен если кому то надо.
cd /usr/local/src/sc
wget http://www.vanbest.org/drupal6/sites/www.vanbest.org/files/vdr-sasc-ng-2.6.38.patch
patch -p1 < vdr-sasc-ng-2.6.38.patch
chmod +x contrib/sasc-ng/configure
chmod +x contrib/sasc-ng/dvbloopback/module/config_dvb.pl
cd /usr/local/src/sc/contrib/sasc-ng/
./configure --dvb-dir=/usr/local/src/s2-liplianin-v35
make
make module
После этого устанавливаем dvbloopback как модуль и запускаем его
rm /lib/modules/`uname -r`/misc/dvbloopback.ko
cd /usr/local/src/sc/contrib/sasc-ng/
cp sasc-ng /usr/bin
cp /usr/local/src/sc/contrib/sasc-ng/sc/PLUGINS/lib/* /usr/lib/
mkdir /lib/modules/`uname -r`/misc
/usr/bin/install dvbloopback.ko /lib/modules/`uname -r`/misc/
depmod
modprobe dvbloopback
Устанавливаем и настраиваем sasc-ng
mkdir /etc/camfiles
cd /usr/local/src/sc/contrib/sasc-ng/
cp sasc-ng /usr/bin/
cp /usr/local/src/sc/contrib/sasc-ng/sc/PLUGINS/lib/* /usr/lib/
Скрипт запуска.
nano /usr/local/bin/runsasc
##################################
#!/bin/bash
# Script to automate running of SASC-NG and Drivers
# Path to SASC-NG binary
SASCPRG="sasc-ng"
# Path to CAM Directory
CAMDIR="/etc/camfiles/"
# 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 2 -o"
OPTIONS="-j 0:1 -l /home/user name/sasd.log --cam-budget --sid-allpid --sid-nocache --cam-dir"
# 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"
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()
{
modprobe dvbloopback num_adapters=$ADAPTERS
sleep 5
}
# Unload all DVBLoopback driver modules loaded in LoadDriver():
function UnloadDriver()
{
rmmod dvbloopback
}
# 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
в параметре OPTIONS указан, кроме всех нужных вещей путь к файлу лога sasc ng. Понадобится для отладки)
Далее устанавливаем необходимые права
chmod 755 /usr/local/bin/runsasc
chmod +x /usr/local/bin/runsasc
###############
nano /etc/init.d/sascd
#################
#! /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
exit 0
Затем опять делаем доступ
chmod +x /etc/init.d/sascd
update-rc.d sascd defaults 21
И напоследок нам необходим еще один конфигурационный файл
nano /etc/default/sascc
с таким содержимым
# /etc/default/sascc
# Default SASC-NG startup config
# Change to 1 to enable sasc-ng's init-script
ENABLED=1
# DVBLoopback Device creation timeout (in seconds)
TIMEOUT=60
Настраиваем под свои сервера
nano /etc/camfiles/cardclient.conf
###############
newcamd:server:port:1/0500/ffff:login:passwd:0102030405060708091011121314
Если используются статические ключи помещаем SoftCam.Key в /etc/camfiles пример для biss ( constant cw ) во вложении для других кодировок в исходниках /sc/examples
После перезагрузки имеем второй виртуальный адаптер который может работать с kaffeine взять можно http://gomel-sat.bz/forums/index.php?showtopic=231&p=596181или http://gomel-sat.bz/forums/index.php?showtopic=231&p=596423 для 64 бит , Mythtv, VLC.
Проверено на debian 7 wheezy 64 бит всё исходники есть во вложении
https://yadi.sk/d/5WQS2kdj34zBr6
при подготовке использованы мемуары http://gomel-sat.bz/forums/index.php?showtopic=231&p=565788 и исправления к ним http://shop.tbsdtv.com/blog/guide-for-using-sasc-ng-to-read-smartcard-on-linux-ubuntu-tbs-card-phoenix-card-reader-tbs3102.html
После обновления ядра достаточно вновь установить пропатченные dvb драйверы
su
cd /usr/local/src/s2-liplianin-v35
make install
reboot
и всё продолжит работать.
Дальше увлёкся ностальгией debian у меня с графической оболочкой Trinity https://wiki.trinitydesktop.org/Debian_Trinity_Repository_Installation_Instructions
это форк kde 3.5 есть в нём и медиаплеер kaffeine-trinity точная копия kaffeine 0.8.8 с обсуждения настройки которого начата эта тема более семи лет назад. Пришлось пакетик пересобрать как водится что бы в лучших традициях заработало vdpau в принципе всё хорошо работает. Правда каналы сканировать несколько неудобно тем не менее по транспордеру отсканировал весь нтв+ с 36 градуса.
channels.dvb.txt
SoftCam.Key.txt