Don't know if you're still stuck with this one. Until today I was still using kernel 2.6.35 just in order too keep mythtv with sasc's dvbloopback running.
I came acros this:
http://forum.ubuntu.ru/index.php?PHPSESSID=qg235d6amjde78o1aq9ir209h3&top ic=79331.75
Assuming you've already got an instance of the open-sacs-ng source (like I did), you can skip Step 1.
Step 1; Install open-sasc-ng
Code:
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
Step 2: Go to the source directory where you installed open-sasc-ng, normally if you used the open-sacs-ng tutorial this should be:
Code:
cd /usr/local/src/sc
Step 3: Open you're favorite editor, paste the code below and save the file as "2.6.38-sasc-ng.patch" (without the Qoutes)
I Used:
Code:
gedit 2.6.38-sasc-ng.patch
Past the code below, save and exit you're editor:
Code:
--- 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)
Step 4: patch the open-sasc source
Code:
patch -p0 <2.6.38-sasc-ng.patch
Step 5: Compile the loopback module and install it.
Code:
cd /usr/local/src/sc/contrib/sasc-ng/
./configure
или
./configure --dvb-dir=/<path-to-DVB-driver>
make
make module
mkdir /lib/modules/`uname -r`/misc
/usr/bin/install dvbloopback.ko /lib/modules/`uname -r`/misc/
depmod
For more info about installing and configuring sasc:
http://dolot.kipdola.com/wiki/Instal..._and_compiling
PS: Doing This requires the following dependency's: linux-headers-`uname -r` build-essential subversion mercurial openssl gettext libssl-dev screen libv4l-dev, of witch libv4l-dev seems to be a new one
Install them first:
Code:
sudo apt-get install linux-headers-`uname -r` build-essential subversion mercurial openssl gettext libssl-dev screen libv4l-dev
Last and biggest dependency: SASC requires V4L version 1 witch is no longer part of kernel releases since 2.6.38. So we'll have to find a way to get V4l1 running under 2.6.38 and higher. I'm trying to figure this out right now.