[vdr] HVR-4000, vdr-1.7.2 and v4l-dvb'hg ?

Mika Laitio lamikr at pilppa.org
Fri Jan 2 16:37:55 CET 2009


>> Hmm, the differences in my and your setup are
>> 1) I have also hvr-1300 in my system (for dvb-t)
>> 2) I modified the vdr sources instead of modifying the driver for
>> informing the system from the S2 capabilities (klaus explained also that
>> method in his 1.7.2 announcements). I can re-test this in another way once
>> the 2G_CAP patch is applied to v4l-dvb repository.
>
> I applied Klaus latest patch to v4l-dvb source and changed
> FE_CAN_2ND_GEN_MODULATION to FE_CAN_2G_MODULATION in dvbdevice.c.
>
> Do you have MFE's version of v4l-dvb aswell ?

Yes, I have. I am actually now using 2 day old version from
http://linuxtv.org/hg/v4l-dvb which includes the FE_CAN_2G_MODULATION 
flag support in driver.

And now I am finally able to watch the
HD content with my vdr 1.7.2 and streamdev server plugin by using mplayer 
or vlc as a client with HVR-4000.

BUT there is somewhere bug in the vdr channel tuning because it seems that
if I want to watch dvb-s or dvb-s2 channels, I must first tune to correct 
channel with vdr-1.6.0 or with szap-s2...

I tried to put step by step guide/notes how I got VDR172/h264 KIND of 
working... Maybe you could get it working in similar way...

1) Build and install latest v4l-dvb drivers
2) Checkout s2-szap from http://mercurial.intuxication.org/hg/szap-s2
   (I am using couple of weeks old version), and change INCLUDE line in
   Makefile to point your v4l-dvb driver sources. I have for example
INCLUDE=-I/home/lamikr/dvb/drivers/20081231/v4l-dvb/linux/include
   Then build it.
3) Add hd channel info to szap2 channels.conf With astra-28.2E I can 
use following with szap2channels.conf
arteHD:11361:hC23M5O35S1:S19.2E:22000:6210:6230:0:11120:1:1011:0
4) Test whether tuning works with szap2, I use

[lamikr at tinka szap-s2]$ ./szap-s2 -a 1 -S 2 -c szap2channels.conf arteHD
ERROR: invalid value for parameter ''
reading channels from file 'szap2channels.conf'
zapping to 1 'arteHD':
delivery DVB-S2, modulation 8PSK
sat 0, frequency 11361 MHz H, symbolrate 22000000, coderate 2/3, rolloff 
0.35
vpid 0x1842, apid 0x1856, sid 0x0000
using '/dev/dvb/adapter1/frontend0' and '/dev/dvb/adapter1/demux0'
status 1f | signal d000 | snr 0000 | ber 00000000 | unc 00000000 | 
FE_HAS_LOCK
status 1f | signal c2c0 | snr 8b33 | ber 00000000 | unc 00000000 | 
FE_HAS_LOCK

(I could then try to record and watch from command line by using commands:
# dvbstream -c 1 8192 -o > test3.mpg
# vlc test3.mpg
)

4) Extract vdr-1.7.2 (I have cloned from unofficial vdr git repo)

5) Apply attached 2G modulation support patch for vdr-1.7.2 (due to flag 
name change in official V4L-DVB drivers)
patch -p1 < ../vdr172_v4ldvb_2g_modulation_support.patch

6) Apply h264 support patch for vdr-1.7.2 that has been earlier send to 
mailing list:
patch -p1 < 
../vdr-1.7.2-h264-syncearly-framespersec-audioindexer-fielddetection-speedup.diff

7) download and configure latest dvbstreamdev plugin from cvs
- update plugins/streamdev/streamdevhosts.conf
- update svdrphosts.conf
- update runvdr
(VDRCMD="$VDRPRG --lirc -w 15 -c 
/home/lamikr/dvb/vdr/vdr-git -Pstreamdev-server")

8) Include arteHD info to top of the vdr channels.conf
arte;ARD:10743:hC56M5O0S0:S19.2E:22000:401=2:402=deu,403=fra:404:0:28724:1:1051:0
arte 
HD;ZDFvision:11361:hC23M16O35S1:S19.2E:22000:6210=27:6221=deu,6222=fra:6230:0:11120:1:1011:0

9) Make sure you have tuned to arteHD with szap-s2 and then closed szap 
(see step 4)

10) launch vdr 1.7.2 with runvdr

11) watch arteHD with
vlc http://localhost:3000/TS/2

If I now would like to watch arte instead, I would need to close vdr, 
szap first from command line and then re-launch vdr...

Btw... I now really envy the vdpay/nvidia cpu usage as with 780G 
motherboard I have...

Tasks: 174 total,   3 running, 171 sleeping,   0 stopped,   0 zombie
Cpu(s): 55.4%us,  3.5%sy,  0.5%ni, 40.5%id,  0.0%wa,  0.0%hi,  0.2%si, 
0.0%st
Mem:   1799896k total,  1779300k used,    20596k free,   272416k buffers
Swap:  8185076k total,      176k used,  8184900k free,   728196k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  8866 lamikr    20   0  598m  57m  20m S  108  3.2   0:23.90 vlc
  8854 root      20   0  214m  24m 4460 S    2  1.4   0:01.12 vdr
  5200 lamikr     9 -11  224m 5776 3848 S    2  0.3   1:31.79 pulseaudio

-------------- next part --------------
diff --git a/dvbdevice.c b/dvbdevice.c
index e0b05a1..08dc63f 100644
--- a/dvbdevice.c
+++ b/dvbdevice.c
@@ -32,7 +32,7 @@
 // unpatched driver. However, with an unpatched driver it will not support
 // DVB-S2 hardware. If you have DVB-S2 hardware you need to either patch
 // the driver or modify the line that uses this macro in cDvbDevice::cDvbDevice().
-#define FE_CAN_2ND_GEN_MODULATION 0x10000000
+#define FE_CAN_2G_MODULATION 0x10000000
 
 #define DO_REC_AND_PLAY_ON_PRIMARY_DEVICE 1
 #define DO_MULTIPLE_RECORDINGS 1
@@ -491,7 +491,7 @@ cDvbDevice::cDvbDevice(int n)
   if (fd_frontend >= 0) {
      if (ioctl(fd_frontend, FE_GET_INFO, &frontendInfo) >= 0) {
         switch (frontendInfo.type) {
-          case FE_QPSK: frontendType = (frontendInfo.caps & FE_CAN_2ND_GEN_MODULATION) ? SYS_DVBS2 : SYS_DVBS; break;
+          case FE_QPSK: frontendType = (frontendInfo.caps & FE_CAN_2G_MODULATION) ? SYS_DVBS2 : SYS_DVBS; break;
           case FE_OFDM: frontendType = SYS_DVBT; break;
           case FE_QAM:  frontendType = SYS_DVBC_ANNEX_AC; break;
           case FE_ATSC: frontendType = SYS_ATSC; break;
@@ -505,6 +505,7 @@ cDvbDevice::cDvbDevice(int n)
         if (frontendType == SYS_DVBS2)
            numProvidedSystems++;
         isyslog("device %d provides %s (\"%s\")", CardIndex() + 1, DeliverySystems[frontendType], frontendInfo.name);
+	printf("device %d provides %s (\"%s\")\n", CardIndex() + 1, DeliverySystems[frontendType], frontendInfo.name);
         dvbTuner = new cDvbTuner(fd_frontend, CardIndex(), frontendType);
         }
      }


More information about the vdr mailing list