SASC-NG программа, создающая виртуальный адаптер, с которого программы, способные работать с DVB картами для просмотра спутникового телевидения получают уже декодированый сигнал.Такими программами являются Kaffeine, MytchTV, VLC, Mplayer. Первые две из них заслуживают внимания. Sasc-ng может выступать как клиент кардшаринга а так же работать с статическими ключами посредством использования SoftCam.Key
Официальная информация об установке Sasc-ng http://dolot.kipdola.com/wiki/Install_SASC-NG. Однако для современных дистрибутивов , использующих ядра linux выше 2.6.35 приходится прибегать к дополнительным дейтвиям.
Для примера берём дистрибутивы основаные на debian.
Гарантированый способ установки sasc-ng состоит из нескольких этапов. Они достаточно подробно описаны на итальянском форуме http://forum.ubuntu-it.org/viewtopic.php?t=460152
Собираем патченое ядро:
ставим дополнительные пакеты в систему.
sudo apt-get install build-essential bin86 fakeroot kernel-package libncurses5-dev
Получаем сырцы ядра из репозитория вашего дистрибутива будь то debian, ubuntu или linux mint.
sudo apt-get install linux-source
При установке этого пакета в каталоге /usr/src появляется подкаталог с дополнительными файлами(инструментами), для ручной сборки ядра в который в последствии мы и распаковываем исходники того же ядра, что и используется в нашем дистрибутиве. Нам достаточно только наложить патч для сборки sasc-ng и скомпилировать ядро, абсолютно совместимое с нашей системой что очень критично если мы предполагаем использовать проприаретарные драйверы для видеокарт nvidia или ati из родного репозитория дистрибутива. Патченое ядро мы получаем в виде двух deb.пакетов linux-image-generic и linux-headers, этого достаточно что бы при работе дистрибутива на этом ядре что либо собирать из исходных текстов.
В Итальянском мануале упущен как выяснилось один очень важный момент. Например ubuntu имеет свойство "коллекцианировать " в системе несколько версий ядер, что как выяснилось не всегда хорошо и не только из за расхода дискового пространства.
Что бы не загружать вас лишними подробностями скажу только что лучше все лишние ядра и их хедеры или заголовки перед установкой патченого ядра удалить через synaptic и в ручную удалить , например через mc соответствующие им папки в каталогах
/lib/modules/ и /usr/src/ таким образом мы сможем избежать ошибок при установке собраного нами патченого ядра и обеспечить корректную сборку sasc-ng
Получаем права суперпользователя, переходим в каталог с сырцами и распаковываем их
sudo su
cd /usr/src
tar -xjf linux-[версия ядра].tar.bz2
переходим в полученую папку с исходниками
cd /usr/src/linux-[версия ядра]
получаем патч и патчим исходники ядра
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
если операция прошла успешно вывод консоли должен быть
patching file drivers/media/dvb/dvb-core/dvbdev.c
сохраняем параметры ядра используемого в нашем дистрибутиве( если нам нужно подключить дополнительные модули гуглим самостоятельно и через make menuconfig делаем)
если процессор в вашем компьютере имеет несколько ядер выполняем команду, у меня например 4 х ядерный процессор у кого другие соответственно
export CONCURRENCY_LEVEL=4
это значительно ускорит процесс
make-kpkg --rootcmd fakeroot --initrd kernel_image kernel_headers modules_image
тем не менее курим...
Итак если у нас всё получилось успешно наши пакеты собрались и всё лишнее из системы мы убрали, то перехродим к установке новоиспечённого ядра и заголовов к нему
cd /usr/src
ls
вывод покажет нам названия deb.пакетов
ставим их командой
dpkg -i название пакета
начинать нужно с linux-image...
в процессё установки ядро пропишется первым в загрузчике. мы сможем наблюдать в консоли этот судьбоносный момент :D
перезагружаемся
командой
ls -R /dev/dvb
выясняем поддерживается ли наша DVB карта из коробки ( искренне надеюсь что вы и так это знаете) если нет торешаете эту проблему через установку драйверов linux.tv или s2-liplianin-v35 , подгружаете firmvare в общем решаете эту проблему иначе в нашей затее нет не какого смысла в общем мы должны иметь
adapter0 со всеми потрохами.
Если пришлось ставить драйверы ещё раз перезагружаемся
и приступаем ко второму этапу, немного позагадив предварительно систему
sudo apt-get install linux-headers-`uname -r` build-essential subversion mercurial openssl gettext libssl-dev screen libv4l-dev
Второй этап это получение сырцов их небольшая правка и сборка sasc-ng
Собственно говоря править нужно только один файлик и только для того , что бы пользоваться бисс ключами.
Файл находится в исходниках sasc-ng по пути /sc/systems/constcw/ и называется constcw.c
ищем в нём секцию
return ecm->prgId==prgId && ecm->source==source && ecm->transponder==transponder;
и просто обрезаем её до
return ecm->prgId==prgId;
сохраняем изменения и можем приступать к компиляции как в итальянском мануале, но добропорядочные европейцы используют sasc-ng только как компонент для получения ключей с ридера oscam, который так же добропорядочно считывает ключи с официальной карты, находящейся насколько я понял в фениксе, присоединённом к компьютеру через ком порт.....что у нас особо не практикуется
по этому
мы делаем на свой лад
cd /usr/local/src
hg clone http://85.17.209.13:6100/sc
#не забываем править сырцы если нужен бисс
cd /usr/local/src/sc
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 карты
./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
--------------------------
modprobe dvbloopback
--------------------------
Следующий этап. Создаем новый каталог camfiles необходимый для работы плагина и копируем sasc-ng в /usr/bin/
-------------------------------------------
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
------------------------------
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
--------------------------------
Если вы планируете использовать NewCS то создаем конфигурационный файл
cardclient.conf с такими данными
#
# Comment lines can start with # or ;
#
# every client line starts with the client name, followed by some arguments:
# 'hostname' is the name of the server
# 'port' is the port on the server
# 'emm' is a flag to allow EMM transfers to the server
# (0=disabled 1=enabled)
# 'caid' (optional) caid on which this client should work
# 'mask' (optional) mask for caid e.g. caid=1700 mask=FF00 would allow
# anything between 1700 & 17FF.
# Default is 1700 & FF00. If only caid is given mask is FFFF.
# You may give multiple caid/mask values comma separated
# (e.g. 1702,1722,0d0c/ff00).
# 'username' is the login username
# 'password' is the login password
#
# radegast client
#radegast:hostname:port:emm/caid/mask
#
# aroureos client
# 'hexbase'
# 'hexserial' card data for which EMM updates should be send
#aroureos:hostname:port:emm/caid/mask:hexbase:hexserial
#
# camd33 client (tcp protocol)
# 'aeskey' is the AES key (32bytes), disable encryption if missing
#camd33:hostname:port:emm/caid/mask:username:password:aeskey
#
# camd35 client (udp protocol)
#camd35:hostname:port:emm/caid/mask:username:password
#
# cardd client
#cardd:hostname:port:emm/caid/mask:username:password
#
# buffy client
# 'aeskey' is the AES key (32bytes), disable encryption if missing
#buffy:hostname:port:emm:username:password:aeskey
#some examples
#newcamd:192.168.0.10:10000:1/1801/#FF00:mythtv:xxxxxxxx:XXXXXXXXXXXXXXXXXXXXXXXXXXXX
#radegast:192.168.0.10:10001:1/1801/FF00
#
# newcamd client
# 'cfgkey' is the config key (28bytes)
#HERE IS YOUR CServer's DATA
#newcamd:hostname:port:emm/caid/mask:username:password:cfgKey
newcamd:IP-adress:port:0/0500/ffff:user:password:0102030405060708091011121314
# gbox client
#
# NOTE: hostname & port will be ignore. GBOX must be runnning on the local
# machine. For convinience you should choose localhost:8004
#gbox:hostname:port:emm/caid/mask
#newcamd:hostname:port:emm/caid/mask:username:password:cfgKey
#newcamd:localhost:15000:1/0602/ffff:dummy:dummy:0102030405060708091011121314
#radegast:192.168.1.2:10001:0/0100/ffff
----------------------------------------------------------------------------
nano /etc/camfiles/cardclient.conf и вставляем эти данные туда
----------------------------------------------------------------------------
Перегружаемся, запускаем Kaffeine, находим кодированный канал, через какое-то время появляется изображение, идем на следующий канал - тоже ждем несколько секунд, смотрим далее. Лучше сначала пройти все каналы, чтобы данные записались в файл esm.cache. Для более тонкой настройки (priority и ignore list) используйте файл override.conf, который нужно скопировать в /etc/camfiles
Пример такого файла находится в /usr/local/src/sc/examples/override.conf.example
Так же для просмотра каналов в Бисс в директорию /etc/camfiles/ необходимо поместить
SoftCam.Key
подобного содержания, только для ваших спутников
;******************** BISS ***********************
X 2600 0000:2:1111:0017 260839671204384E260839671204384E
X 2600 0000:2:1111:0004 C12345006789AB00C12345006789ab00
X 2600 0000:2:1111:0003 C12345006789AB00C12345006789ab00
X 2600 0000:2:1111:0006 D12345006789AB00D12345006789ab00
X 2600 0000:2:1111:0008 D12345006789AB00D12345006789ab00
X 2600 0000:2:1111:0001 10091932362462BC10091932362462BC
X 2600 0000:2:1111:0012 00000000000001000000000000000100
X 2600 0000:2:1111:0001 0327022C106251C30327022C106251C3
X 2600 0000:2:1111:0001 10091932362462BC10091932362462BC
где перед телом ключа реальный сервис идент SID канала.
Continue !
Для дистрибутива Ubuntu 12.10 способ установки sasc-ng может быть упрощен, без компиляции патченого ядра, однако как пишут он не надёжен
заключается в сборке патченого DVB модуля ядра.Проще говоря не зависимо от того поддерживается ли ваша карта в линукс из коробки или нет беруться сырцы с linux.tv патчатся и устанавливаются DVB драйверы и уже потом устанавливается sasc-ng
Установка патченых DVB драйверов
sudo apt-get install build-essential libdigest-sha1-perl linux-headers-`uname -r` patchutils libproc-processtable-perl git-core
sudo su
mkdir /usr/src/v4l/
cd /usr/src/v4l/
git clone git://linuxtv.org/media_build.git
cd media_build/
make download untar
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 с ключём j количество ядер +1 например 2 ядра J3 4 ядра j5
make -j5
make install
reboot
sasc-ng устанавливается аналогично первому варианту
уже не совсем актуальный архив, который можно использовать для примера находится на предъидущей странице.
SASC-NG программа, создающая виртуальный адаптер, с которого программы, способные работать с DVB картами для просмотра спутникового телевидения получают уже декодированый сигнал.Такими программами являются Kaffeine, MytchTV, VLC, Mplayer. Первые две из них заслуживают внимания. Sasc-ng может выступать как клиент кардшаринга а так же работать с статическими ключами посредством использования SoftCam.Key
Официальная информация об установке Sasc-ng http://dolot.kipdola.com/wiki/Install_SASC-NG. Однако для современных дистрибутивов , использующих ядра linux выше 2.6.35 приходится прибегать к дополнительным дейтвиям.
Для примера берём дистрибутивы основаные на debian.
Гарантированый способ установки sasc-ng состоит из нескольких этапов. Они достаточно подробно описаны на итальянском форуме http://forum.ubuntu-it.org/viewtopic.php?t=460152
Собираем патченое ядро:
ставим дополнительные пакеты в систему.
sudo apt-get install build-essential bin86 fakeroot kernel-package libncurses5-dev
Получаем сырцы ядра из репозитория вашего дистрибутива будь то debian, ubuntu или linux mint.
sudo apt-get install linux-source
При установке этого пакета в каталоге /usr/src появляется подкаталог с дополнительными файлами(инструментами), для ручной сборки ядра в который в последствии мы и распаковываем исходники того же ядра, что и используется в нашем дистрибутиве. Нам достаточно только наложить патч для сборки sasc-ng и скомпилировать ядро, абсолютно совместимое с нашей системой что очень критично если мы предполагаем использовать проприаретарные драйверы для видеокарт nvidia или ati из родного репозитория дистрибутива. Патченое ядро мы получаем в виде двух deb.пакетов linux-image-generic и linux-headers, этого достаточно что бы при работе дистрибутива на этом ядре что либо собирать из исходных текстов.
В Итальянском мануале упущен как выяснилось один очень важный момент. Например ubuntu имеет свойство "коллекцианировать " в системе несколько версий ядер, что как выяснилось не всегда хорошо и не только из за расхода дискового пространства.
Что бы не загружать вас лишними подробностями скажу только что лучше все лишние ядра и их хедеры или заголовки перед установкой патченого ядра удалить через synaptic и в ручную удалить , например через mc соответствующие им папки в каталогах
/lib/modules/ и /usr/src/ таким образом мы сможем избежать ошибок при установке собраного нами патченого ядра и обеспечить корректную сборку sasc-ng
Получаем права суперпользователя, переходим в каталог с сырцами и распаковываем их
sudo su
cd /usr/src
tar -xjf linux-[версия ядра].tar.bz2
переходим в полученую папку с исходниками
cd /usr/src/linux-[версия ядра]
получаем патч и патчим исходники ядра
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
если операция прошла успешно вывод консоли должен быть
patching file drivers/media/dvb/dvb-core/dvbdev.c
сохраняем параметры ядра используемого в нашем дистрибутиве( если нам нужно подключить дополнительные модули гуглим самостоятельно и через make menuconfig делаем)
если процессор в вашем компьютере имеет несколько ядер выполняем команду, у меня например 4 х ядерный процессор у кого другие соответственно
export CONCURRENCY_LEVEL=4
это значительно ускорит процесс
make-kpkg --rootcmd fakeroot --initrd kernel_image kernel_headers modules_image
тем не менее курим...
Итак если у нас всё получилось успешно наши пакеты собрались и всё лишнее из системы мы убрали, то перехродим к установке новоиспечённого ядра и заголовов к нему
cd /usr/src
ls
вывод покажет нам названия deb.пакетов
ставим их командой
dpkg -i название пакета
начинать нужно с linux-image...
в процессё установки ядро пропишется первым в загрузчике. мы сможем наблюдать в консоли этот судьбоносный момент :D
перезагружаемся
командой
ls -R /dev/dvb
выясняем поддерживается ли наша DVB карта из коробки ( искренне надеюсь что вы и так это знаете) если нет торешаете эту проблему через установку драйверов linux.tv или s2-liplianin-v35 , подгружаете firmvare в общем решаете эту проблему иначе в нашей затее нет не какого смысла в общем мы должны иметь
adapter0 со всеми потрохами.
Если пришлось ставить драйверы ещё раз перезагружаемся
и приступаем ко второму этапу, немного позагадив предварительно систему
sudo apt-get install linux-headers-`uname -r` build-essential subversion mercurial openssl gettext libssl-dev screen libv4l-dev
Второй этап это получение сырцов их небольшая правка и сборка sasc-ng
Собственно говоря править нужно только один файлик и только для того , что бы пользоваться бисс ключами.
Файл находится в исходниках sasc-ng по пути /sc/systems/constcw/ и называется constcw.c
ищем в нём секцию
return ecm->prgId==prgId && ecm->source==source && ecm->transponder==transponder;
и просто обрезаем её до
return ecm->prgId==prgId;
сохраняем изменения и можем приступать к компиляции как в итальянском мануале, но добропорядочные европейцы используют sasc-ng только как компонент для получения ключей с ридера oscam, который так же добропорядочно считывает ключи с официальной карты, находящейся насколько я понял в фениксе, присоединённом к компьютеру через ком порт.....что у нас особо не практикуется
по этому
мы делаем на свой лад
cd /usr/local/src
hg clone http://85.17.209.13:6100/sc
#не забываем править сырцы если нужен бисс
cd /usr/local/src/sc
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 карты
./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
--------------------------
modprobe dvbloopback
--------------------------
Следующий этап. Создаем новый каталог camfiles необходимый для работы плагина и копируем sasc-ng в /usr/bin/
-------------------------------------------
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
------------------------------
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
--------------------------------
Если вы планируете использовать NewCS то создаем конфигурационный файл
cardclient.conf с такими данными
#
# Comment lines can start with # or ;
#
# every client line starts with the client name, followed by some arguments:
# 'hostname' is the name of the server
# 'port' is the port on the server
# 'emm' is a flag to allow EMM transfers to the server
# (0=disabled 1=enabled)
# 'caid' (optional) caid on which this client should work
# 'mask' (optional) mask for caid e.g. caid=1700 mask=FF00 would allow
# anything between 1700 & 17FF.
# Default is 1700 & FF00. If only caid is given mask is FFFF.
# You may give multiple caid/mask values comma separated
# (e.g. 1702,1722,0d0c/ff00).
# 'username' is the login username
# 'password' is the login password
#
# radegast client
#radegast:hostname:port:emm/caid/mask
#
# aroureos client
# 'hexbase'
# 'hexserial' card data for which EMM updates should be send
#aroureos:hostname:port:emm/caid/mask:hexbase:hexserial
#
# camd33 client (tcp protocol)
# 'aeskey' is the AES key (32bytes), disable encryption if missing
#camd33:hostname:port:emm/caid/mask:username:password:aeskey
#
# camd35 client (udp protocol)
#camd35:hostname:port:emm/caid/mask:username:password
#
# cardd client
#cardd:hostname:port:emm/caid/mask:username:password
#
# buffy client
# 'aeskey' is the AES key (32bytes), disable encryption if missing
#buffy:hostname:port:emm:username:password:aeskey
#some examples
#newcamd:192.168.0.10:10000:1/1801/#FF00:mythtv:xxxxxxxx:XXXXXXXXXXXXXXXXXXXXXXXXXXXX
#radegast:192.168.0.10:10001:1/1801/FF00
#
# newcamd client
# 'cfgkey' is the config key (28bytes)
#HERE IS YOUR CServer's DATA
#newcamd:hostname:port:emm/caid/mask:username:password:cfgKey
newcamd:IP-adress:port:0/0500/ffff:user:password:0102030405060708091011121314
# gbox client
#
# NOTE: hostname & port will be ignore. GBOX must be runnning on the local
# machine. For convinience you should choose localhost:8004
#gbox:hostname:port:emm/caid/mask
#newcamd:hostname:port:emm/caid/mask:username:password:cfgKey
#newcamd:localhost:15000:1/0602/ffff:dummy:dummy:0102030405060708091011121314
#radegast:192.168.1.2:10001:0/0100/ffff
----------------------------------------------------------------------------
nano /etc/camfiles/cardclient.conf и вставляем эти данные туда
----------------------------------------------------------------------------
Перегружаемся, запускаем Kaffeine, находим кодированный канал, через какое-то время появляется изображение, идем на следующий канал - тоже ждем несколько секунд, смотрим далее. Лучше сначала пройти все каналы, чтобы данные записались в файл esm.cache. Для более тонкой настройки (priority и ignore list) используйте файл override.conf, который нужно скопировать в /etc/camfiles
Пример такого файла находится в /usr/local/src/sc/examples/override.conf.example
Так же для просмотра каналов в Бисс в директорию /etc/camfiles/ необходимо поместить
SoftCam.Key
подобного содержания, только для ваших спутников
;******************** BISS ***********************
X 2600 0000:2:1111:0017 260839671204384E260839671204384E
X 2600 0000:2:1111:0004 C12345006789AB00C12345006789ab00
X 2600 0000:2:1111:0003 C12345006789AB00C12345006789ab00
X 2600 0000:2:1111:0006 D12345006789AB00D12345006789ab00
X 2600 0000:2:1111:0008 D12345006789AB00D12345006789ab00
X 2600 0000:2:1111:0001 10091932362462BC10091932362462BC
X 2600 0000:2:1111:0012 00000000000001000000000000000100
X 2600 0000:2:1111:0001 0327022C106251C30327022C106251C3
X 2600 0000:2:1111:0001 10091932362462BC10091932362462BC
где перед телом ключа реальный сервис идент SID канала.
Continue !
Для дистрибутива Ubuntu 12.10 способ установки sasc-ng может быть упрощен, без компиляции патченого ядра, однако как пишут он не надёжен
заключается в сборке патченого DVB модуля ядра.Проще говоря не зависимо от того поддерживается ли ваша карта в линукс из коробки или нет беруться сырцы с linux.tv патчатся и устанавливаются DVB драйверы и уже потом устанавливается sasc-ng
Установка патченых DVB драйверов
sudo apt-get install build-essential libdigest-sha1-perl linux-headers-`uname -r` patchutils libproc-processtable-perl git-core
sudo su
mkdir /usr/src/v4l/
cd /usr/src/v4l/
git clone git://linuxtv.org/media_build.git
cd media_build/
make download untar
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 с ключём j количество ядер +1 например 2 ядра J3 4 ядра j5
make -j5
make install
reboot
sasc-ng устанавливается аналогично первому варианту