The Best Streaming Software!
VIVO Rent A Car - Your car rental
Върни се   Digital TV Forums - БЪЛГАРСКИЯТ ФОРУМ ЗА ЦИФРОВА ТЕЛЕВИЗИЯ > ЗА НАЧИНАЕЩИ > Уроци и съвети за начинаещи

Уроци и съвети за начинаещи Споделете своя опит или се научете от опита на другите

Отговори
 
Контрол над темата Търси в тази тема Начин на разглеждане
  #1  
Стар 16-05-2011
Аватара на бебезавър
бебезавър бебезавър не е на линия
мега форумец
 

Дата на присъединяване: Oct 2009
Местоположение: София
Мнения: 373
Благодари: 184
Получил благодарност:
280 пъти в 100 поста
Сваляния: 219
Ъплоуди: 2
По подразбиране Hauppauge WinTV-HVR400 + sasc-ng Ubuntu 10.04

Инсталация на платка Hauppauge със sasc-ng на Убунту сиситема.

1. Инсталираме Ubuntu linux 10.04

2. След инсталацията на линукса той си качва драйвери за този модел платка, но с тях не се компилира правилно sasc-ng, за това инсталираме драйверите както следва:

Код:
apt-get install linux-headers-`uname -r` build-essential subversion mercurial openssl gettext libssl-dev screen libncurses5-dev dialog
cd /usr/local/src
hg clone http://hg.kewl.org/pub/v4l-dvb-20100517/
cd /usr/local/src/v4l-dvb-20100517
make menuconfig
В диалоговия прозорец който ще се появи отиваме на <M> Multimedia support ---> DVB/ATSC adapters ---> FireDTV and FloppyDTV и махаме поддръжката му, понеже така и не можах да го компилирам с поддръжка на FireDTV и FloppyDTV, ако имате желание може да пробвате и да не го премахвате. След което продължаваме:
Код:
make
make install
reboot
Вече имаме компилиран и зареден драйвер за Hauppauge-a, за проверка може да използвате:
Код:
dmesg |grep cx88
3. Инсталиране и компилиране на sasc-ng
Код:
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-dir=/usr/local/src/v4l-dvb-20100517
make
make module
при проблем с компилацията моля променете ред номер 59 на /usr/local/src/sc/contrib/sasc-ng/dvbloopback/module/dvb_loopback.c като сложите подходящата версия на ядрото - за ядро 2.6.32 на ubuntu 10.04 не ми се е налагало.

Продължаваме с инсталацията на sasc-a
Код:
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
4. Ако всичко е минало успешно без грешки трябва да можем да заредим модула:
Код:
modprobe dvbloopback
Проверка дали е зареден можем да направим със:
Код:
lsmod |grep dvbloop
5. Създаване на папките и файловете необходими за sasc-ng
Код:
mkdir /etc/camfiles
cd /usr/local/src/sc/contrib/sasc-ng/
mv sc_files/* /etc/camfiles/
cp sasc-ng /usr/bin/
6. Създаване на стартиращи скриптове:
създаваме файл в /usr/local/bin със име runsasc
Код:
touch /usr/local/bin/runsasc
Във него поставяме следното съдържание:
Код:
#!/bin/bash 

# Script to automate running of SASC-NG and Drivers 

# Driver directory 
DRIVERDIR="/usr/local/src/mythtv.cvs/sasc-ng" 
# 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  --log /var/log/sasc-ng.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
Задаваме подходящите права за файла:
Код:
chmod 755 /usr/local/bin/runsasc
chmod +x /usr/local/bin/runsasc
създаваме следващия файл в директория /etc/init.d/ със име sascd
Код:
touch /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 -f sascd remove
update-rc.d sascd defaults 15
След което се нуждаем само от един последен файл а именно sascc който да се намира в /etc/default
Код:
touch /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
вече всичко е готово и трябва да заработи след рестарт на системата.

С пожелание за спорна работа от автора
__________________
Знанието не ни прави нито по-добри, нито - по-щастливи. Мъдростта е свобода!
vdr: tbs QBOX S2 on Asrock ION 330 vdr, Dreambox 500s, DL-STB-S200 --> Bulsat antena 75E, Triax TD 78 - 39E,42E, Tecatel 100 - 4.8E, 9E, 13E, 16E, 19.2E, 23.5E, 28.2E.
Отговори с цитат
Следните потребители (5) благодарят на бебезавър за този полезен пост
Brian (16-05-2011), thunderstorm6 (16-05-2011), ВЛАДО (16-05-2011), Ламерът (16-05-2011), Хиена (16-05-2011)
  #2  
Стар 16-05-2011
Аватара на Brian
Brian Brian не е на линия
Big Brain Big Pain
 

Дата на присъединяване: Mar 2011
Местоположение: Пловдив
Мнения: 3,703
Благодари: 297
Получил благодарност:
870 пъти в 552 поста
Сваляния: 45
Ъплоуди: 1
По подразбиране

Защо 10.04?
Отговори с цитат
  #3  
Стар 16-05-2011
Аватара на бебезавър
бебезавър бебезавър не е на линия
мега форумец
 

Дата на присъединяване: Oct 2009
Местоположение: София
Мнения: 373
Благодари: 184
Получил благодарност:
280 пъти в 100 поста
Сваляния: 219
Ъплоуди: 2
По подразбиране

защото е LTS и с тази версия съм го правил - не описвам неща които не знам дали ще сработят
__________________
Знанието не ни прави нито по-добри, нито - по-щастливи. Мъдростта е свобода!
vdr: tbs QBOX S2 on Asrock ION 330 vdr, Dreambox 500s, DL-STB-S200 --> Bulsat antena 75E, Triax TD 78 - 39E,42E, Tecatel 100 - 4.8E, 9E, 13E, 16E, 19.2E, 23.5E, 28.2E.
Отговори с цитат
  #4  
Стар 16-05-2011
Аватара на Brian
Brian Brian не е на линия
Big Brain Big Pain
 

Дата на присъединяване: Mar 2011
Местоположение: Пловдив
Мнения: 3,703
Благодари: 297
Получил благодарност:
870 пъти в 552 поста
Сваляния: 45
Ъплоуди: 1
По подразбиране

Ок, затова питах дали имаш нещо предвид за несъвместимост с по-нови, както например спряха подръжка на Х13хх на Ати. Т.е. който иска може да пробва и с 11.04 и гном3
Отговори с цитат
  #5  
Стар 16-05-2011
Аватара на бебезавър
бебезавър бебезавър не е на линия
мега форумец
 

Дата на присъединяване: Oct 2009
Местоположение: София
Мнения: 373
Благодари: 184
Получил благодарност:
280 пъти в 100 поста
Сваляния: 219
Ъплоуди: 2
По подразбиране

Разбира се при желание може и да сподели дали е бил успешен опита с 11.04
__________________
Знанието не ни прави нито по-добри, нито - по-щастливи. Мъдростта е свобода!
vdr: tbs QBOX S2 on Asrock ION 330 vdr, Dreambox 500s, DL-STB-S200 --> Bulsat antena 75E, Triax TD 78 - 39E,42E, Tecatel 100 - 4.8E, 9E, 13E, 16E, 19.2E, 23.5E, 28.2E.
Отговори с цитат
  #6  
Стар 23-05-2011
смд смд не е на линия
изгряващ форумец
 

Дата на присъединяване: Dec 2010
Мнения: 30
Благодари: 4
Получил благодарност:
7 пъти в 5 поста
Сваляния: 146
Ъплоуди: 0
По подразбиране sasc-ng на 11.04

За 11.04 и особенно ако е Х64 трябва да се пачне саска по следния начин: ( иначе след конфигурирането дава грешка заради разликата в кернела който е 2.6.38 )

Код:
cd /usr/local/src/sc
nano 2.6.38-sasc-ng.patch
Пишем пача :
Код:
--- contrib/sasc-ng/dvbloopback/module/dvblb_forward.c    2011-04-25 02:44:10.511089600 +0300
+++ contrib/sasc-ng/dvbloopback/module/dvblb_forward.c    2011-04-24 21:04:17.000000000 +0300
@@ -166,9 +166,9 @@
     struct file *ftmp = find_forwardmap(lbdev, f->private_data);
     if (!ftmp || IS_ERR(ftmp))
         return -EFAULT;
-    if (lbdev->forward_dev->fops &&lbdev->forward_dev->fops->ioctl)
-        return lbdev->forward_dev->fops->ioctl(
-                   ftmp->f_dentry->d_inode, ftmp, cmd, arg);
+    if (lbdev->forward_dev->fops &&lbdev->forward_dev->fops->unlocked_ioctl)
+        return lbdev->forward_dev->fops->unlocked_ioctl(
+                   ftmp, cmd, arg);
     return -EFAULT;
 }
 
--- contrib/sasc-ng/dvbloopback/module/dvb_loopback.c    2011-04-25 02:44:10.511089600 +0300
+++ contrib/sasc-ng/dvbloopback/module/dvb_loopback.c    2011-04-25 00:42:54.234135688 +0300
@@ -118,9 +118,9 @@
 /* This is a copy of dvb_usercopy.  We need to do this because it isn't exported
    by dvbdev
 */
-static int dvblb_usercopy(struct inode *inode, struct file *file,
+static int dvblb_usercopy(struct file *file,
              unsigned int cmd, unsigned long arg,
-             int (*func)(struct inode *inode, struct file *file,
+             int (*func)(struct file *file,
              unsigned int cmd, void *arg))
 {
     char    sbuf[128];
@@ -180,7 +180,7 @@
     }
 
     /* call driver */
-    if ((err = func(inode, file, cmd, parg)) == -ENOIOCTLCMD)
+    if ((err = func(file, cmd, parg)) == -ENOIOCTLCMD)
         err = -EINVAL;
 
     if (err < 0)
@@ -663,7 +663,7 @@
    dvb_generic_ioctl) which is called by dvblb_ioctl for device-0.  It is
    used to forward ioctl commands back to the userspace application
 */
-static int dvblb_looped_ioctl(struct inode *inode, struct file *f,
+static int dvblb_looped_ioctl(struct file *f,
     unsigned int cmd, void *parg)
 {
     int ret;
@@ -692,7 +692,7 @@
     return ret;
 }
 
-static int dvblb_ioctl(struct inode *inode, struct file *f,
+static long dvblb_ioctl(struct file *f,
     unsigned int cmd, unsigned long arg)
 {
     void * parg = (void *)arg;
@@ -723,7 +723,7 @@
         if (lbdev->forward_dev)
             return dvblb_forward_ioctl(lbdev, f, cmd, arg);
 
-        return dvblb_usercopy (inode, f, cmd, arg,
+        return dvblb_usercopy (f, cmd, arg,
                                dvbdev->kernel_ioctl);
     }
     /* This is the userspace control device */
@@ -978,7 +978,7 @@
     .write        = dvblb_write,
     .poll        = dvblb_poll,
     .mmap        = dvblb_mmap,
-    .ioctl        = dvblb_ioctl,
+    .unlocked_ioctl        = dvblb_ioctl,
 };
 
 static struct dvb_device dvbdev_looped = {
@@ -998,7 +998,7 @@
     .write        = dvblb_write,
     .poll        = dvblb_poll,
     .mmap        = dvblb_mmap,
-    .ioctl        = dvblb_ioctl,
+    .unlocked_ioctl        = dvblb_ioctl,
 };
 
 static struct dvb_device dvbdev_userspace = {
--- contrib/sasc-ng/Makefile    2011-04-25 02:44:10.507089818 +0300
+++ contrib/sasc-ng/Makefile    2011-04-25 00:40:31.390323663 +0300
@@ -8,7 +8,7 @@
 
 CC       ?= gcc
 CXX      ?= g++
-CXXFLAGS ?= -Wall -D__user= -Werror 
+CXXFLAGS ?= -Wall -D__user= #-Werror 
 CFLAGS   ?= -Wall -D__user= 
 
 ifdef DVB_DIR
@@ -17,7 +17,7 @@
 endif
 
 DEFINES += -DRELEASE_VERSION=\"$(VERSION)\" -D__KERNEL_STRICT_NAMES
-INCLUDES += -Idvbloopback/module -I/lib/modules/$(shell uname -r)/build/include
+INCLUDES += -Idvbloopback/module -I/usr/include
 LBDIR = dvbloopback/src
 SCDIR = sc/PLUGINS/src/$(SCVER)
 SC_FLAGS = -O2 -fPIC -Wall -Woverloaded-virtual
@@ -57,7 +57,7 @@
 INC_DEPS := $(shell ls $(LBDIR)/*.h) dvbloopback/module/dvbloopback.h
 INC_DEPS_LB := $(shell ls dvblb_plugins/*.h)
 
-LIBS = -lpthread -lcrypto -lcrypt
+LIBS = -lpthread -lcrypto -lcrypt -lv4l1
 
 all: $(TOOL) libscanwrap.so
 
--- contrib/sasc-ng/sc/dvbdevice.cpp    2011-04-25 02:44:10.519089162 +0300
+++ contrib/sasc-ng/sc/dvbdevice.cpp    2011-04-24 21:04:17.000000000 +0300
@@ -10,7 +10,7 @@
 #include "include/vdr/dvbdevice.h"
 #include <errno.h>
 #include <limits.h>
-#include <linux/videodev.h>
+#include <libv4l1-videodev.h>
 #include <linux/dvb/audio.h>
 #include <linux/dvb/dmx.h>
 #include <linux/dvb/frontend.h>
diff -u -r systems/constcw/constcw.c systems/constcw/constcw.c
--- systems/constcw/constcw.c    2011-04-25 02:44:10.567086537 +0300
+++ systems/constcw/constcw.c    2011-04-25 02:39:59.527575519 +0300
@@ -70,7 +70,7 @@
 
 bool cPlainKeyConstCw::Matches(const cEcmInfo *ecm)
 {
-  return ecm->prgId==prgId && ecm->source==source && ecm->transponder==transponder;
+  return ecm->prgId==prgId;
 }
 
 bool cPlainKeyConstCw::Parse(const char *line)
и съответно съхраняваме ( Ctrl + о ) и пачваме:

Код:
patch -p0 <2.6.38-sasc-ng.patch
След което продължаваме инсталацията по обичайния метод.
След проведените от мен безброй тестове обаче трябва да отбележа че ситуацията отива на по зле с пачнат саск и 64бит на новия кернел.

няма разлика в натоварването на процесора , като има минимална разлика в скороста на различните опримизации като за 11.04 (х64) на core2duo беше макс 520 а 9.10 (х86) 480. Другото което се забелязва е лошата работа при паралелна обработка на няколко канала едновременно от един транспондер - примерно за 9.10 - могат да се пуснат примерно 13 едновременно - като ограничението идва само от скоростта на подаване на ключове от кард сървъра , докато при 11.04 с пачнат саск ситуацията е по слаба и нестабилна - с многократни опити успах да подкарам едва 8. Въпреки това резулатите могат да варират в зависимост от конфигурацията...
__________________
TBS6909xxx + Cesbo astra + TVCAS + 4xUT-100C + BU-500 Up converter + 12W QO-100 Amp. + Ubnt AM-2G15-120 = MMDS ефирна ТВ
HackRF + ODR + MKK4027 PreAmp + RA30H2127M1 + GPA170-230 = 10W DAB+ Multiplex

Последно редактирано от смд : 23-05-2011 на 12:36
Отговори с цитат
Следните потребители БЛАГОДАРЯТ на смд за този полезен пост :
бебезавър (23-05-2011)
Sponsored Links
VIVO Rent A Car  Вземи своят Vu+ сега!  SatPlus
Отговори

Съобщения от Devil M
VIVO Rent A Car  

Тагове
1004, hauppauge, sascng, ubuntu, wintvhvr400


Активни потребители разглеждащи тази тема в момента: 1 (0 членове и 1 гости)
 

Подобни теми
Тема Започнал темата Форум Отговори Последно мнение
Hauppauge WinTV-HVR-4000,flycccam и програми toshepernik ДРУГИ 1 17-04-2009 09:38
Hauppauge 1212 HD PVR Ланселот Цифрови САТЕЛИТНИ Приемници [DVB-S, DVB-S2] 1 09-04-2009 11:52


Всички времена са във формат GMT +3. Часът е 21:44.


DTV-BG Powered by vBulletin Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.