VDR with S2API (update)

Message ID 493BBFCB.7010304@cadsoft.de
State New
Headers

Commit Message

Klaus Schmidinger Dec. 7, 2008, 12:21 p.m. UTC
  Attached is an updated version of the patch to make VDR use
the S2API. Dominik Strasser reported that he got log entries like

  Dec  6 18:39:02 VDR vdr: [4102] ERROR: frontend 0: Das Argument ist ungültig
  Dec  6 18:39:02 VDR kernel: DVB: adapter 0 frontend 1935763502 symbol rate 0 out of range (451875..7230000)

and I now also get

  Dec  7 13:03:26 vdr2 vdr: [3441] ERROR: frontend 0: Invalid argument
  Dec  7 13:03:26 vdr2 kernel: DVB: adapter 0 frontend 0 symbol rate 0 out of range (5000000..45000000)

when trying to tune to a DVB-S2 channel.

The attached patch logs the value put into the DTV_SYMBOL_RATE slot,
and it appears to be fine. Why the value falls back to 0 when tuning
is currently totally unclear (as is the large frontend value in Dominik's
case).

Any help in debugging this would be appreciated.

Note the comment in my initial posting about the patch to the driver required
for detecting DVB-S2 (or modifiy the line using FE_CAN_2ND_GEN_MODULATION in
cDvbDevice::cDvbDevice()).

Klaus
  

Comments

Klaus Schmidinger Dec. 7, 2008, 1:06 p.m. UTC | #1
On 07.12.2008 13:21, Klaus Schmidinger wrote:
> Attached is an updated version of the patch to make VDR use
> the S2API. Dominik Strasser reported that he got log entries like
> 
>   Dec  6 18:39:02 VDR vdr: [4102] ERROR: frontend 0: Das Argument ist ungültig
>   Dec  6 18:39:02 VDR kernel: DVB: adapter 0 frontend 1935763502 symbol rate 0 out of range (451875..7230000)
> 
> and I now also get
> 
>   Dec  7 13:03:26 vdr2 vdr: [3441] ERROR: frontend 0: Invalid argument
>   Dec  7 13:03:26 vdr2 kernel: DVB: adapter 0 frontend 0 symbol rate 0 out of range (5000000..45000000)
> 
> when trying to tune to a DVB-S2 channel.
> 
> The attached patch logs the value put into the DTV_SYMBOL_RATE slot,
> and it appears to be fine. Why the value falls back to 0 when tuning
> is currently totally unclear (as is the large frontend value in Dominik's
> case).
> 
> Any help in debugging this would be appreciated.

Some more info: apparently the problem only happens if a DVB-S2 card
(a TT-budget S2 3200 in my case) is (attempted to be) tuned to a DVB-S2
channel after the driver has been freshly loaded. Once the card has
been tuned to a DVB-S channel, subsequent tuning to DVB-S2 channels works fine.

Now I'm unsure whether this is a VDR bug or a driver bug...

Klaus
  
Alex Betis Dec. 7, 2008, 1:41 p.m. UTC | #2
On Sun, Dec 7, 2008 at 3:06 PM, Klaus Schmidinger <
Klaus.Schmidinger@cadsoft.de> wrote:

> On 07.12.2008 13:21, Klaus Schmidinger wrote:
> > Attached is an updated version of the patch to make VDR use
> > the S2API. Dominik Strasser reported that he got log entries like
> >
> >   Dec  6 18:39:02 VDR vdr: [4102] ERROR: frontend 0: Das Argument ist
> ungültig
> >   Dec  6 18:39:02 VDR kernel: DVB: adapter 0 frontend 1935763502 symbol
> rate 0 out of range (451875..7230000)
> >
> > and I now also get
> >
> >   Dec  7 13:03:26 vdr2 vdr: [3441] ERROR: frontend 0: Invalid argument
> >   Dec  7 13:03:26 vdr2 kernel: DVB: adapter 0 frontend 0 symbol rate 0
> out of range (5000000..45000000)
> >
> > when trying to tune to a DVB-S2 channel.
> >
> > The attached patch logs the value put into the DTV_SYMBOL_RATE slot,
> > and it appears to be fine. Why the value falls back to 0 when tuning
> > is currently totally unclear (as is the large frontend value in Dominik's
> > case).
> >
> > Any help in debugging this would be appreciated.
>
> Some more info: apparently the problem only happens if a DVB-S2 card
> (a TT-budget S2 3200 in my case) is (attempted to be) tuned to a DVB-S2
> channel after the driver has been freshly loaded. Once the card has
> been tuned to a DVB-S channel, subsequent tuning to DVB-S2 channels works
> fine.

That scenario works fine with scan-s2 utility.

>
>
> Now I'm unsure whether this is a VDR bug or a driver bug...

Where is the origin of frontend value? I think its VDR internal and is not
received from the driver...


>
>
> Klaus
>
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
>
  
gimli Dec. 7, 2008, 5:40 p.m. UTC | #3
Hi Klaus,

just one question. Do you also use a budget system ?
If so, how do you watch TV with vdr 1.7.1 and later ;)
since xineliboutput is completly broken with it.

mfg

Edgar (gimli) Hucek

> Attached is an updated version of the patch to make VDR use
> the S2API. Dominik Strasser reported that he got log entries like
>
>   Dec  6 18:39:02 VDR vdr: [4102] ERROR: frontend 0: Das Argument ist
> ungültig
>   Dec  6 18:39:02 VDR kernel: DVB: adapter 0 frontend 1935763502 symbol
> rate 0 out of range (451875..7230000)
>
> and I now also get
>
>   Dec  7 13:03:26 vdr2 vdr: [3441] ERROR: frontend 0: Invalid argument
>   Dec  7 13:03:26 vdr2 kernel: DVB: adapter 0 frontend 0 symbol rate 0 out
> of range (5000000..45000000)
>
> when trying to tune to a DVB-S2 channel.
>
> The attached patch logs the value put into the DTV_SYMBOL_RATE slot,
> and it appears to be fine. Why the value falls back to 0 when tuning
> is currently totally unclear (as is the large frontend value in Dominik's
> case).
>
> Any help in debugging this would be appreciated.
>
> Note the comment in my initial posting about the patch to the driver
> required
> for detecting DVB-S2 (or modifiy the line using FE_CAN_2ND_GEN_MODULATION
> in
> cDvbDevice::cDvbDevice()).
>
> Klaus
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
>
  
Klaus Schmidinger Dec. 7, 2008, 5:43 p.m. UTC | #4
On 07.12.2008 18:40, gimli wrote:
> Hi Klaus,
> 
> just one question. Do you also use a budget system ?
> If so, how do you watch TV with vdr 1.7.1 and later ;)
> since xineliboutput is completly broken with it.

Currently I still have a FF DVB card for replaying, which, in
the long run, will be replaced by an eHD card.

Klaus
  
VDRU VDRU Dec. 8, 2008, 5:03 a.m. UTC | #5
On Sun, Dec 7, 2008 at 9:43 AM, Klaus Schmidinger
<Klaus.Schmidinger@cadsoft.de> wrote:
> On 07.12.2008 18:40, gimli wrote:
>> Hi Klaus,
>>
>> just one question. Do you also use a budget system ?
>> If so, how do you watch TV with vdr 1.7.1 and later ;)
>> since xineliboutput is completly broken with it.
>
> Currently I still have a FF DVB card for replaying, which, in
> the long run, will be replaced by an eHD card.

Just curious why you prefer that setup instead of going the budget
route for the same or less cost?  It's cheap these days to have even
HDTV, especially with VDPAU now.  FF seems to have understandably gone
the way of the dinosaur.
  
Klaus Schmidinger Dec. 8, 2008, 8:37 a.m. UTC | #6
On 08.12.2008 06:03, VDR User wrote:
> On Sun, Dec 7, 2008 at 9:43 AM, Klaus Schmidinger
> <Klaus.Schmidinger@cadsoft.de> wrote:
>> On 07.12.2008 18:40, gimli wrote:
>>> Hi Klaus,
>>>
>>> just one question. Do you also use a budget system ?
>>> If so, how do you watch TV with vdr 1.7.1 and later ;)
>>> since xineliboutput is completly broken with it.
>> Currently I still have a FF DVB card for replaying, which, in
>> the long run, will be replaced by an eHD card.
> 
> Just curious why you prefer that setup instead of going the budget
> route for the same or less cost?

Well, because I already have several of these FF cards, and it's
so easy to set up a VDR with them.

> It's cheap these days to have even
> HDTV, especially with VDPAU now.  FF seems to have understandably gone
> the way of the dinosaur.

I'm pretty sure there are quite a few systems out there using
FF DVB cards. I wonder why you are constantly arguing against
them ;-)

Klaus
  
Joerg Knitter Dec. 8, 2008, 9:04 a.m. UTC | #7
Klaus Schmidinger schrieb:
> On 08.12.2008 06:03, VDR User wrote:
>   
>> Just curious why you prefer that setup instead of going the budget
>> route for the same or less cost?
>>     
>
> Well, because I already have several of these FF cards, and it's
> so easy to set up a VDR with them.
>
>   
>> It's cheap these days to have even
>> HDTV, especially with VDPAU now.  FF seems to have understandably gone
>> the way of the dinosaur.
>>     
>
> I'm pretty sure there are quite a few systems out there using
> FF DVB cards. I wonder why you are constantly arguing against
> them ;-)
>
> Klaus
>   
It´s the same question I wanted to ask but I refused as I thought this 
might be again lead to an endless discussion.

The difference I see: The FF was available for years and delivered a 
near perfect image (at least if you had a FF 1.3-1.6 with RGB out), but 
now, this thing is discontinued and suffers of the limited bandwith 
(still haven´t looked for someone who could be able to modify my card). 
So now, the FF indeed is a dinosaur, especially with an LCD-TV and with 
the patches floating around delivering a synced gfx card output. I still 
have a FF on my own and was satisfied with if for more than 5 years, and 
indeed: it was easy to set up. But with HD, the time for FF in the 
living room will soon be over.

In contrast to the FF, in my opinion, the eHD is already a dinosaur as 
Micronas has stopped producing the chip. I don´t know how many eHDs 
Dream Multimedia has still on stock, but I think the hardware supply is 
much more limited than it was with the FF cards.

But this is not the point: This time I don´t like the focus on this 
special solution, especially as this makes it clear, that VDR will never 
become a media center solution. But we all know: Klaus also never wanted 
this.

After all those years, I don´t want to leave VDR, but as already a lot 
of people mentioned, I am also going to try to set up XBMC and VDR 
side-by-side. And if once XBMC will have a good TV support, I am going 
to switch completely, as my world has expanded to the wishes playing 
back MP3s, DivX, Ogg, MKV, YouTube etc. without any problems because of 
necessary transconding, and then, using a normal gfx card and no limited 
hardware solution.

With kind regards

Joerg Knitter (still a big VDR fan)
  
Helmut Auer Dec. 8, 2008, 9:20 a.m. UTC | #8
> FF seems to have understandably gone the way of the dinosaur.
> 
But the dinosaur is still the best choice to get the best picture quality on a PAL CRT TV !
  
Holger Rusch Dec. 8, 2008, 9:49 a.m. UTC | #9
Hi,

vdr@helmutauer.de schrieb:
>> FF seems to have understandably gone the way of the dinosaur.
> But the dinosaur is still the best choice to get the best picture
> quality on a PAL CRT TV !

But for anybody who wants to use a beamer these FF-cards are full pain 
with there stupid outputs. I (and many others) want DVI/HDMI/Display-Port.

FF will die in a years or two (months?) i guess and vdr has no well 
integrated outputs.

Struggling with xineouput or xineplugin or softdevice is a real pain. 
Same for direct AC3 output on SPDIF.

Some other question:

Is there any movement to files >2GB for the recordings?

VDR-fan, because anything else is even more hassle.
  
Halim Sahin Dec. 8, 2008, 10 a.m. UTC | #10
Hi,
I don't like the hd discusion because we don't have 
any tv's which are build using a well developed standard.
E. G.
You can buy a lcd tv and after two years you can't use it's
hdmi connectiorr of hdmi revision 599,95.0 

hd ready->full-hd/hdmi1.1, 1.2 1.3 .....
I read something about limitations of current hdmi standard so we will 
maybe we get displayport as new solution???


In my opinion we should wait to get a stable well supported standard for 
tv's and the used format like 720I or 1080P ....

BTW. Softdevice/play, vdr-xine and xineliboutput are able to play youtube divx
etc.

Regards
halim
  
Klaus Schmidinger Dec. 8, 2008, 10:03 a.m. UTC | #11
On 08.12.2008 10:49, Holger Rusch wrote:
> Hi,
> 
> vdr@helmutauer.de schrieb:
>>> FF seems to have understandably gone the way of the dinosaur.
>> But the dinosaur is still the best choice to get the best picture
>> quality on a PAL CRT TV !
> 
> But for anybody who wants to use a beamer these FF-cards are full pain 
> with there stupid outputs. I (and many others) want DVI/HDMI/Display-Port.
> 
> FF will die in a years or two (months?) i guess and vdr has no well 
> integrated outputs.

Is there anything in the VDR plugin API that would prevent a plugin
from implementing a suitable output device?

> Struggling with xineouput or xineplugin or softdevice is a real pain. 
> Same for direct AC3 output on SPDIF.
> 
> Some other question:
> 
> Is there any movement to files >2GB for the recordings?

I will most likely change this when going to TS recording format.
In doing so, I'd like to get rid of splitting recordings into separate
files altogether. However, I think there might be people who still
want this feature - any comments?

I won't go for full 64 bit file sizes, though, because I'd like
the index records to still fit into 8 byte. Using 6 byte for the
file index would result in 256 TB for a single recording (or 128 TB
if we avoid 'unsigned'), which I guess should be large enough ;-)

Klaus
  
Artem Makhutov Dec. 8, 2008, 10:13 a.m. UTC | #12
Hi,

On Mon, Dec 08, 2008 at 11:03:45AM +0100, Klaus Schmidinger wrote:
> On 08.12.2008 10:49, Holger Rusch wrote:
> > Hi,
> > 
> > vdr@helmutauer.de schrieb:
> >>> FF seems to have understandably gone the way of the dinosaur.
> >> But the dinosaur is still the best choice to get the best picture
> >> quality on a PAL CRT TV !
> > 
> > But for anybody who wants to use a beamer these FF-cards are full pain 
> > with there stupid outputs. I (and many others) want DVI/HDMI/Display-Port.
> > 
> > FF will die in a years or two (months?) i guess and vdr has no well 
> > integrated outputs.
> 
> Is there anything in the VDR plugin API that would prevent a plugin
> from implementing a suitable output device?
> 
> > Struggling with xineouput or xineplugin or softdevice is a real pain. 
> > Same for direct AC3 output on SPDIF.
> > 
> > Some other question:
> > 
> > Is there any movement to files >2GB for the recordings?
> 
> I will most likely change this when going to TS recording format.
> In doing so, I'd like to get rid of splitting recordings into separate
> files altogether. However, I think there might be people who still
> want this feature - any comments?

I prefer having one single file, as I don't see any need to spit it up.

What happends if VDR restarts, or when the computer gets restarted?
Will it continue writing to the existing file, or will it create a new one?

Regards, Artem
  
Klaus Schmidinger Dec. 8, 2008, 10:16 a.m. UTC | #13
On 08.12.2008 11:13, Artem Makhutov wrote:
> Hi,
> 
> On Mon, Dec 08, 2008 at 11:03:45AM +0100, Klaus Schmidinger wrote:
>> On 08.12.2008 10:49, Holger Rusch wrote:
>>> Hi,
>>>
>>> vdr@helmutauer.de schrieb:
>>>>> FF seems to have understandably gone the way of the dinosaur.
>>>> But the dinosaur is still the best choice to get the best picture
>>>> quality on a PAL CRT TV !
>>> But for anybody who wants to use a beamer these FF-cards are full pain 
>>> with there stupid outputs. I (and many others) want DVI/HDMI/Display-Port.
>>>
>>> FF will die in a years or two (months?) i guess and vdr has no well 
>>> integrated outputs.
>> Is there anything in the VDR plugin API that would prevent a plugin
>> from implementing a suitable output device?
>>
>>> Struggling with xineouput or xineplugin or softdevice is a real pain. 
>>> Same for direct AC3 output on SPDIF.
>>>
>>> Some other question:
>>>
>>> Is there any movement to files >2GB for the recordings?
>> I will most likely change this when going to TS recording format.
>> In doing so, I'd like to get rid of splitting recordings into separate
>> files altogether. However, I think there might be people who still
>> want this feature - any comments?
> 
> I prefer having one single file, as I don't see any need to spit it up.
> 
> What happends if VDR restarts, or when the computer gets restarted?
> Will it continue writing to the existing file, or will it create a new one?

Currently it creates a new one, but I guess this should be changed to
continue an existing file (if the file size limit hasn't been exceeded, yet).
If file splitting is removed, then it would of course continue the (one and
only) existing file.

Klaus
  
Theunis Potgieter Dec. 8, 2008, 10:19 a.m. UTC | #14
On 08/12/2008, Klaus Schmidinger <Klaus.Schmidinger@cadsoft.de> wrote:
>
> Currently it creates a new one, but I guess this should be changed to
>  continue an existing file (if the file size limit hasn't been exceeded, yet).
>  If file splitting is removed, then it would of course continue the (one and
>  only) existing file.
>
>
I prefer 2GB files, which fits on FAT32 partitions, usually associated
with USB removable drives. I guess one can then just increase the file
size before it creates a new file?

>  Klaus
>
>
  
Holger Rusch Dec. 8, 2008, 10:20 a.m. UTC | #15
Hi,

Klaus Schmidinger schrieb:
>> FF will die in a years or two (months?) i guess and vdr has no well 
>> integrated outputs.
> Is there anything in the VDR plugin API that would prevent a plugin
> from implementing a suitable output device?

I guess not, but there are (from my view as user with knowladge how to 
compile and to fix compile-dependancies) it is (as i told) a real pain 
to get the things going.

And yes this is not a problem of vdr.

The level to get everything going is high. ac3directout, softdevice, 
ffmpeg, xv-xserver, ... On the other side you pick an evil-windows 
system, and the output of the media data simple and easy.

It is a linux/system and not vdr problem, which does the recording 
really nice and good!
  
Artem Makhutov Dec. 8, 2008, 10:40 a.m. UTC | #16
Hi,

On Mon, Dec 08, 2008 at 12:19:24PM +0200, Theunis Potgieter wrote:
> On 08/12/2008, Klaus Schmidinger <Klaus.Schmidinger@cadsoft.de> wrote:
> >
> > Currently it creates a new one, but I guess this should be changed to
> >  continue an existing file (if the file size limit hasn't been exceeded, yet).
> >  If file splitting is removed, then it would of course continue the (one and
> >  only) existing file.
> >
> >
> I prefer 2GB files, which fits on FAT32 partitions, usually associated
> with USB removable drives. I guess one can then just increase the file
> size before it creates a new file?

FAT32 can handle up to 4GB files.

I think it would be nice to have a user setting for it. So if you set split at 1TB,
there will be just one big file and others can set it to 4GB - 1Byte to fit on the usb flash.

Regards, Artem
  
Jochen Heuer Dec. 8, 2008, 10:54 a.m. UTC | #17
On Mon, Dec 08, 2008 at 11:03:45AM +0100, Klaus Schmidinger wrote:
> > Is there any movement to files >2GB for the recordings?
> 
> I will most likely change this when going to TS recording format.
> In doing so, I'd like to get rid of splitting recordings into separate
> files altogether. However, I think there might be people who still
> want this feature - any comments?

I definately want it! I use the hardlink cutter patch because otherwise cutting
is really slow because of the copy involved. Going to HD it might even get
worse if one movie is e.g. 10gb large and to cut out the commercials 9gb have
to be copied. With hardlink cutter I use 100MB file sizes and cutting is almost
instant because only the files with the cut are copied/cutted. All the other
files remain untouched!

Best regards,

   Jogi
  
Manu Abraham Dec. 8, 2008, 11:05 a.m. UTC | #18
> FF seems to have understandably gone the way of the dinosaur.


It has been true for the older FF cards, but there might be a 
possible new generation/revolution of FF cards, though it was 
originally considered expensive sometime back.


Other than for the FF cards, there are cards (not in retail yet, 
prototypes right now) which can do Bi-directional DMA to the 
card for descrambling of the recorded TS using the CAM. Don't 
know how soon these cards with Bi-directional DMA similar to the 
Ethernet cards would appear and even if so, might be a while till 
a driver for the same supports such a feature.

(Right now can't say anything more than this, stated this much, 
so that: if the development can go in a direction similar to what 
hardware appears)

For such cards, a TS format (as broadcast) for recording would be 
more appealing as a starting point if they were to appear. 

It might be a bit more time, to know the actual status, but the TS 
feature might be a still important feature, if that were to happen.

Regards,
Manu
  
Morfsta Dec. 8, 2008, 11:34 a.m. UTC | #19
On Mon, Dec 8, 2008 at 11:05 AM, Manu Abraham <abraham.manu@gmail.com> wrote:
> It might be a bit more time, to know the actual status, but the TS
> feature might be a still important feature, if that were to happen.

I am an eHD user and I'm hoping that the TS feature might improve
things as currently I can't watch BBCHD with my eHD because of
problems with the way they are broadcasting the PES ID for the AC3
stream. Also, there is a problem when there is a slight breakup in the
stream - the picture is unwatchable till changing the channel.
Apparently TS will address this. Reel's own implementation of VDR
already used TS and they say it is fixed in there, but it is not
currently fixed in the vanilla version of VDR.

Also, I'm hoping it might improve areas such as seeking and fast
forward/rewind which is currently poor using the eHD - there is bad
lag and it is not sensitive enough for pressing forward/back/play etc.

Any idea when TS will be implemented? Its been talked about for a long
time now... :-(
  
Klaus Schmidinger Dec. 8, 2008, 12:02 p.m. UTC | #20
On 08.12.2008 12:34, Morfsta wrote:
> ...
> Any idea when TS will be implemented? Its been talked about for a long
> time now... :-(

It's pretty much the next thing on my list, once the S2API switch
is done.

Klaus
  
Nicolas Huillard Dec. 8, 2008, 2:36 p.m. UTC | #21
Jochen Heuer a écrit :
> On Mon, Dec 08, 2008 at 11:03:45AM +0100, Klaus Schmidinger wrote:
>>> Is there any movement to files >2GB for the recordings?
>> I will most likely change this when going to TS recording format.
>> In doing so, I'd like to get rid of splitting recordings into separate
>> files altogether. However, I think there might be people who still
>> want this feature - any comments?
> 
> I definately want it! I use the hardlink cutter patch because otherwise cutting
> is really slow because of the copy involved. Going to HD it might even get
> worse if one movie is e.g. 10gb large and to cut out the commercials 9gb have
> to be copied. With hardlink cutter I use 100MB file sizes and cutting is almost
> instant because only the files with the cut are copied/cutted. All the other
> files remain untouched!

I was about to bring this very same reason to keep multiple files.
With the increase in recording sizes, it would even be a good thing to 
add this patch in the VDR core.

On the other hand, with the increase of storage availability, I'd be 
satisfied with just leaving the file(s) uncut, and add in the core the 
possibility to watch a recording continuously by skipping the cut marks 
(I think there is a patch or plugin for this).
  
Alex Betis Dec. 8, 2008, 3:34 p.m. UTC | #22
On Mon, Dec 8, 2008 at 12:03 PM, Klaus Schmidinger <
Klaus.Schmidinger@cadsoft.de> wrote:

> > Is there any movement to files >2GB for the recordings?
> I will most likely change this when going to TS recording format.
> In doing so, I'd like to get rid of splitting recordings into separate
> files altogether. However, I think there might be people who still
> want this feature - any comments?

Larger files - more possibilities the whole recording will be corrupted.
Small parts will allow to recover at least some parts of it.
It will also create more fragmentation in the file system.

Klaus, I've asked about the size of recording in TS format that you probably
missed (or ignored :)).
Will there be more overhead compared to currently recorded format?

As far as I know TS might contain several streams of a transponder. Will VDR
strip other channels from the stream and record only needed data?

Thanks.
  
Klaus Schmidinger Dec. 8, 2008, 4:47 p.m. UTC | #23
On 08.12.2008 16:34, Alex Betis wrote:
> ...
> Klaus, I've asked about the size of recording in TS format that you
> probably missed (or ignored :)).
> Will there be more overhead compared to currently recorded format?

There may be a small overhead, but with today's huge disks this should
be negligable.

> As far as I know TS might contain several streams of a transponder. Will
> VDR strip other channels from the stream and record only needed data?

It will record the same PIDs as now, only what belongs to the recorded
programme.

Klaus
  
VDRU VDRU Dec. 8, 2008, 6:19 p.m. UTC | #24
Just some small comments..

I don't think I argue against FF (btw, my main vdr box has two Nexus-s
in it), more along the lines of argue for other/better options of the
current times.  Sure, FF was a great choice for it's day but that day
has moved on in my opinion.  Maybe it was never intended that VDR
become a real media center but clearly there's a big need for it more
& more every day.  I would take it as a compliment that people's first
choice is that VDR becomes an up-to-date solution for tv/media!

As I understand it, there will be at some point a new FF but the price
will be out-of-reach for the average user.  When the option becomes
spend money on a single FF card you can use with an old piece of junk
pc, or spend the same money on an updated pc with far more capability
then the solution is clear... For my money anyways.

Believe me, a lot of people were happy to hear that VDR was _finally_
going to support things like hdtv/h264, mpeg-ts recordings, etc.
because it means there's light at the end of the tunnel and we might
not be forced away from VDR afterall.  Even if the wait has been
painfully slow.  I'm sure all of us would prefer VDR to have a bright
future instead of already be past it's prime.

In a way the whole thing of bringing VDR to current/future needs
reminds me of my grandmother..  She's a writer and insisted on using
an old crappy word processor.  She turned her nose at the idea of
replacing it with a computer even if it was a far more capable option.
 Eventually she was convinced to give the computer a try and has since
never looked back.

Ok, carry on.  ;)
  
VDRU VDRU Dec. 8, 2008, 6:28 p.m. UTC | #25
On Mon, Dec 8, 2008 at 2:00 AM, Halim Sahin <halim.sahin@t-online.de> wrote:
> Hi,
> I don't like the hd discusion because we don't have
> any tv's which are build using a well developed standard.
> E. G.
> You can buy a lcd tv and after two years you can't use it's
> hdmi connectiorr of hdmi revision 599,95.0

I personally have many products with HDMI and have never experience
any incompatibilities.  They exist but certainly don't seem to be
common.

> hd ready->full-hd/hdmi1.1, 1.2 1.3 .....
> I read something about limitations of current hdmi standard so we will
> maybe we get displayport as new solution???

Don't know anything about that but I have no problems so no reason to
look.  I have no problem up to the max my 60" tv handles which is
1080P.

> In my opinion we should wait to get a stable well supported standard for
> tv's and the used format like 720I or 1080P ....

The problem I have with this way of thinking is that it completely
ignores all the people who've already invested in new equipment.  For
example, HDMI is here to stay and it's readily available in countless
products so do you really think the best solution is to ignore it
until something better comes along?  That makes no sense to me
what-so-ever.  If you want to hold out for something better then
you'll always be outdated and always be holding out since something
better is always coming.  Support what's available today and people
will be happy.
  
Udo Richter Dec. 8, 2008, 7:56 p.m. UTC | #26
Klaus Schmidinger wrote:
>> Is there any movement to files >2GB for the recordings?
> 
> I will most likely change this when going to TS recording format.
> In doing so, I'd like to get rid of splitting recordings into separate
> files altogether. However, I think there might be people who still
> want this feature - any comments?

Pretty much said already: I really don't want to miss hard link cutter 
any more, and I frequently use my (FAT32) USB-HDD as portable recording 
media. I've even considered offering the hard link cutter for VDR 
integration once the TS recording has settled. Going beyond 2TB however 
is a good idea in any case.


> I won't go for full 64 bit file sizes, though, because I'd like
> the index records to still fit into 8 byte. Using 6 byte for the
> file index would result in 256 TB for a single recording (or 128 TB
> if we avoid 'unsigned'), which I guess should be large enough ;-)

I would prefer going the other direction, having more than 255.vdr 
files. Well, 8 bytes should be enough for everyone. ;)


While we're at doing incompatible changes to the recording format:

Two things bug me about the folder structure. First, the two-level 
directory structure. A single level makes IMHO more sense, and reduces 
the number of folders to scan by half:
/video/folder/recordingname.YYYY-MM-DD.HH.MM.PP.LL.rec/
-or-
/video/folder/YYYY-MM-DD.HH.MM.PP.LL.recordingname.rec/

Sure, the old way groups recordings of same name, but only if no episode 
title is used. And things get really confusing if a recording and a 
folder share the name. And if two recordings share a name, its a lot 
easier to rename just one of them.

Second: Priority and Lifetime of a recording IMHO don't belong to the 
name part. This could easily fit into the info.vdr file instead. Or does 
it make sense to have the same recording with different lifetime or 
priority in separate folders?


Well, just some of my thoughts. In the end, it has worked well in the 
past too...


Cheers,

Udo
  
Halim Sahin Dec. 8, 2008, 7:57 p.m. UTC | #27
Hi,
On Mo, Dez 08, 2008 at 10:28:30 -0800, VDR User wrote:
V> On Mon, Dec 8, 2008 at 2:00 AM, Halim Sahin <halim.sahin@t-online.de> wrote:
> > Hi,
> > I don't like the hd discusion because we don't have
> > any tv's which are build using a well developed standard.
> > E. G.
> > You can buy a lcd tv and after two years you can't use it's
> > hdmi connectiorr of hdmi revision 599,95.0
> 
> I personally have many products with HDMI and have never experience
> any incompatibilities.  They exist but certainly don't seem to be
> common.
> 
> > hd ready->full-hd/hdmi1.1, 1.2 1.3 .....
> > I read something about limitations of current hdmi standard so we will
> > maybe we get displayport as new solution???
> 
> Don't know anything about that but I have no problems so no reason to
> look.  I have no problem up to the max my 60" tv handles which is
> 1080P.
> 
> > In my opinion we should wait to get a stable well supported standard for
> > tv's and the used format like 720I or 1080P ....
 
> The problem I have with this way of thinking is that it completely
> ignores all the people who've already invested in new equipment.  For
> example, HDMI is here to stay and it's readily available in countless
> products so do you really think the best solution is to ignore it
> until something better comes along?  That makes no sense to me
> what-so-ever.  If you want to hold out for something better then
> you'll always be outdated and always be holding out since something
> better is always coming.  Support what's available today and people
> will be happy.

It makes no sense to me supporting  something
which can't be used with hdtv stuff in one year!
This wastes development time for non working and almost outdated stuff.
Doing h264 decoding in software isn't praticable.
I see the problems regarding the EHD from reel.
Micronas doesn't develop afaik this stuff any more and paying allmost 200 EUR for 
a decoder card hmm ???????
My favourite solution will be decoding h264 with a strong gpu.
Maybe vdpau?

Just my 2 cents.
halim
  
Artur Skawina Dec. 8, 2008, 8:40 p.m. UTC | #28
Udo Richter wrote:
> Second: Priority and Lifetime of a recording IMHO don't belong to the 
> name part. This could easily fit into the info.vdr file instead. Or does 
> it make sense to have the same recording with different lifetime or 
> priority in separate folders?

No and it actually causes problems; when you edit a currently active timer
and eg lower the prio, the recording continues, but the next time it's restarted 
it is treated as a different one. Also, should vdr decide to do an emergency restart
for whatever reason you end up with two recordings instead of one.

artur
  
Mika Laitio Dec. 8, 2008, 10:57 p.m. UTC | #29
> But for anybody who wants to use a beamer these FF-cards are full pain
> with there stupid outputs. I (and many others) want DVI/HDMI/Display-Port.

And I want beamer that has a network card and can download and show the
content downloaded from vdr server. I don't know whether they 
could connect to streamdev-server or xineliboutput server plugins.

> Struggling with xineouput or xineplugin or softdevice is a real pain.
> Same for direct AC3 output on SPDIF.

I btw. played in this evening with N810 and checked whether the device was 
powerful enough for connecting to VDR and showing tv.
It was as the compination of streamdev server on vdr and mplayer on N810 
worked really well over wlan with following command on N810.

mplayer http://<my-vdr-server>:3000/PES/<channel-number>

With vdr-xine I was not yet as lucky, I build the xine-libs and vdr-sxfe 
with scratchbox but sofar at least Xv or xshm video outputs failed to 
work. I will need to investigate this furher...

Mika
  
Mika Laitio Dec. 8, 2008, 11:04 p.m. UTC | #30
> BTW. Softdevice/play, vdr-xine and xineliboutput are able to play youtube divx
> etc.

Is there btw any vdr-plugin for browsing you tupe content (like most 
watched, movie trailers, etc...) and playing them.

Another nice plugin would be a something where you could select some of 
your recordings and then say that "compress these to divx or 
dirac with these resolutions (Some recordings I would propably want to 
produce with 1 shot for original size , N810 screen size and 320x200 ipaq 
screen size.

Mika
  
VDRU VDRU Dec. 8, 2008, 11:13 p.m. UTC | #31
On Mon, Dec 8, 2008 at 11:57 AM, Halim Sahin <halim.sahin@t-online.de> wrote:
> It makes no sense to me supporting  something
> which can't be used with hdtv stuff in one year!

HDMI isn't going anywhere any time soon.  Neither is h264, or anything
else so can you give us some examples of things you think won't be
usable with HDTV in a year?

> This wastes development time for non working and almost outdated stuff.

I don't think you'll find many people who agree that adding support
for present and future needs, like h264, is a waste of development
time.

> Doing h264 decoding in software isn't praticable.

I completely disagree.  You can build (or simply update) a box now at
little cost which can provide this capability.  If you don't believe
me just ask all the people already doing it in software who didn't
rely on something like the eHD!

> I see the problems regarding the EHD from reel.

Me too, and one of the biggest of them being that it's already been EOL'ed!

> Micronas doesn't develop afaik this stuff any more and paying allmost 200 EUR for
> a decoder card hmm ???????

For $200, I'd rather upgrade my cpu or video card and have money left
in my pocket!

> My favourite solution will be decoding h264 with a strong gpu.
> Maybe vdpau?

Yes!  VDPAU has been giving people great results putting the cpu
requirements very low!  And the best thing is you can get a VDPAU'able
card for cheap!  In my opinion this solution is perfect for people who
want HDTV at a cheap price and aren't ready to ditch their old crappy
cpu.
  
Halim Sahin Dec. 9, 2008, 12:31 a.m. UTC | #32
Hi,
search for webvideo plugin.
It works for me!


On Di, Dez 09, 2008 at 01:04:58 +0200, Mika Laitio wrote:
> > BTW. Softdevice/play, vdr-xine and xineliboutput are able to play youtube divx
> > etc.
> 
> Is there btw any vdr-plugin for browsing you tupe content (like most 
> watched, movie trailers, etc...) and playing them.
> 
> Another nice plugin would be a something where you could select some of 
> your recordings and then say that "compress these to divx or 
> dirac with these resolutions (Some recordings I would propably want to 
> produce with 1 shot for original size , N810 screen size and 320x200 ipaq 
> screen size.
> 
> Mika
> 
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Halim Sahin
E-Mail:				
halim.sahin (at) t-online.de
  
Pertti Kosunen Dec. 9, 2008, 12:07 p.m. UTC | #33
Halim Sahin wrote:
> You can buy a lcd tv and after two years you can't use it's
> hdmi connectiorr of hdmi revision 599,95.0 
> 
> hd ready->full-hd/hdmi1.1, 1.2 1.3 .....
> I read something about limitations of current hdmi standard so we will 
> maybe we get displayport as new solution???

This has (almost) nothing to do with software. HDMI's are backward 
compatible so you should always get at least some size of picture and 
basic PCM sound.
  
Hanno Zulla Dec. 9, 2008, 4:22 p.m. UTC | #34
Hi,

> I'm pretty sure there are quite a few systems out there using
> FF DVB cards. I wonder why you are constantly arguing against
> them ;-)

I own an FF card for two reasons only: It offers better video quality on
a CRT TV and vdr (1.6) prefers it.

There are a few things to dislike about FF cards these days. To mention
just a few:

- expensive
- big! (a smaller vdr box would be nice)
- problems with QAM 256
- bandwidth problems (see Full TS Mod)


Not too long from now, I want to replace the CRT TV and with it, one of
my two reasons to use a FF card will be gone.

So yeah, it'd be nice to see vdr moving away from FF cards or
specialized hardware such as the eHD.

A generic (modern) graphics card should be enough and it should be
easier to setup for vdr.

Thanks,

Hanno
  
Klaus Schmidinger Dec. 9, 2008, 4:38 p.m. UTC | #35
On 09.12.2008 17:22, Hanno Zulla wrote:
> Hi,
> 
>> I'm pretty sure there are quite a few systems out there using
>> FF DVB cards. I wonder why you are constantly arguing against
>> them ;-)
> 
> I own an FF card for two reasons only: It offers better video quality on
> a CRT TV and vdr (1.6) prefers it.
> 
> There are a few things to dislike about FF cards these days. To mention
> just a few:
> 
> - expensive
> - big! (a smaller vdr box would be nice)
> - problems with QAM 256
> - bandwidth problems (see Full TS Mod)
> 
> 
> Not too long from now, I want to replace the CRT TV and with it, one of
> my two reasons to use a FF card will be gone.
> 
> So yeah, it'd be nice to see vdr moving away from FF cards or
> specialized hardware such as the eHD.
> 
> A generic (modern) graphics card should be enough and it should be
> easier to setup for vdr.

Why don't you just use such a graphics card then?
Of course you'll need a plugin that implements a proper cDevice
for it, but that has nothing to do with VDR itself...

I'll probably move cDvbDevice into a separate plugin in the process
of switching to S2API, but that won't by any means mean that VDR
"moves away from FF cards". You can already use any output device you
like, provided there's a plugin for it.

Klaus
  
Karl Glatz Dec. 9, 2008, 6:31 p.m. UTC | #36
2008/12/9 Klaus Schmidinger <Klaus.Schmidinger@cadsoft.de>

> On 09.12.2008 17:22, Hanno Zulla wrote:
> > Hi,
> >
> >> I'm pretty sure there are quite a few systems out there using
> >> FF DVB cards. I wonder why you are constantly arguing against
> >> them ;-)
> >
> > I own an FF card for two reasons only: It offers better video quality on
> > a CRT TV and vdr (1.6) prefers it.
> >
> > There are a few things to dislike about FF cards these days. To mention
> > just a few:
> >
> > - expensive
> > - big! (a smaller vdr box would be nice)
> > - problems with QAM 256
> > - bandwidth problems (see Full TS Mod)
> >
> >
> > Not too long from now, I want to replace the CRT TV and with it, one of
> > my two reasons to use a FF card will be gone.
> >
> > So yeah, it'd be nice to see vdr moving away from FF cards or
> > specialized hardware such as the eHD.
> >
> > A generic (modern) graphics card should be enough and it should be
> > easier to setup for vdr.
>
> Why don't you just use such a graphics card then?
> Of course you'll need a plugin that implements a proper cDevice
> for it, but that has nothing to do with VDR itself...
>
> I'll probably move cDvbDevice into a separate plugin in the process
> of switching to S2API, but that won't by any means mean that VDR
> "moves away from FF cards". You can already use any output device you
> like, provided there's a plugin for it.


Of couse you can, either with xineliboutput, xine-vdr or softdevice.
But the disadvantages are clear: Modern GPUs support more than the OSD
provided by VDR (even older gpus do that).
So none of these Output-Plugins will face the real problem: The OSD is
(mostly) limited to work with FF cards.
Many problems occour if you plaing a .avi file with xineliboutput, which has
a lower res than the TV - the OSD gets stretched and is nearly unreadable.
But thats only one of the problems with the OSD - its OK for TV, but it
could be mutch better.

Many concepts of todays Media Centers are just nice.
Name it: XMBC, Elisa, WMC, AppleTV; Some proof-of-concepts as Entertainer
(clutter + python), Gloss (clutter mythtv frontend), kaffeine-gl (very
experimental in kde4 branch).
Not only the effects are nice, also the concepts of using it (xmbc has
support for wiimote and such devices) etc.

But when it comes to TV Watching and Recording and so on, there is NO better
solotion than the VDR. And this is really your fault ;-) (and the
vdr-community)

Even if you don't like such interfaces, they are the future.
I think VDR should be modular enough to implement such a Frontend/Output (is
it a OSD?). AFAIK this is not possible in the current state.

Just my opinion.


Karl
  
Goga777 Dec. 9, 2008, 6:40 p.m. UTC | #37
On Mon, Dec 8, 2008 at 11:57 AM, Halim Sahin <halim.sahin@t-online.de> wrote:
> > It makes no sense to me supporting  something
> > which can't be used with hdtv stuff in one year!
> 
> HDMI isn't going anywhere any time soon.  Neither is h264, or anything
> else so can you give us some examples of things you think won't be
> usable with HDTV in a year?

btw - Using HDMI Audio/Video On Linux
http://www.phoronix.com/scan.php?page=article&item=linux_hdmi&num=1

Goga
  
Udo Richter Dec. 9, 2008, 9:57 p.m. UTC | #38
Karl Glatz wrote:
> But the disadvantages are clear: Modern GPUs support more than the OSD 
> provided by VDR (even older gpus do that).
> So none of these Output-Plugins will face the real problem: The OSD is 
> (mostly) limited to work with FF cards.
> 
> [...]
> 
> Even if you don't like such interfaces, they are the future.
> I think VDR should be modular enough to implement such a Frontend/Output 
> (is it a OSD?). AFAIK this is not possible in the current state.

The VDR 1.7.x development line has already seen some deep limitations of 
VDR going away, or will soon. And even more groundbreaking changes are 
already on the agenda. Together with HD devices, the SD limited OSD 
structures will surely have to change too. So just be patient, there's 
lots of change ahead, but: Important things first!

Cheers,

Udo
  
Hanno Zulla Dec. 10, 2008, 2:32 p.m. UTC | #39
Hi,

> Why don't you just use such a graphics card then?

You're right. After my previous message in this thread, I updated my vdr
box yesterday, only to find FF output not working properly (once again). [*]

Now I'm considering the built-in graphics card as an alternative output,
hoping that it works better.

Regards,

Hanno

[*] Right now, another strange behaviour:
http://www.linuxtv.org/pipermail/vdr/2008-December/018750.html
  
Nicolas Huillard Dec. 11, 2008, 8:55 a.m. UTC | #40
Karl Glatz a écrit :
> Of couse you can, either with xineliboutput, xine-vdr or softdevice.
> But the disadvantages are clear: Modern GPUs support more than the OSD
> provided by VDR (even older gpus do that).
> So none of these Output-Plugins will face the real problem: The OSD is
> (mostly) limited to work with FF cards.
> Many problems occour if you plaing a .avi file with xineliboutput, which has
> a lower res than the TV - the OSD gets stretched and is nearly unreadable.
> But thats only one of the problems with the OSD - its OK for TV, but it
> could be mutch better.

Softdevice can already do a clean transparent OSD, independent of the 
video resolution, using hardware blending. Xineliboutput too.
The dirty software transparency is an output problem (specially a Xine 
architecture problem).
OSD is really clean on a cheap CLE266.

I think the only OSD limitations in the core VDR are :
* size of the OSD : pixel width/height
* a single OSD per VDR instance
I specially like the way the OSD is treated : an overlay over the live 
video.
VDR limitations will go away with current improvements. OSD on recent 
graphic cards will also improve as hardware video decoding is 
implemented at the driver level. For instance, the HUD OSD display in 
xineliboutput requires a compositing window manager, really new 
hardware, X, etc. etc. This is absurdly complex, when you know that 
DirectFB can do that since many years on really cheap hardware, with 
much less code. Xine's XXMC can also do that for free.

KISS has always been VDR moto. I'm waiting for the rest of the display 
chain to downgrade to the same level of simplicity, then I'll switch to HD.
BTW : I never owner a FF card, and I'm perfectly happy with it. Hardware 
decoding wih a software device plugin has always been OK for me (say, 
since 2004).
  
Klaus Schmidinger Dec. 13, 2008, 11:24 a.m. UTC | #41
On 07.12.2008 14:41, Alex Betis wrote:
> On Sun, Dec 7, 2008 at 3:06 PM, Klaus Schmidinger
> <Klaus.Schmidinger@cadsoft.de <mailto:Klaus.Schmidinger@cadsoft.de>> wrote:
> 
>     On 07.12.2008 13:21, Klaus Schmidinger wrote:
>     > Attached is an updated version of the patch to make VDR use
>     > the S2API. Dominik Strasser reported that he got log entries like
>     >
>     >   Dec  6 18:39:02 VDR vdr: [4102] ERROR: frontend 0: Das Argument
>     ist ungültig
>     >   Dec  6 18:39:02 VDR kernel: DVB: adapter 0 frontend 1935763502
>     symbol rate 0 out of range (451875..7230000)
>     >
>     > and I now also get
>     >
>     >   Dec  7 13:03:26 vdr2 vdr: [3441] ERROR: frontend 0: Invalid argument
>     >   Dec  7 13:03:26 vdr2 kernel: DVB: adapter 0 frontend 0 symbol
>     rate 0 out of range (5000000..45000000)
>     >
>     > when trying to tune to a DVB-S2 channel.
>     >
>     > The attached patch logs the value put into the DTV_SYMBOL_RATE slot,
>     > and it appears to be fine. Why the value falls back to 0 when tuning
>     > is currently totally unclear (as is the large frontend value in
>     Dominik's
>     > case).
>     >
>     > Any help in debugging this would be appreciated.
> 
>     Some more info: apparently the problem only happens if a DVB-S2 card
>     (a TT-budget S2 3200 in my case) is (attempted to be) tuned to a DVB-S2
>     channel after the driver has been freshly loaded. Once the card has
>     been tuned to a DVB-S channel, subsequent tuning to DVB-S2 channels
>     works fine.
> 
> That scenario works fine with scan-s2 utility.

I just wanted to download the dvb-apps from linuxtv.org, but apparently
all those repositories are gone, http://linuxtv.org/hg/dvb-apps is empty.

Any idea where to get the scan-s2 source now?

Klaus
  
oleg roitburd Dec. 13, 2008, 9:34 p.m. UTC | #42
2008/12/13 Klaus Schmidinger <Klaus.Schmidinger@cadsoft.de>:
> On 07.12.2008 14:41, Alex Betis wrote:
>> On Sun, Dec 7, 2008 at 3:06 PM, Klaus Schmidinger
>> <Klaus.Schmidinger@cadsoft.de <mailto:Klaus.Schmidinger@cadsoft.de>> wrote:
>>
>>     On 07.12.2008 13:21, Klaus Schmidinger wrote:
>>     > Attached is an updated version of the patch to make VDR use
>>     > the S2API. Dominik Strasser reported that he got log entries like
>>     >
>>     >   Dec  6 18:39:02 VDR vdr: [4102] ERROR: frontend 0: Das Argument
>>     ist ungültig
>>     >   Dec  6 18:39:02 VDR kernel: DVB: adapter 0 frontend 1935763502
>>     symbol rate 0 out of range (451875..7230000)
>>     >
>>     > and I now also get
>>     >
>>     >   Dec  7 13:03:26 vdr2 vdr: [3441] ERROR: frontend 0: Invalid argument
>>     >   Dec  7 13:03:26 vdr2 kernel: DVB: adapter 0 frontend 0 symbol
>>     rate 0 out of range (5000000..45000000)
>>     >
>>     > when trying to tune to a DVB-S2 channel.
>>     >
>>     > The attached patch logs the value put into the DTV_SYMBOL_RATE slot,
>>     > and it appears to be fine. Why the value falls back to 0 when tuning
>>     > is currently totally unclear (as is the large frontend value in
>>     Dominik's
>>     > case).
>>     >
>>     > Any help in debugging this would be appreciated.
>>
>>     Some more info: apparently the problem only happens if a DVB-S2 card
>>     (a TT-budget S2 3200 in my case) is (attempted to be) tuned to a DVB-S2
>>     channel after the driver has been freshly loaded. Once the card has
>>     been tuned to a DVB-S channel, subsequent tuning to DVB-S2 channels
>>     works fine.
>>
>> That scenario works fine with scan-s2 utility.
>
> I just wanted to download the dvb-apps from linuxtv.org, but apparently
> all those repositories are gone, http://linuxtv.org/hg/dvb-apps is empty.
>
> Any idea where to get the scan-s2 source now?

http://mercurial.intuxication.org/hg/scan-s2/
  
Goga777 Dec. 13, 2008, 10:10 p.m. UTC | #43
> > I just wanted to download the dvb-apps from linuxtv.org, but apparently
> > all those repositories are gone, http://linuxtv.org/hg/dvb-apps is empty.
> >
> > Any idea where to get the scan-s2 source now?
> 
> http://mercurial.intuxication.org/hg/scan-s2/

also you can try new dvb-s/dvb-s2 scanner - xmlscan
http://hg.kewl.org/dvb2010/



Goga
  
Klaus Schmidinger Dec. 14, 2008, 12:01 p.m. UTC | #44
On 13.12.2008 22:34, Oleg Roitburd wrote:
> 2008/12/13 Klaus Schmidinger <Klaus.Schmidinger@cadsoft.de>:
>> On 07.12.2008 14:41, Alex Betis wrote:
>>> On Sun, Dec 7, 2008 at 3:06 PM, Klaus Schmidinger
>>> <Klaus.Schmidinger@cadsoft.de <mailto:Klaus.Schmidinger@cadsoft.de>> wrote:
>>>
>>>     On 07.12.2008 13:21, Klaus Schmidinger wrote:
>>>     > Attached is an updated version of the patch to make VDR use
>>>     > the S2API. Dominik Strasser reported that he got log entries like
>>>     >
>>>     >   Dec  6 18:39:02 VDR vdr: [4102] ERROR: frontend 0: Das Argument
>>>     ist ungültig
>>>     >   Dec  6 18:39:02 VDR kernel: DVB: adapter 0 frontend 1935763502
>>>     symbol rate 0 out of range (451875..7230000)
>>>     >
>>>     > and I now also get
>>>     >
>>>     >   Dec  7 13:03:26 vdr2 vdr: [3441] ERROR: frontend 0: Invalid argument
>>>     >   Dec  7 13:03:26 vdr2 kernel: DVB: adapter 0 frontend 0 symbol
>>>     rate 0 out of range (5000000..45000000)
>>>     >
>>>     > when trying to tune to a DVB-S2 channel.
>>>     >
>>>     > The attached patch logs the value put into the DTV_SYMBOL_RATE slot,
>>>     > and it appears to be fine. Why the value falls back to 0 when tuning
>>>     > is currently totally unclear (as is the large frontend value in
>>>     Dominik's
>>>     > case).
>>>     >
>>>     > Any help in debugging this would be appreciated.
>>>
>>>     Some more info: apparently the problem only happens if a DVB-S2 card
>>>     (a TT-budget S2 3200 in my case) is (attempted to be) tuned to a DVB-S2
>>>     channel after the driver has been freshly loaded. Once the card has
>>>     been tuned to a DVB-S channel, subsequent tuning to DVB-S2 channels
>>>     works fine.
>>>
>>> That scenario works fine with scan-s2 utility.
>> I just wanted to download the dvb-apps from linuxtv.org, but apparently
>> all those repositories are gone, http://linuxtv.org/hg/dvb-apps is empty.
>>
>> Any idea where to get the scan-s2 source now?
> 
> http://mercurial.intuxication.org/hg/scan-s2/

When I run scan-s2 with an initial tuning file that contains only a DVB-S2
transponder (Astra 19.2E)

S 11362000 H 22000000 2/3

and change scan.c so that it first tunes to DVB-S2, as in

                        /* set up list of delivery systems*/
                        //fe_delivery_system_t delset[]={SYS_DVBS,SYS_DVBS2};
                        fe_delivery_system_t delset[]={SYS_DVBS2,SYS_DVBS};

I get this with a freshly loaded driver:


===============================================================================
API major 5, minor 0
ERROR: Cannot open rotor configuration file 'rotor.conf'.
scanning /home/kls/vdr/scan-s2-c728a0055904/dvb-s/Astra-19.2E
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
initial transponder DVB-S2 11362000 H 22000000 2/3 AUTO AUTO
initial transponder DVB-S  11362000 H 22000000 2/3 AUTO AUTO
----------------------------------> Using DVB-S2
>>> tune to: 11362:hS1C23:S0.0W:22000:
DVB-S IF freq is 1612000
FE_SET_PROPERTY TUNE failed: Invalid argument
>>> tune to: 11362:hS1C23:S0.0W:22000:
DVB-S IF freq is 1612000
FE_SET_PROPERTY TUNE failed: Invalid argument
----------------------------------> Using DVB-S
>>> tune to: 11362:hS0C23:S0.0W:22000:
DVB-S IF freq is 1612000
WARNING: >>> tuning failed!!!
>>> tune to: 11362:hS0C23:S0.0W:22000: (tuning failed)
DVB-S IF freq is 1612000
WARNING: >>> tuning failed!!!
ERROR: initial tuning failed
dumping lists (0 services)
Done.
===============================================================================


If I run scan-s2 again, I get


===============================================================================
API major 5, minor 0
ERROR: Cannot open rotor configuration file 'rotor.conf'.
scanning /home/kls/vdr/scan-s2-c728a0055904/dvb-s/Astra-19.2E
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
initial transponder DVB-S2 11362000 H 22000000 2/3 AUTO AUTO
initial transponder DVB-S  11362000 H 22000000 2/3 AUTO AUTO
----------------------------------> Using DVB-S2
>>> tune to: 11362:hS1C23:S0.0W:22000:
DVB-S IF freq is 1612000
>>> parse_section, section number 0 out of 0...!
0x03F3 0x2B70: pmt_pid 0x0000 ZDFvision -- arte HD (running)
0x03F3 0x2B7A: pmt_pid 0x0000 IRT -- Simul SD (running)
0x03F3 0x2B84: pmt_pid 0x0000 IRT -- Simul HD (running)
>>> parse_section, section number 0 out of 0...!
service_id = 0x0
service_id = 0x2B70
pmt_pid = 0x1838
service_id = 0x2B7A
pmt_pid = 0x189C
service_id = 0x2B84
pmt_pid = 0x1900
>>> parse_section, section number 0 out of 0...!
  VIDEO     : PID 0x1842
  AUDIO     : PID 0x184D
  AUDIO     : PID 0x184E
  TELETEXT  : PID 0x1856
>>> parse_section, section number 0 out of 0...!
  VIDEO     : PID 0x18A6
  AUDIO     : PID 0x18B0
>>> parse_section, section number 0 out of 0...!
  VIDEO     : PID 0x190A
  AUDIO     : PID 0x1914
>>> parse_section, section number 0 out of 1...!
Network Name 'ASTRA'
>>> parse_section, section number 1 out of 1...!
dumping lists (3 services)
arte HD;ZDFvision:11361:hS1C23M5O35:S19.2E:22000:6210:6221=ger,6222=fra:6230:0:11120:1:1011:0
Simul SD;IRT:11361:hS1C23M5O35:S19.2E:22000:6310:6320=ger:0:0:11130:1:1011:0
Simul HD;IRT:11361:hS1C23M5O35:S19.2E:22000:6410:6420=ger:0:0:11140:1:1011:0
Done.
===============================================================================


So apparently not even scan-s2 is able to tune directly to a DVB-S2
transponder without first tuning to a DVB-S transponder.

Can anybody else confirm this, or am I doing something wrong?

Klaus
  
Mika Laitio Dec. 14, 2008, 3:01 p.m. UTC | #45
> and change scan.c so that it first tunes to DVB-S2, as in
>
>                        /* set up list of delivery systems*/
>                        //fe_delivery_system_t delset[]={SYS_DVBS,SYS_DVBS2};
>                        fe_delivery_system_t delset[]={SYS_DVBS2,SYS_DVBS};

Ok, I did run some tests.
I am using following setup
- kernel 2.6.27.1
- v4l-dvb drivers just updated today from linuxtv.org
- szap-s2 just updated today from 
http://mercurial.intuxication.org/hg/szap-s2
- scan-s2 updated today from
http://mercurial.intuxication.org/hg/scan-s2/
- hvr-1300 as /dev/dvb/adapter0
(frontend0 for dvb-t)
- hvr-4000 as /dev/dvb/adapter1
(frontend 0 for s/s2, frontend 1 for dvb-t)
- astra-19-2.conf for s2-channels
S 11362000 H 22000000 2/3
S 10743750 H 22000000 2/3
- chan.conf for szap-s2 (not in vdr format)
arteHD:11361:hC23M5O35S1:S19.2E:22000:6210:6230:0:11120:1:1011:0

I have lot of issues, so I try to report them with numbers...

1) scan-s2 will work if I first tune to arte HD for a while with szap-s2
- ./szap-s2 -a 1 -S 2 -c channels.conf arteHD
---> will immediately get lock
- <ctrl-c> to stop szap-s2
- ./scan-s2 -a 1 -5 -o vdr astra-19-2.conf
...
Network Name 'ASTRA'
>>> parse_section, section number 1 out of 1...!
dumping lists (6 services)
arte 
HD;ZDFvision:11361:hS1C23M5O35:S19.2E:22000:6210:6221=ger,6222=fra:6230:0:11120:1:1011:0
Simul 
SD;IRT:11361:hS1C23M5O35:S19.2E:22000:6310:6320=ger:0:0:11130:1:1011:0
Simul 
HD;IRT:11361:hS1C23M5O35:S19.2E:22000:6410:6420=ger:0:0:11140:1:1011:0
arte 
HD;ZDFvision:10743:hS0C56M2:S19.2E:22000:6210:6221=ger,6222=fra:6230:0:11120:1:1051:0
Simul SD;IRT:10743:hS0C56M2:S19.2E:22000:6310:6320=ger:0:0:11130:1:1051:0
Simul HD;IRT:10743:hS0C56M2:S19.2E:22000:6410:6420=ger:0:0:11140:1:1051:0

If I would have let the szap-s2 running, I could have received the 
channels also without astra-19-2.conf file by running

./scan-s2 -a 1 -5 -o vdr -c

2) After step (1) I can not newer use vdr-1.7.1 again for locking dvb-s 
channels with vlc/streamdev plugin (dvb-t channels from hvr-1300 still 
scans ok)

- launch vdr-1.7.1 (with latest Klaus s2-api patch for vdr-1.7.1)
- vlc http://localhost:3000/PES/18

I can get vlc/vdr-1.7.1 to work again with S-channels, if I first launch
vdr-1.6.0 and use use xine-liboutput to tune some S-channels.

3) I am not able to watch S2 channels with vdr-1.7.1/streamdev plugin/vlc 
compination (I can not connect crt tv to my ff cards directly so I must 
use plugin)

I have added following to vdr-1.7.1 channel.conf
arteHD;ZDFvision:11361:hS1C23M5O35:S19.2E:22000:6210:6221=ger,6222=fra:6230:0:11120:1:1011:0
SimulSD;IRT:11361:hS1C23M5O35:S19.2E:22000:6310:6320=ger:0:0:11130:1:1011:0
SimulHD;IRT:11361:hS1C23M5O35:S19.2E:22000:6410:6420=ger:0:0:11140:1:1011:0

With vlc http://localhost:3000/PES/<channel-number> I am able to tune only 
the SimulSD channel, not arteHD or SimulHD

After trying these, I am again in situaion described in step (2)
and I must first use vdr-1.6.0/xine-liboutput to tune S channels
to get vdr-1.7.1 to be able to tune to them.

4) xine-liboutput plugin does not work with vdr-1.7.1 not even for dvb-t 
or dvb-s channels, while streamdev-server/vlc compination works ok except 
in case (2).

5) I can tune and watch arteHD with following commands from command line:
- szap_channels.conf
arteHD:11361:hC23M5O35S1:S19.2E:22000:6210:6230:0:11120:1:1011:0

- ./szap-s2 -a 1 -S 2 -c szap_channels.conf arteHD
- dvbstream -c 1 8192 -o > test3.mpg
- vlc test3.mpg

Here are still the full outputs from scan-s2. First once using first 
vdr-1.6.0 for tuning with old api to S-channels. And then
the succesfull case after firts using szap-s2 to tune artehd.

[lamikr@tinka scan-s2]$ ./scan-s2 -a 1 -o vdr astra-19-2.conf
API major 5, minor 0
scanning astra-19-2.conf
using '/dev/dvb/adapter1/frontend0' and '/dev/dvb/adapter1/demux0'
initial transponder DVB-S2 11362000 H 22000000 2/3 AUTO AUTO
initial transponder DVB-S  11362000 H 22000000 2/3 AUTO AUTO
initial transponder DVB-S2 10743750 H 22000000 2/3 AUTO AUTO
initial transponder DVB-S  10743750 H 22000000 2/3 AUTO AUTO
----------------------------------> Using DVB-S2
>>> tune to: 11362:hS1C23:S0.0W:22000:
DVB-S IF freq is 1612000
WARNING: >>> tuning failed!!!
>>> tune to: 11362:hS1C23:S0.0W:22000: (tuning failed)
DVB-S IF freq is 1612000
WARNING: >>> tuning failed!!!
----------------------------------> Using DVB-S
>>> tune to: 11362:hS0C23:S0.0W:22000:
DVB-S IF freq is 1612000
WARNING: >>> tuning failed!!!
>>> tune to: 11362:hS0C23:S0.0W:22000: (tuning failed)
DVB-S IF freq is 1612000
WARNING: >>> tuning failed!!!
----------------------------------> Using DVB-S2
>>> tune to: 10743:hS1C23:S0.0W:22000:
DVB-S IF freq is 993750
WARNING: >>> tuning failed!!!
>>> tune to: 10743:hS1C23:S0.0W:22000: (tuning failed)
DVB-S IF freq is 993750
WARNING: >>> tuning failed!!!
----------------------------------> Using DVB-S
>>> tune to: 10743:hS0C23:S0.0W:22000:
DVB-S IF freq is 993750
WARNING: >>> tuning failed!!!
>>> tune to: 10743:hS0C23:S0.0W:22000: (tuning failed)
DVB-S IF freq is 993750
WARNING: >>> tuning failed!!!
ERROR: initial tuning failed
dumping lists (0 services)
Done.

[lamikr@tinka scan-s2]$ ./scan-s2 -a 1 -o vdr astra-19-2.conf
API major 5, minor 0
scanning astra-19-2.conf
using '/dev/dvb/adapter1/frontend0' and '/dev/dvb/adapter1/demux0'
initial transponder DVB-S2 11362000 H 22000000 2/3 AUTO AUTO
initial transponder DVB-S  11362000 H 22000000 2/3 AUTO AUTO
initial transponder DVB-S2 10743750 H 22000000 2/3 AUTO AUTO
initial transponder DVB-S  10743750 H 22000000 2/3 AUTO AUTO
----------------------------------> Using DVB-S2
>>> tune to: 11362:hS1C23:S0.0W:22000:
DVB-S IF freq is 1612000
>>> parse_section, section number 0 out of 0...!
service_id = 0x0
service_id = 0x2B70
pmt_pid = 0x1838
service_id = 0x2B7A
pmt_pid = 0x189C
service_id = 0x2B84
pmt_pid = 0x1900
>>> parse_section, section number 0 out of 0...!
   VIDEO     : PID 0x1842
   AUDIO     : PID 0x184D
   AUDIO     : PID 0x184E
   TELETEXT  : PID 0x1856
>>> parse_section, section number 0 out of 0...!
   VIDEO     : PID 0x18A6
   AUDIO     : PID 0x18B0
>>> parse_section, section number 0 out of 0...!
0x03F3 0x2B70: pmt_pid 0x1838 ZDFvision -- arte HD (running)
0x03F3 0x2B7A: pmt_pid 0x189C IRT -- Simul SD (running)
0x03F3 0x2B84: pmt_pid 0x1900 IRT -- Simul HD (running)
>>> parse_section, section number 0 out of 0...!
   VIDEO     : PID 0x190A
   AUDIO     : PID 0x1914
>>> parse_section, section number 0 out of 1...!
Network Name 'ASTRA'
>>> parse_section, section number 1 out of 1...!
----------------------------------> Using DVB-S
>>> tune to: 10743:hS0C56M2:S19.2E:22000:
DVB-S IF freq is 993750
>>> parse_section, section number 0 out of 0...!
0x03F3 0x2B70: pmt_pid 0x0000 ZDFvision -- arte HD (running)
0x03F3 0x2B7A: pmt_pid 0x0000 IRT -- Simul SD (running)
0x03F3 0x2B84: pmt_pid 0x0000 IRT -- Simul HD (running)
>>> parse_section, section number 0 out of 0...!
service_id = 0x0
service_id = 0x2B70
pmt_pid = 0x1838
service_id = 0x2B7A
pmt_pid = 0x189C
service_id = 0x2B84
pmt_pid = 0x1900
>>> parse_section, section number 0 out of 0...!
   VIDEO     : PID 0x190A
   AUDIO     : PID 0x1914
>>> parse_section, section number 0 out of 0...!
   VIDEO     : PID 0x1842
   AUDIO     : PID 0x184D
   AUDIO     : PID 0x184E
   TELETEXT  : PID 0x1856
>>> parse_section, section number 0 out of 0...!
   VIDEO     : PID 0x18A6
   AUDIO     : PID 0x18B0
>>> parse_section, section number 0 out of 1...!
Network Name 'ASTRA'
>>> parse_section, section number 1 out of 1...!
dumping lists (6 services)
arte 
HD;ZDFvision:11361:hS1C23M5O35:S19.2E:22000:6210:6221=ger,6222=fra:6230:0:11120:1:1011:0
Simul 
SD;IRT:11361:hS1C23M5O35:S19.2E:22000:6310:6320=ger:0:0:11130:1:1011:0
Simul 
HD;IRT:11361:hS1C23M5O35:S19.2E:22000:6410:6420=ger:0:0:11140:1:1011:0
arte 
HD;ZDFvision:10743:hS0C56M2:S19.2E:22000:6210:6221=ger,6222=fra:6230:0:11120:1:1051:0
Simul SD;IRT:10743:hS0C56M2:S19.2E:22000:6310:6320=ger:0:0:11130:1:1051:0
Simul HD;IRT:10743:hS0C56M2:S19.2E:22000:6410:6420=ger:0:0:11140:1:1051:0
Done.

Mika
  
Alex Betis Dec. 14, 2008, 8:29 p.m. UTC | #46
On Sun, Dec 14, 2008 at 2:01 PM, Klaus Schmidinger <
Klaus.Schmidinger@cadsoft.de> wrote:

>
> >>>     Some more info: apparently the problem only happens if a DVB-S2
> card
> >>>     (a TT-budget S2 3200 in my case) is (attempted to be) tuned to a
> DVB-S2
> >>>     channel after the driver has been freshly loaded. Once the card has
> >>>     been tuned to a DVB-S channel, subsequent tuning to DVB-S2 channels
> >>>     works fine.
>
I have Twinhan 1041 that use the same driver so I could check the problem...


> When I run scan-s2 with an initial tuning file that contains only a DVB-S2
> transponder (Astra 19.2E)
>
> S 11362000 H 22000000 2/3
>
> and change scan.c so that it first tunes to DVB-S2, as in
>
>                        /* set up list of delivery systems*/
>                        //fe_delivery_system_t
> delset[]={SYS_DVBS,SYS_DVBS2};
>                        fe_delivery_system_t delset[]={SYS_DVBS2,SYS_DVBS};

You can also start the entry in INI file with "S2" to scan only in DVB-S2 or
"S1" to scan in DVB-S only mode.

>
>
> I get this with a freshly loaded driver:
>
>
>
> ===============================================================================
> API major 5, minor 0
> ERROR: Cannot open rotor configuration file 'rotor.conf'.
> scanning /home/kls/vdr/scan-s2-c728a0055904/dvb-s/Astra-19.2E
> using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
> initial transponder DVB-S2 11362000 H 22000000 2/3 AUTO AUTO
> initial transponder DVB-S  11362000 H 22000000 2/3 AUTO AUTO
> ----------------------------------> Using DVB-S2
> >>> tune to: 11362:hS1C23:S0.0W:22000:
> DVB-S IF freq is 1612000
> FE_SET_PROPERTY TUNE failed: Invalid argument
> >>> tune to: 11362:hS1C23:S0.0W:22000:
> DVB-S IF freq is 1612000
> FE_SET_PROPERTY TUNE failed: Invalid argument
> ----------------------------------> Using DVB-S
> >>> tune to: 11362:hS0C23:S0.0W:22000:
> DVB-S IF freq is 1612000
> WARNING: >>> tuning failed!!!
> >>> tune to: 11362:hS0C23:S0.0W:22000: (tuning failed)
> DVB-S IF freq is 1612000
> WARNING: >>> tuning failed!!!
> ERROR: initial tuning failed
> dumping lists (0 services)
> Done.
>
> ===============================================================================
>
There seems to be a problem in the driver with AUTO modulation setting. Some
drivers do not allow it at all.
2 options:

Explicitly specify the modulation, such as:
S2 11362000 H 22000000 2/3 AUTO 8PSK

Or add the following case into switch in dtv_property_adv_params_sync
function in dvb_frontend.c file of the drivers:
case QAM_AUTO:

Just in case, the function will start with:

void dtv_property_adv_params_sync(struct dvb_frontend *fe)
{
    struct dtv_frontend_properties *c = &fe->dtv_property_cache;
    struct dvb_frontend_private *fepriv = fe->frontend_priv;
    struct dvb_frontend_parameters *p = &fepriv->parameters;

    p->frequency = c->frequency;
    p->inversion = c->inversion;

    switch(c->modulation) {
    case PSK_8:
    case APSK_16:
    case APSK_32:
    case QPSK:
*    case QAM_AUTO:
*        p->u.qpsk.symbol_rate = c->symbol_rate;
        p->u.qpsk.fec_inner = c->fec_inner;
        break;
    default:
        break;
    }

This will solve the problem. I'll send an email to Igor about that.


>
> If I run scan-s2 again, I get
>
>
>
> ===============================================================================
> API major 5, minor 0
> ERROR: Cannot open rotor configuration file 'rotor.conf'.
> scanning /home/kls/vdr/scan-s2-c728a0055904/dvb-s/Astra-19.2E
> using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
> initial transponder DVB-S2 11362000 H 22000000 2/3 AUTO AUTO
> initial transponder DVB-S  11362000 H 22000000 2/3 AUTO AUTO
> ----------------------------------> Using DVB-S2
> >>> tune to: 11362:hS1C23:S0.0W:22000:
> DVB-S IF freq is 1612000
> >>> parse_section, section number 0 out of 0...!
> 0x03F3 0x2B70: pmt_pid 0x0000 ZDFvision -- arte HD (running)
> 0x03F3 0x2B7A: pmt_pid 0x0000 IRT -- Simul SD (running)
> 0x03F3 0x2B84: pmt_pid 0x0000 IRT -- Simul HD (running)
> >>> parse_section, section number 0 out of 0...!
> service_id = 0x0
> service_id = 0x2B70
> pmt_pid = 0x1838
> service_id = 0x2B7A
> pmt_pid = 0x189C
> service_id = 0x2B84
> pmt_pid = 0x1900
> >>> parse_section, section number 0 out of 0...!
>  VIDEO     : PID 0x1842
>  AUDIO     : PID 0x184D
>  AUDIO     : PID 0x184E
>  TELETEXT  : PID 0x1856
> >>> parse_section, section number 0 out of 0...!
>  VIDEO     : PID 0x18A6
>  AUDIO     : PID 0x18B0
> >>> parse_section, section number 0 out of 0...!
>  VIDEO     : PID 0x190A
>  AUDIO     : PID 0x1914
> >>> parse_section, section number 0 out of 1...!
> Network Name 'ASTRA'
> >>> parse_section, section number 1 out of 1...!
> dumping lists (3 services)
> arte
> HD;ZDFvision:11361:hS1C23M5O35:S19.2E:22000:6210:6221=ger,6222=fra:6230:0:11120:1:1011:0
> Simul
> SD;IRT:11361:hS1C23M5O35:S19.2E:22000:6310:6320=ger:0:0:11130:1:1011:0
> Simul
> HD;IRT:11361:hS1C23M5O35:S19.2E:22000:6410:6420=ger:0:0:11140:1:1011:0
> Done.
>
> ===============================================================================
>
>
> So apparently not even scan-s2 is able to tune directly to a DVB-S2
> transponder without first tuning to a DVB-S transponder.
>
> Can anybody else confirm this, or am I doing something wrong?
>
> Klaus
>
>
>
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
>
  
Theunis Potgieter Dec. 15, 2008, 9:02 a.m. UTC | #47
What happens if vdr has got multiple FF-dvb-s cards in the same machine, and
you want to hookup multiple monitor/tvs? Can vdr successully handle this on
the same machine? Or is the only answer now to run multiple intances of vdr,
one for each FF-card? If vdr can do that, then surely implementing cross
network would also become easier?
  

Patch

===================================================================
RCS file: ./RCS/CONTRIBUTORS
retrieving revision 2.17
diff -u -b -r2.17 ./CONTRIBUTORS
--- ./CONTRIBUTORS	2008/09/06 14:49:19	2.17
+++ ./CONTRIBUTORS	2008/12/06 11:24:12
@@ -2375,3 +2375,12 @@ 
 
 Winfried Köhler <w_koehl@gmx.de>
  for fixing wrong value for TableIdBAT in libsi/si.h
+
+Igor M. Liplianin <liplianin@tut.by>
+ for a patch that was used to convert VDR to the S2API driver API
+
+Niels Wagenaar <n.wagenaar@xs4all.nl>
+ for a patch that was used to convert VDR to the S2API driver API
+
+Edgar Hucek <gimli@dark-green.com>
+ for a patch that was used to convert VDR to the S2API driver API
===================================================================
RCS file: ./RCS/HISTORY
retrieving revision 2.31
diff -u -b -r2.31 ./HISTORY
--- ./HISTORY	2008/09/14 13:45:45	2.31
+++ ./HISTORY	2008/12/07 10:51:20
@@ -5832,6 +5832,11 @@ 
 - Removed unneeded include files <linux/dvb/dmx.h> und <time.h> from remux.h
   (reported by Tobias Grimm).
 
-2008-09-14: Version 1.7.2
+2008-12-07: Version 1.7.2
 
 - Added a note about 'Id' being obsolete to the description of cDevice::PlayAudio().
+- Switched to the new S2API driver API, which was decided to become the official
+  DVB API in the kernel (based on patches from Igor M. Liplianin, Niels Wagenaar
+  and Edgar Hucek).
+- The cDvbTuner::IsTunedTo() function now also checks the symbol rate in case of
+  DVB-S and DVB-C.
===================================================================
RCS file: ./RCS/channels.c
retrieving revision 2.3
diff -u -b -r2.3 ./channels.c
--- ./channels.c	2008/07/06 12:59:41	2.3
+++ ./channels.c	2008/12/06 15:45:34
@@ -21,114 +21,86 @@ 
 // --- Channel Parameter Maps ------------------------------------------------
 
 const tChannelParameterMap InversionValues[] = {
-  {   0, DVBFE_INVERSION_OFF, trNOOP("off") },
-  {   1, DVBFE_INVERSION_ON,  trNOOP("on") },
-  { 999, DVBFE_INVERSION_AUTO },
+  {   0, INVERSION_OFF, trNOOP("off") },
+  {   1, INVERSION_ON,  trNOOP("on") },
+  { 999, INVERSION_AUTO },
   { -1 }
   };
 
 const tChannelParameterMap BandwidthValues[] = {
-  {   5, DVBFE_BANDWIDTH_5_MHZ, "5 MHz" },
-  {   6, DVBFE_BANDWIDTH_6_MHZ, "6 MHz" },
-  {   7, DVBFE_BANDWIDTH_7_MHZ, "7 MHz" },
-  {   8, DVBFE_BANDWIDTH_8_MHZ, "8 MHz" },
-  { 999, DVBFE_BANDWIDTH_AUTO },
+  {   6, 6000000, "6 MHz" },
+  {   7, 7000000, "7 MHz" },
+  {   8, 8000000, "8 MHz" },
   { -1 }
   };
 
 const tChannelParameterMap CoderateValues[] = {
-  {   0, DVBFE_FEC_NONE, trNOOP("none") },
-  {  12, DVBFE_FEC_1_2,  "1/2" },
-  {  13, DVBFE_FEC_1_3,  "1/3" },
-  {  14, DVBFE_FEC_1_4,  "1/4" },
-  {  23, DVBFE_FEC_2_3,  "2/3" },
-  {  25, DVBFE_FEC_2_5,  "2/5" },
-  {  34, DVBFE_FEC_3_4,  "3/4" },
-  {  35, DVBFE_FEC_3_5,  "3/5" },
-  {  45, DVBFE_FEC_4_5,  "4/5" },
-  {  56, DVBFE_FEC_5_6,  "5/6" },
-  {  67, DVBFE_FEC_6_7,  "6/7" },
-  {  78, DVBFE_FEC_7_8,  "7/8" },
-  {  89, DVBFE_FEC_8_9,  "8/9" },
-  { 910, DVBFE_FEC_9_10, "9/10" },
-  { 999, DVBFE_FEC_AUTO },
+  {   0, FEC_NONE, trNOOP("none") },
+  {  12, FEC_1_2,  "1/2" },
+  {  23, FEC_2_3,  "2/3" },
+  {  34, FEC_3_4,  "3/4" },
+  {  35, FEC_3_5,  "3/5" },
+  {  45, FEC_4_5,  "4/5" },
+  {  56, FEC_5_6,  "5/6" },
+  {  67, FEC_6_7,  "6/7" },
+  {  78, FEC_7_8,  "7/8" },
+  {  89, FEC_8_9,  "8/9" },
+  { 910, FEC_9_10, "9/10" },
+  { 999, FEC_AUTO },
   { -1 }
   };
 
 const tChannelParameterMap ModulationValues[] = {
-  {   0, DVBFE_MOD_NONE,    trNOOP("none") },
-  {   4, DVBFE_MOD_QAM4,    "QAM4" },
-  {  16, DVBFE_MOD_QAM16,   "QAM16" },
-  {  32, DVBFE_MOD_QAM32,   "QAM32" },
-  {  64, DVBFE_MOD_QAM64,   "QAM64" },
-  { 128, DVBFE_MOD_QAM128,  "QAM128" },
-  { 256, DVBFE_MOD_QAM256,  "QAM256" },
-  { 512, DVBFE_MOD_QAM512,  "QAM512" },
-  {1024, DVBFE_MOD_QAM1024, "QAM1024" },
-  {   1, DVBFE_MOD_BPSK,    "BPSK" },
-  {   2, DVBFE_MOD_QPSK,    "QPSK" },
-  {   3, DVBFE_MOD_OQPSK,   "OQPSK" },
-  {   5, DVBFE_MOD_8PSK,    "8PSK" },
-  {   6, DVBFE_MOD_16APSK,  "16APSK" },
-  {   7, DVBFE_MOD_32APSK,  "32APSK" },
-  {   8, DVBFE_MOD_OFDM,    "OFDM" },
-  {   9, DVBFE_MOD_COFDM,   "COFDM" },
-  {  10, DVBFE_MOD_VSB8,    "VSB8" },
-  {  11, DVBFE_MOD_VSB16,   "VSB16" },
-  { 998, DVBFE_MOD_QAMAUTO, "QAMAUTO" },
-  { 999, DVBFE_MOD_AUTO },
+  {  16, QAM_16,   "QAM16" },
+  {  32, QAM_32,   "QAM32" },
+  {  64, QAM_64,   "QAM64" },
+  { 128, QAM_128,  "QAM128" },
+  { 256, QAM_256,  "QAM256" },
+  {   2, QPSK,     "QPSK" },
+  {   5, PSK_8,    "8PSK" },
+  {   6, APSK_16,  "16APSK" },
+  {  10, VSB_8,    "VSB8" },
+  {  11, VSB_16,   "VSB16" },
+  { 998, QAM_AUTO, "QAMAUTO" },
   { -1 }
   };
 
 const tChannelParameterMap SystemValues[] = {
-  {   0, DVBFE_DELSYS_DVBS,  "DVB-S" },
-  {   1, DVBFE_DELSYS_DVBS2, "DVB-S2" },
+  {   0, SYS_DVBS,  "DVB-S" },
+  {   1, SYS_DVBS2, "DVB-S2" },
   { -1 }
   };
 
 const tChannelParameterMap TransmissionValues[] = {
-  {   2, DVBFE_TRANSMISSION_MODE_2K, "2K" },
-  {   4, DVBFE_TRANSMISSION_MODE_4K, "4K" },
-  {   8, DVBFE_TRANSMISSION_MODE_8K, "8K" },
-  { 999, DVBFE_TRANSMISSION_MODE_AUTO },
+  {   2, TRANSMISSION_MODE_2K, "2K" },
+  {   8, TRANSMISSION_MODE_8K, "8K" },
+  { 999, TRANSMISSION_MODE_AUTO },
   { -1 }
   };
 
 const tChannelParameterMap GuardValues[] = {
-  {   4, DVBFE_GUARD_INTERVAL_1_4,  "1/4" },
-  {   8, DVBFE_GUARD_INTERVAL_1_8,  "1/8" },
-  {  16, DVBFE_GUARD_INTERVAL_1_16, "1/16" },
-  {  32, DVBFE_GUARD_INTERVAL_1_32, "1/32" },
-  { 999, DVBFE_GUARD_INTERVAL_AUTO },
+  {   4, GUARD_INTERVAL_1_4,  "1/4" },
+  {   8, GUARD_INTERVAL_1_8,  "1/8" },
+  {  16, GUARD_INTERVAL_1_16, "1/16" },
+  {  32, GUARD_INTERVAL_1_32, "1/32" },
+  { 999, GUARD_INTERVAL_AUTO },
   { -1 }
   };
 
 const tChannelParameterMap HierarchyValues[] = {
-  {   0, DVBFE_HIERARCHY_OFF, trNOOP("off") },
-  {   1, DVBFE_HIERARCHY_ON,  trNOOP("on") },
-  { 999, DVBFE_HIERARCHY_AUTO },
-  { -1 }
-  };
-
-const tChannelParameterMap AlphaValues[] = {
-  {   0, 0 },
-  {   1, DVBFE_ALPHA_1 },
-  {   2, DVBFE_ALPHA_2 },
-  {   4, DVBFE_ALPHA_4 },
-  { -1 }
-  };
-
-const tChannelParameterMap PriorityValues[] = {
-  {   0, DVBFE_STREAM_PRIORITY_HP, trNOOP("high") },
-  {   1, DVBFE_STREAM_PRIORITY_LP, trNOOP("low") },
+  {   0, HIERARCHY_NONE, trNOOP("off") },
+  {   1, HIERARCHY_1,  trNOOP("1") },
+  {   2, HIERARCHY_2,  trNOOP("2") },
+  {   4, HIERARCHY_4,  trNOOP("4") },
+  { 999, HIERARCHY_AUTO },
   { -1 }
   };
 
 const tChannelParameterMap RollOffValues[] = {
-  {   0, DVBFE_ROLLOFF_UNKNOWN },
-  {  20, DVBFE_ROLLOFF_20, "0.20" },
-  {  25, DVBFE_ROLLOFF_25, "0.25" },
-  {  35, DVBFE_ROLLOFF_35, "0.35" },
+  {   0, ROLLOFF_AUTO, trNOOP("auto") },
+  {  20, ROLLOFF_20, "0.20" },
+  {  25, ROLLOFF_25, "0.25" },
+  {  35, ROLLOFF_35, "0.35" },
   { -1 }
   };
 
@@ -217,18 +189,16 @@ 
   provider = strdup("");
   portalName = strdup("");
   memset(&__BeginData__, 0, (char *)&__EndData__ - (char *)&__BeginData__);
-  inversion    = DVBFE_INVERSION_AUTO;
-  bandwidth    = DVBFE_BANDWIDTH_AUTO;
-  coderateH    = DVBFE_FEC_AUTO;
-  coderateL    = DVBFE_FEC_AUTO;
-  modulation   = DVBFE_MOD_AUTO;
-  system       = DVBFE_DELSYS_DVBS;
-  transmission = DVBFE_TRANSMISSION_MODE_AUTO;
-  guard        = DVBFE_GUARD_INTERVAL_AUTO;
-  hierarchy    = DVBFE_HIERARCHY_AUTO;
-  alpha        = 0;
-  priority     = DVBFE_STREAM_PRIORITY_HP;
-  rollOff      = DVBFE_ROLLOFF_UNKNOWN;
+  inversion    = INVERSION_AUTO;
+  bandwidth    = 8000000;
+  coderateH    = FEC_AUTO;
+  coderateL    = FEC_AUTO;
+  modulation   = QPSK;
+  system       = SYS_DVBS;
+  transmission = TRANSMISSION_MODE_AUTO;
+  guard        = GUARD_INTERVAL_AUTO;
+  hierarchy    = HIERARCHY_AUTO;
+  rollOff      = ROLLOFF_AUTO;
   modification = CHANNELMOD_NONE;
   schedule     = NULL;
   linkChannels = NULL;
@@ -335,8 +305,6 @@ 
      transmission = Channel->transmission;
      guard        = Channel->guard;
      hierarchy    = Channel->hierarchy;
-     alpha        = Channel->alpha;
-     priority     = Channel->priority;
      rollOff      = Channel->rollOff;
      }
 }
@@ -394,9 +362,9 @@ 
   return true;
 }
 
-bool cChannel::SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CoderateH, int CoderateL, int Guard, int Transmission, int Alpha, int Priority)
+bool cChannel::SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CoderateH, int CoderateL, int Guard, int Transmission)
 {
-  if (source != Source || frequency != Frequency || bandwidth != Bandwidth || modulation != Modulation || hierarchy != Hierarchy || coderateH != CoderateH || coderateL != CoderateL || guard != Guard || transmission != Transmission || alpha != Alpha || priority != Priority) {
+  if (source != Source || frequency != Frequency || bandwidth != Bandwidth || modulation != Modulation || hierarchy != Hierarchy || coderateH != CoderateH || coderateL != CoderateL || guard != Guard || transmission != Transmission) {
      cString OldTransponderData = TransponderDataToString();
      source = Source;
      frequency = Frequency;
@@ -407,8 +375,6 @@ 
      coderateL = CoderateL;
      guard = Guard;
      transmission = Transmission;
-     alpha = Alpha;
-     priority = Priority;
      schedule = NULL;
      if (Number()) {
         dsyslog("changing transponder data of channel %d from %s to %s", Number(), *OldTransponderData, *TransponderDataToString());
@@ -670,7 +636,6 @@ 
   char *q = buffer;
   *q = 0;
   ST(" S ")  q += sprintf(q, "%c", polarization);
-  ST("  T")  q += PrintParameter(q, 'A', MapToUser(alpha, AlphaValues));
   ST("  T")  q += PrintParameter(q, 'B', MapToUser(bandwidth, BandwidthValues));
   ST("CST")  q += PrintParameter(q, 'C', MapToUser(coderateH, CoderateValues));
   ST("  T")  q += PrintParameter(q, 'D', MapToUser(coderateL, CoderateValues));
@@ -678,7 +643,6 @@ 
   ST("CST")  q += PrintParameter(q, 'I', MapToUser(inversion, InversionValues));
   ST("CST")  q += PrintParameter(q, 'M', MapToUser(modulation, ModulationValues));
   ST(" S ")  q += PrintParameter(q, 'O', MapToUser(rollOff, RollOffValues));
-  ST("  T")  q += PrintParameter(q, 'P', MapToUser(priority, PriorityValues));
   ST(" S ")  q += PrintParameter(q, 'S', MapToUser(system, SystemValues));
   ST("  T")  q += PrintParameter(q, 'T', MapToUser(transmission, TransmissionValues));
   ST("  T")  q += PrintParameter(q, 'Y', MapToUser(hierarchy, HierarchyValues));
@@ -701,11 +665,18 @@ 
   return NULL;
 }
 
+static const char *SkipDigits(const char *s)
+{
+  while (*++s && isdigit(*s))
+        ;
+  return s;
+}
+
 bool cChannel::StringToParameters(const char *s)
 {
   while (s && *s) {
         switch (toupper(*s)) {
-          case 'A': s = ParseParameter(s, alpha, AlphaValues); break;
+          case 'A': s = SkipDigits(s); break; // for compatibility with the "multiproto" approach - may be removed in future versions
           case 'B': s = ParseParameter(s, bandwidth, BandwidthValues); break;
           case 'C': s = ParseParameter(s, coderateH, CoderateValues); break;
           case 'D': s = ParseParameter(s, coderateL, CoderateValues); break;
@@ -714,14 +685,14 @@ 
           case 'I': s = ParseParameter(s, inversion, InversionValues); break;
           case 'L': polarization = *s++; break;
           case 'M': s = ParseParameter(s, modulation, ModulationValues); break;
-          case 'Z':// for compatibility with the original DVB-S2 patch - may be removed in future versions
           case 'O': s = ParseParameter(s, rollOff, RollOffValues); break;
-          case 'P': s = ParseParameter(s, priority, PriorityValues); break;
+          case 'P': s = SkipDigits(s); break; // for compatibility with the "multiproto" approach - may be removed in future versions
           case 'R': polarization = *s++; break;
           case 'S': s = ParseParameter(s, system, SystemValues); break;
           case 'T': s = ParseParameter(s, transmission, TransmissionValues); break;
           case 'V': polarization = *s++; break;
           case 'Y': s = ParseParameter(s, hierarchy, HierarchyValues); break;
+          case 'Z': s = SkipDigits(s); break; // for compatibility with the original DVB-S2 patch - may be removed in future versions
           default: esyslog("ERROR: unknown parameter key '%c'", *s);
                    return false;
           }
===================================================================
RCS file: ./RCS/channels.h
retrieving revision 2.3
diff -u -b -r2.3 ./channels.h
--- ./channels.h	2008/07/06 11:49:37	2.3
+++ ./channels.h	2008/11/22 13:35:52
@@ -66,8 +66,6 @@ 
 extern const tChannelParameterMap TransmissionValues[];
 extern const tChannelParameterMap GuardValues[];
 extern const tChannelParameterMap HierarchyValues[];
-extern const tChannelParameterMap AlphaValues[];
-extern const tChannelParameterMap PriorityValues[];
 extern const tChannelParameterMap RollOffValues[];
 
 struct tChannelID {
@@ -149,8 +147,6 @@ 
   int transmission;
   int guard;
   int hierarchy;
-  int alpha;
-  int priority;
   int rollOff;
   int __EndData__;
   int modification;
@@ -209,8 +205,6 @@ 
   int Transmission(void) const { return transmission; }
   int Guard(void) const { return guard; }
   int Hierarchy(void) const { return hierarchy; }
-  int Alpha(void) const { return alpha; }
-  int Priority(void) const { return priority; }
   int RollOff(void) const { return rollOff; }
   const cLinkChannels* LinkChannels(void) const { return linkChannels; }
   const cChannel *RefChannel(void) const { return refChannel; }
@@ -223,7 +217,7 @@ 
   void CopyTransponderData(const cChannel *Channel);
   bool SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH, int Modulation, int System, int RollOff);
   bool SetCableTransponderData(int Source, int Frequency, int Modulation, int Srate, int CoderateH);
-  bool SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CodeRateH, int CodeRateL, int Guard, int Transmission, int Alpha, int Priority);
+  bool SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CodeRateH, int CodeRateL, int Guard, int Transmission);
   void SetId(int Nid, int Tid, int Sid, int Rid = 0);
   void SetName(const char *Name, const char *ShortName, const char *Provider);
   void SetPortalName(const char *PortalName);
===================================================================
RCS file: ./RCS/dvbdevice.c
retrieving revision 2.4
diff -u -b -r2.4 ./dvbdevice.c
--- ./dvbdevice.c	2008/07/06 13:58:56	2.4
+++ ./dvbdevice.c	2008/12/07 12:05:54
@@ -27,6 +27,13 @@ 
 #include "status.h"
 #include "transfer.h"
 
+// FIXME: temporary workaround until the S2API driver supports detecting
+// S2 capability in a clean way. This macro allows compiling VDR with an
+// 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 DO_REC_AND_PLAY_ON_PRIMARY_DEVICE 1
 #define DO_MULTIPLE_RECORDINGS 1
 
@@ -76,7 +83,7 @@ 
   int tuneTimeout;
   int lockTimeout;
   time_t lastTimeoutReport;
-  dvbfe_delsys frontendType;
+  fe_delivery_system frontendType;
   cChannel channel;
   const char *diseqcCommands;
   eTunerStatus tunerStatus;
@@ -87,14 +94,14 @@ 
   bool SetFrontend(void);
   virtual void Action(void);
 public:
-  cDvbTuner(int Fd_Frontend, int CardIndex, dvbfe_delsys FrontendType);
+  cDvbTuner(int Fd_Frontend, int CardIndex, fe_delivery_system FrontendType);
   virtual ~cDvbTuner();
   bool IsTunedTo(const cChannel *Channel) const;
   void Set(const cChannel *Channel, bool Tune);
   bool Locked(int TimeoutMs = 0);
   };
 
-cDvbTuner::cDvbTuner(int Fd_Frontend, int CardIndex, dvbfe_delsys FrontendType)
+cDvbTuner::cDvbTuner(int Fd_Frontend, int CardIndex, fe_delivery_system FrontendType)
 {
   fd_frontend = Fd_Frontend;
   cardIndex = CardIndex;
@@ -104,7 +111,7 @@ 
   lastTimeoutReport = 0;
   diseqcCommands = NULL;
   tunerStatus = tsIdle;
-  if (frontendType & (DVBFE_DELSYS_DVBS | DVBFE_DELSYS_DVBS2))
+  if (frontendType == SYS_DVBS || frontendType == SYS_DVBS2)
      CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_13)); // must explicitly turn on LNB power
   SetDescription("tuner on device %d", cardIndex + 1);
   Start();
@@ -127,7 +134,6 @@ 
   char Type = **cSource::ToString(Channel->Source());
 #define ST(s, p) if (strchr(s, Type)) if (channel.p() != Channel->p()) return false;
   // Polarization is already checked as part of the Transponder.
-  ST("  T", Alpha);
   ST("  T", Bandwidth);
   ST("CST", CoderateH);
   ST("  T", CoderateL);
@@ -135,8 +141,8 @@ 
   ST("CST", Inversion);
   ST("CST", Modulation);
   ST(" S ", RollOff);
-  ST("  T", Priority);
   ST(" S ", System);
+  ST("CS ", Srate);
   ST("  T", Transmission);
   ST("  T", Hierarchy);
   return true;
@@ -192,12 +198,30 @@ 
 
 bool cDvbTuner::SetFrontend(void)
 {
-  dvbfe_params Frontend;
+#define MAXFRONTENDCMDS 16
+#define SETCMD(c, d) { Frontend[CmdSeq.num].cmd = (c);\
+                       Frontend[CmdSeq.num].u.data = (d);\
+                       if (CmdSeq.num++ > MAXFRONTENDCMDS) {\
+                          esyslog("ERROR: too many tuning commands on frontend %d", cardIndex);\
+                          return false;\
+                          }\
+                     }
+  dtv_property Frontend[MAXFRONTENDCMDS];
   memset(&Frontend, 0, sizeof(Frontend));
+  dtv_properties CmdSeq;
+  memset(&CmdSeq, 0, sizeof(CmdSeq));
+  CmdSeq.props = Frontend;
+  SETCMD(DTV_CLEAR, 0);
+  if (ioctl(fd_frontend, FE_SET_PROPERTY, &CmdSeq) < 0) {
+     esyslog("ERROR: frontend %d: %m", cardIndex);
+     return false;
+     }
+  CmdSeq.num = 0;
 
-  if (frontendType & (DVBFE_DELSYS_DVBS | DVBFE_DELSYS_DVBS2)) {
+  if (frontendType == SYS_DVBS || frontendType == SYS_DVBS2) {
      unsigned int frequency = channel.Frequency();
      if (Setup.DiSEqC) {
+        //XXX DiSEqC-Settings could also be done via SETCMD()
         cDiseqc *diseqc = Diseqcs.Get(channel.Source(), channel.Frequency(), channel.Polarization());
         if (diseqc) {
            if (diseqc->Commands() && (!diseqcCommands || strcmp(diseqcCommands, diseqc->Commands()) != 0)) {
@@ -249,48 +273,57 @@ 
         }
      frequency = abs(frequency); // Allow for C-band, where the frequency is less than the LOF
 
-     Frontend.delivery = dvbfe_delsys(channel.System());
-     Frontend.frequency = frequency * 1000UL;
-     Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
-     if (Frontend.delivery == DVBFE_DELSYS_DVBS) {
-        Frontend.delsys.dvbs.modulation = dvbfe_modulation(channel.Modulation());
-        Frontend.delsys.dvbs.symbol_rate = channel.Srate() * 1000UL;
-        Frontend.delsys.dvbs.fec = dvbfe_fec(channel.CoderateH());
+     // DVB-S/DVB-S2 (common parts)
+     SETCMD(DTV_DELIVERY_SYSTEM, channel.System());
+     SETCMD(DTV_FREQUENCY, frequency * 1000UL);
+     SETCMD(DTV_MODULATION, channel.Modulation());
+     dsyslog("Srate = %d %d, %d", channel.System() == SYS_DVBS2, channel.Srate(), channel.Srate() * 1000UL);//XXX
+     SETCMD(DTV_SYMBOL_RATE, channel.Srate() * 1000UL);
+     SETCMD(DTV_INNER_FEC, channel.CoderateH());
+     SETCMD(DTV_INVERSION, channel.Inversion());
+     if (channel.System() == SYS_DVBS2) {
+        if (frontendType == SYS_DVBS2) {
+           // DVB-S2
+           SETCMD(DTV_PILOT, PILOT_AUTO);
+           SETCMD(DTV_ROLLOFF, channel.RollOff());
+           }
+        else {
+           esyslog("ERROR: frontend %d doesn't provide DVB-S2", cardIndex);
+           return false;
+           }
         }
      else {
-        Frontend.delsys.dvbs2.modulation = dvbfe_modulation(channel.Modulation());
-        Frontend.delsys.dvbs2.symbol_rate = channel.Srate() * 1000UL;
-        Frontend.delsys.dvbs2.fec = dvbfe_fec(channel.CoderateH());
-        Frontend.delsys.dvbs2.rolloff = dvbfe_rolloff(channel.RollOff());
+        // DVB-S
+        SETCMD(DTV_ROLLOFF, ROLLOFF_35); // DVB-S always has a ROLLOFF of 0.35
         }
 
      tuneTimeout = DVBS_TUNE_TIMEOUT;
      lockTimeout = DVBS_LOCK_TIMEOUT;
      }
-  else if (frontendType & DVBFE_DELSYS_DVBC) {
-     Frontend.delivery = DVBFE_DELSYS_DVBC;
-     Frontend.frequency = FrequencyToHz(channel.Frequency());
-     Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
-     Frontend.delsys.dvbc.symbol_rate = channel.Srate() * 1000UL;
-     Frontend.delsys.dvbc.fec = dvbfe_fec(channel.CoderateH());
-     Frontend.delsys.dvbc.modulation = dvbfe_modulation(channel.Modulation());
+  else if (frontendType == SYS_DVBC_ANNEX_AC || frontendType == SYS_DVBC_ANNEX_B) {
+     // DVB-C
+     SETCMD(DTV_DELIVERY_SYSTEM, frontendType);
+     SETCMD(DTV_FREQUENCY, FrequencyToHz(channel.Frequency()));
+     SETCMD(DTV_INVERSION, channel.Inversion());
+     SETCMD(DTV_SYMBOL_RATE, channel.Srate() * 1000UL);
+     SETCMD(DTV_INNER_FEC, channel.CoderateH());
+     SETCMD(DTV_MODULATION, channel.Modulation());
 
      tuneTimeout = DVBC_TUNE_TIMEOUT;
      lockTimeout = DVBC_LOCK_TIMEOUT;
      }
-  else if (frontendType & DVBFE_DELSYS_DVBT) {
-     Frontend.delivery = DVBFE_DELSYS_DVBT;
-     Frontend.frequency = FrequencyToHz(channel.Frequency());
-     Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
-     Frontend.delsys.dvbt.bandwidth = dvbfe_bandwidth(channel.Bandwidth());
-     Frontend.delsys.dvbt.code_rate_HP = dvbfe_fec(channel.CoderateH());
-     Frontend.delsys.dvbt.code_rate_LP = dvbfe_fec(channel.CoderateL());
-     Frontend.delsys.dvbt.constellation = dvbfe_modulation(channel.Modulation());
-     Frontend.delsys.dvbt.transmission_mode = dvbfe_transmission_mode(channel.Transmission());
-     Frontend.delsys.dvbt.guard_interval = dvbfe_guard_interval(channel.Guard());
-     Frontend.delsys.dvbt.hierarchy = dvbfe_hierarchy(channel.Hierarchy());
-     Frontend.delsys.dvbt.alpha = dvbfe_alpha(channel.Alpha());
-     Frontend.delsys.dvbt.priority = dvbfe_stream_priority(channel.Priority());
+  else if (frontendType == SYS_DVBT) {
+     // DVB-T
+     SETCMD(DTV_DELIVERY_SYSTEM, frontendType);
+     SETCMD(DTV_FREQUENCY, FrequencyToHz(channel.Frequency()));
+     SETCMD(DTV_INVERSION, channel.Inversion());
+     SETCMD(DTV_BANDWIDTH_HZ, channel.Bandwidth());
+     SETCMD(DTV_CODE_RATE_HP, channel.CoderateH());
+     SETCMD(DTV_CODE_RATE_LP, channel.CoderateL());
+     SETCMD(DTV_MODULATION, channel.Modulation());
+     SETCMD(DTV_TRANSMISSION_MODE, channel.Transmission());
+     SETCMD(DTV_GUARD_INTERVAL, channel.Guard());
+     SETCMD(DTV_HIERARCHY, channel.Hierarchy());
 
      tuneTimeout = DVBT_TUNE_TIMEOUT;
      lockTimeout = DVBT_LOCK_TIMEOUT;
@@ -299,8 +332,8 @@ 
      esyslog("ERROR: attempt to set channel with unknown DVB frontend type");
      return false;
      }
-  CHECK(ioctl(fd_frontend, DVBFE_SET_DELSYS, &Frontend.delivery));
-  if (ioctl(fd_frontend, DVBFE_SET_PARAMS, &Frontend) < 0) {
+  SETCMD(DTV_TUNE, 0);
+  if (ioctl(fd_frontend, FE_SET_PROPERTY, &CmdSeq) < 0) {
      esyslog("ERROR: frontend %d: %m", cardIndex);
      return false;
      }
@@ -372,13 +405,22 @@ 
 int cDvbDevice::setTransferModeForDolbyDigital = 1;
 
 const char *DeliverySystems[] = {
-  "DVBS",
+  "UNDEFINED",
+  "DVB-C",
+  "DVB-C",
+  "DVB-T",
   "DSS",
-  "DVBS2",
-  "DVBC",
-  "DVBT",
-  "DVBH",
+  "DVB-S",
+  "DVB-S2",
+  "DVB-H",
+  "ISDBT",
+  "ISDBS",
+  "ISDBC",
   "ATSC",
+  "ATSCMH",
+  "DMBTH",
+  "CMMB",
+  "DAB",
   NULL
   };
 
@@ -386,7 +428,7 @@ 
 {
   ciAdapter = NULL;
   dvbTuner = NULL;
-  frontendType = DVBFE_DELSYS_DUMMY;
+  frontendType = SYS_UNDEFINED;
   numProvidedSystems = 0;
   spuDecoder = NULL;
   digitalAudio = false;
@@ -449,26 +491,24 @@ 
   // We only check the devices that must be present - the others will be checked before accessing them://XXX
 
   if (fd_frontend >= 0) {
-     if (ioctl(fd_frontend, DVBFE_GET_DELSYS, &frontendType) >= 0) {
-        const char **DeliverySystem = DeliverySystems;
-        cString ds;
-        for (int i = 0; i < 32; i++) {
-            if (frontendType & (1u << i)) {
-               numProvidedSystems++;
-               if (*DeliverySystem)
-                  ds = cString::sprintf("%s %s", *ds ? *ds : "", *DeliverySystem);
-               else
-                  esyslog("ERROR: unknown delivery system %d", i);
+     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_OFDM: frontendType = SYS_DVBT; break;
+          case FE_QAM:  frontendType = SYS_DVBC_ANNEX_AC; break;
+          case FE_ATSC: frontendType = SYS_ATSC; break;
+          default: esyslog("ERROR: unknown frontend type %d on device %d", frontendInfo.type, CardIndex() + 1);
                }
-            if (*DeliverySystem)
-               DeliverySystem++;
-            }
-        if (*ds)
-           isyslog("device %d provides:%s", CardIndex() + 1, *ds);
-        dvbTuner = new cDvbTuner(fd_frontend, CardIndex(), frontendType);
         }
      else
         LOG_ERROR;
+     if (frontendType != SYS_UNDEFINED) {
+        numProvidedSystems++;
+        if (frontendType == SYS_DVBS2)
+           numProvidedSystems++;
+        isyslog("device %d provides %s (\"%s\")", CardIndex() + 1, DeliverySystems[frontendType], frontendInfo.name);
+        dvbTuner = new cDvbTuner(fd_frontend, CardIndex(), frontendType);
+        }
      }
   else
      esyslog("ERROR: can't open DVB device %d", n);
@@ -789,9 +829,9 @@ 
 {
   int type = Source & cSource::st_Mask;
   return type == cSource::stNone
-      || type == cSource::stCable && (frontendType & DVBFE_DELSYS_DVBC)
-      || type == cSource::stSat   && (frontendType & (DVBFE_DELSYS_DVBS | DVBFE_DELSYS_DVBS2))
-      || type == cSource::stTerr  && (frontendType & DVBFE_DELSYS_DVBT);
+      || type == cSource::stCable && (frontendType == SYS_DVBC_ANNEX_AC || frontendType == SYS_DVBC_ANNEX_B)
+      || type == cSource::stSat   && (frontendType == SYS_DVBS || frontendType == SYS_DVBS2)
+      || type == cSource::stTerr  && (frontendType == SYS_DVBT);
 }
 
 bool cDvbDevice::ProvidesTransponder(const cChannel *Channel) const
@@ -800,7 +840,7 @@ 
      return false; // doesn't provide source
   if (!cSource::IsSat(Channel->Source()))
      return true; // source is sufficient for non sat
-  if (!(frontendType & Channel->System()))
+  if (frontendType == SYS_DVBS && Channel->System() == SYS_DVBS2)
      return false; // requires modulation system which frontend doesn't provide
   return !Setup.DiSEqC || Diseqcs.Get(Channel->Source(), Channel->Frequency(), Channel->Polarization());
 }
===================================================================
RCS file: ./RCS/dvbdevice.h
retrieving revision 2.2
diff -u -b -r2.2 ./dvbdevice.h
--- ./dvbdevice.h	2008/06/01 09:48:04	2.2
+++ ./dvbdevice.h	2008/12/06 13:31:12
@@ -15,8 +15,8 @@ 
 #include "device.h"
 #include "dvbspu.h"
 
-#if DVB_API_VERSION != 3 || DVB_API_VERSION_MINOR != 3
-#error VDR requires Linux DVB driver API version 3.3!
+#if DVB_API_VERSION != 5 || DVB_API_VERSION_MINOR != 0
+#error VDR requires Linux DVB driver API version 5.0!
 #endif
 
 #define MAXDVBDEVICES  8
@@ -35,8 +35,9 @@ 
          ///< Must be called before accessing any DVB functions.
          ///< \return True if any devices are available.
 private:
-  dvbfe_delsys frontendType;
+  dvb_frontend_info frontendInfo;
   int numProvidedSystems;
+  fe_delivery_system frontendType;
   int fd_osd, fd_audio, fd_video, fd_dvr, fd_stc, fd_ca;
 protected:
   virtual void MakePrimaryDevice(bool On);
===================================================================
RCS file: ./RCS/menu.c
retrieving revision 2.2
diff -u -b -r2.2 ./menu.c
--- ./menu.c	2008/05/01 14:37:24	2.2
+++ ./menu.c	2008/11/22 15:18:00
@@ -252,8 +252,6 @@ 
   ST("  T")  Add(new cMenuEditMapItem( tr("Transmission"), &data.transmission, TransmissionValues));
   ST("  T")  Add(new cMenuEditMapItem( tr("Guard"),        &data.guard,        GuardValues));
   ST("  T")  Add(new cMenuEditMapItem( tr("Hierarchy"),    &data.hierarchy,    HierarchyValues));
-  ST("  T")  Add(new cMenuEditMapItem( tr("Alpha"),        &data.alpha,        AlphaValues));
-  ST("  T")  Add(new cMenuEditMapItem( tr("Priority"),     &data.priority,     PriorityValues));
   ST(" S ")  Add(new cMenuEditMapItem( tr("Rolloff"),      &data.rollOff,      RollOffValues));
 
   SetCurrent(Get(current));
===================================================================
RCS file: ./RCS/nit.c
retrieving revision 2.1
diff -u -b -r2.1 ./nit.c
--- ./nit.c	2008/04/12 12:06:40	2.1
+++ ./nit.c	2008/12/06 15:46:50
@@ -127,13 +127,13 @@ 
                  int Frequency = Frequencies[0] = BCD2INT(sd->getFrequency()) / 100;
                  static char Polarizations[] = { 'h', 'v', 'l', 'r' };
                  char Polarization = Polarizations[sd->getPolarization()];
-                 static int CodeRates[] = { DVBFE_FEC_NONE, DVBFE_FEC_1_2, DVBFE_FEC_2_3, DVBFE_FEC_3_4, DVBFE_FEC_5_6, DVBFE_FEC_7_8, DVBFE_FEC_8_9, DVBFE_FEC_3_5, DVBFE_FEC_4_5, DVBFE_FEC_9_10, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_NONE };
+                 static int CodeRates[] = { FEC_NONE, FEC_1_2, FEC_2_3, FEC_3_4, FEC_5_6, FEC_7_8, FEC_8_9, FEC_3_5, FEC_4_5, FEC_9_10, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_NONE };
                  int CodeRate = CodeRates[sd->getFecInner()];
-                 static int Modulations[] = { DVBFE_MOD_AUTO, DVBFE_MOD_QPSK, DVBFE_MOD_8PSK, DVBFE_MOD_QAM16 };
+                 static int Modulations[] = { QPSK, PSK_8, QAM_16 };
                  int Modulation = Modulations[sd->getModulationType()];
-                 int System = sd->getModulationSystem() ? DVBFE_DELSYS_DVBS2 : DVBFE_DELSYS_DVBS;
-                 static int RollOffs[] = { DVBFE_ROLLOFF_35, DVBFE_ROLLOFF_25, DVBFE_ROLLOFF_20, DVBFE_ROLLOFF_UNKNOWN };
-                 int RollOff = sd->getModulationSystem() ? RollOffs[sd->getRollOff()] : DVBFE_ROLLOFF_UNKNOWN;
+                 int System = sd->getModulationSystem() ? SYS_DVBS2 : SYS_DVBS;
+                 static int RollOffs[] = { ROLLOFF_35, ROLLOFF_25, ROLLOFF_20, ROLLOFF_AUTO };
+                 int RollOff = sd->getModulationSystem() ? RollOffs[sd->getRollOff()] : ROLLOFF_AUTO;
                  int SymbolRate = BCD2INT(sd->getSymbolRate()) / 10;
                  if (ThisNIT >= 0) {
                     for (int n = 0; n < NumFrequencies; n++) {
@@ -181,9 +181,9 @@ 
                  int Source = cSource::FromData(cSource::stCable);
                  int Frequency = Frequencies[0] = BCD2INT(sd->getFrequency()) / 10;
                  //XXX FEC_outer???
-                 static int CodeRates[] = { DVBFE_FEC_NONE, DVBFE_FEC_1_2, DVBFE_FEC_2_3, DVBFE_FEC_3_4, DVBFE_FEC_5_6, DVBFE_FEC_7_8, DVBFE_FEC_8_9, DVBFE_FEC_3_5, DVBFE_FEC_4_5, DVBFE_FEC_9_10, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_NONE };
+                 static int CodeRates[] = { FEC_NONE, FEC_1_2, FEC_2_3, FEC_3_4, FEC_5_6, FEC_7_8, FEC_8_9, FEC_3_5, FEC_4_5, FEC_9_10, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_NONE };
                  int CodeRate = CodeRates[sd->getFecInner()];
-                 static int Modulations[] = { DVBFE_MOD_NONE, DVBFE_MOD_QAM16, DVBFE_MOD_QAM32, DVBFE_MOD_QAM64, DVBFE_MOD_QAM128, DVBFE_MOD_QAM256, QAM_AUTO };
+                 static int Modulations[] = { QPSK, QAM_16, QAM_32, QAM_64, QAM_128, QAM_256, QAM_AUTO };
                  int Modulation = Modulations[min(sd->getModulation(), 6)];
                  int SymbolRate = BCD2INT(sd->getSymbolRate()) / 10;
                  if (ThisNIT >= 0) {
@@ -231,22 +231,19 @@ 
                  SI::TerrestrialDeliverySystemDescriptor *sd = (SI::TerrestrialDeliverySystemDescriptor *)d;
                  int Source = cSource::FromData(cSource::stTerr);
                  int Frequency = Frequencies[0] = sd->getFrequency() * 10;
-                 static int Bandwidths[] = { DVBFE_BANDWIDTH_8_MHZ, DVBFE_BANDWIDTH_7_MHZ, DVBFE_BANDWIDTH_6_MHZ, DVBFE_BANDWIDTH_5_MHZ, DVBFE_BANDWIDTH_AUTO, DVBFE_BANDWIDTH_AUTO, DVBFE_BANDWIDTH_AUTO, DVBFE_BANDWIDTH_AUTO };
+                 static int Bandwidths[] = { 8000000, 7000000, 6000000, 0, 0, 0, 0, 0 };
                  int Bandwidth = Bandwidths[sd->getBandwidth()];
-                 static int Constellations[] = { DVBFE_MOD_QPSK, DVBFE_MOD_QAM16, DVBFE_MOD_QAM64, DVBFE_MOD_AUTO };
+                 static int Constellations[] = { QPSK, QAM_16, QAM_64, QAM_AUTO };
                  int Constellation = Constellations[sd->getConstellation()];
-                 static int CodeRates[] = { DVBFE_FEC_1_2, DVBFE_FEC_2_3, DVBFE_FEC_3_4, DVBFE_FEC_5_6, DVBFE_FEC_7_8, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO };
+                 static int Hierarchies[] = { HIERARCHY_NONE, HIERARCHY_1, HIERARCHY_2, HIERARCHY_4, HIERARCHY_AUTO, HIERARCHY_AUTO, HIERARCHY_AUTO, HIERARCHY_AUTO };
+                 int Hierarchy = Hierarchies[sd->getHierarchy()];
+                 static int CodeRates[] = { FEC_1_2, FEC_2_3, FEC_3_4, FEC_5_6, FEC_7_8, FEC_AUTO, FEC_AUTO, FEC_AUTO };
                  int CodeRateHP = CodeRates[sd->getCodeRateHP()];
                  int CodeRateLP = CodeRates[sd->getCodeRateLP()];
-                 static int GuardIntervals[] = { DVBFE_GUARD_INTERVAL_1_32, DVBFE_GUARD_INTERVAL_1_16, DVBFE_GUARD_INTERVAL_1_8, DVBFE_GUARD_INTERVAL_1_4 };
+                 static int GuardIntervals[] = { GUARD_INTERVAL_1_32, GUARD_INTERVAL_1_16, GUARD_INTERVAL_1_8, GUARD_INTERVAL_1_4 };
                  int GuardInterval = GuardIntervals[sd->getGuardInterval()];
-                 static int TransmissionModes[] = { DVBFE_TRANSMISSION_MODE_2K, DVBFE_TRANSMISSION_MODE_8K, DVBFE_TRANSMISSION_MODE_4K, DVBFE_TRANSMISSION_MODE_AUTO };
+                 static int TransmissionModes[] = { TRANSMISSION_MODE_2K, TRANSMISSION_MODE_8K, TRANSMISSION_MODE_AUTO, TRANSMISSION_MODE_AUTO };
                  int TransmissionMode = TransmissionModes[sd->getTransmissionMode()];
-                 static int Priorities[] = { DVBFE_STREAM_PRIORITY_LP, DVBFE_STREAM_PRIORITY_HP };
-                 int Priority = Priorities[sd->getPriority()];
-                 static int Alphas[] = { 0, DVBFE_ALPHA_1, DVBFE_ALPHA_2, DVBFE_ALPHA_4 };
-                 int Alpha = Alphas[sd->getHierarchy() & 3];
-                 int Hierarchy = Alpha ? DVBFE_HIERARCHY_ON : DVBFE_HIERARCHY_OFF;
                  if (ThisNIT >= 0) {
                     for (int n = 0; n < NumFrequencies; n++) {
                         if (ISTRANSPONDER(Frequencies[n] / 1000000, Transponder())) {
@@ -272,14 +269,14 @@ 
                                   }
                               }
                            if (ISTRANSPONDER(Frequency / 1000000, Transponder())) // only modify channels if we're actually receiving this transponder
-                              Channel->SetTerrTransponderData(Source, Frequency, Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode, Alpha, Priority);
+                              Channel->SetTerrTransponderData(Source, Frequency, Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode);
                            }
                         }
                     if (!found) {
                        for (int n = 0; n < NumFrequencies; n++) {
                            cChannel *Channel = new cChannel;
                            Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
-                           if (Channel->SetTerrTransponderData(Source, Frequencies[n], Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode, Alpha, Priority))
+                           if (Channel->SetTerrTransponderData(Source, Frequencies[n], Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode))
                               EITScanner.AddTransponder(Channel);
                            else
                               delete Channel;
===================================================================
RCS file: ./RCS/vdr.5
retrieving revision 2.4
diff -u -b -r2.4 ./vdr.5
--- ./vdr.5	2008/07/06 13:00:19	2.4
+++ ./vdr.5	2008/11/22 15:23:10
@@ -83,22 +83,20 @@ 
 .TS
 tab (@);
 l l.
-\fBA\fR@Alpha (0, 1, 2, 4)
-\fBB\fR@Bandwidth (5, 6, 7, 8)
-\fBC\fR@Code rate high priority (0, 12, 13, 14, 23, 25, 34, 35, 45, 56, 67, 78, 89, 910)
-\fBD\fR@coDe rate low priority (0, 12, 13, 14, 23, 25, 34, 35, 45, 56, 67, 78, 89, 910)
+\fBB\fR@Bandwidth (6, 7, 8)
+\fBC\fR@Code rate high priority (0, 12, 23, 34, 35, 45, 56, 67, 78, 89, 910)
+\fBD\fR@coDe rate low priority (0, 12, 23, 34, 35, 45, 56, 67, 78, 89, 910)
 \fBG\fR@Guard interval (4, 8, 16, 32)
 \fBH\fR@Horizontal polarization
 \fBI\fR@Inversion (0, 1)
 \fBL\fR@Left circular polarization
-\fBM\fR@Modulation (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 32, 64, 128, 256, 512, 998, 1024)
+\fBM\fR@Modulation (2, 5, 6, 10, 11, 16, 32, 64, 128, 256, 998)
 \fBO\fR@rollOff (0, 20, 25, 35)
-\fBP\fR@Priority (0, 1)
 \fBR\fR@Right circular polarization
 \fBS\fR@delivery System (0, 1)
-\fBT\fR@Transmission mode (2, 4, 8)
+\fBT\fR@Transmission mode (2, 8)
 \fBV\fR@Vertical polarization
-\fBY\fR@hierarchY (0, 1)
+\fBY\fR@hierarchY (0, 1, 2, 4)
 .TE
 
 The polarization parameters have no integer numbers following them. This is for