Since VDR 1.3 series (released about 3-5 years ago I think), VDR updates the ca field of channels.conf entry automatically. However, value "1" has a special meaning to VDR. It will force the use of DVB card 1 to receive the channel, and will not update the ca field to its proper value.

However, scan defaults to setting ca value to 1 on encrypted channels, which does not make sense.

The attached patch adds a new default value "-1" to "-x" parameter and sets vdr default version to "3" instead of the now obsolete "2". With the new value "-1" scan will set ca field of all channels to "0" and let VDR update the field properly.

--
Anssi Hannula
diff -r 4bca5d49c9bd util/scan/dump-vdr.c
--- a/util/scan/dump-vdr.c      Tue Sep 11 21:32:03 2007 +0200
+++ b/util/scan/dump-vdr.c      Sat Sep 22 19:34:14 2007 +0300
@@ -138,7 +138,7 @@ void vdr_dump_service_parameter_set (FIL
 {
         int i;
 
-       if ((video_pid || audio_pid[0]) && ((ca_select > 0) || ((ca_select == 
0) && (scrambled == 0)))) {
+       if (video_pid || audio_pid[0]) {
                if (vdr_version <= 2) {
                        audio_lang = NULL;
                        network_id = 0;
@@ -174,7 +174,15 @@ void vdr_dump_service_parameter_set (FIL
                        if (audio_lang && audio_lang[0][0])
                                fprintf (f, "=%.4s", audio_lang[0]);
                }
-               if (scrambled == 1) scrambled = ca_select;
+               if (scrambled == 1) {
+                       if (ca_select == -1)
+                               if (vdr_version <= 2)
+                                       scrambled = 1;
+                               else
+                                       scrambled = 0;
+                       else
+                               scrambled = ca_select;
+               }
                fprintf (f, ":%d:%d:%d:%d:%d:0", teletext_pid, scrambled,
                                service_id, network_id, transport_stream_id);
                fprintf (f, "\n");
diff -r 4bca5d49c9bd util/scan/scan.c
--- a/util/scan/scan.c  Tue Sep 11 21:32:03 2007 +0200
+++ b/util/scan/scan.c  Sat Sep 22 19:46:02 2007 +0300
@@ -61,9 +61,9 @@ static int vdr_dump_channum;
 static int vdr_dump_channum;
 static int no_ATSC_PSIP;
 static int ATSC_type=1;
-static int ca_select = 1;
+static int ca_select = -1;
 static int serv_select = 7;
-static int vdr_version = 2;
+static int vdr_version = 3;
 static struct lnb_types_st lnb_type;
 static int unique_anon_services;
 
@@ -2082,14 +2082,15 @@ static const char *usage = "\n"
        "       -5      multiply all filter timeouts by factor 5\n"
        "               for non-DVB-compliant section repitition rates\n"
        "       -o fmt  output format: 'zap' (default), 'vdr' or 'pids' 
(default with -c)\n"
-       "       -x N    Conditional Axcess, (default 1)\n"
+       "       -x N    Conditional Access, (default -1)\n"
        "               N=0 gets only FTA channels\n"
+       "               N=-1 gets all channels\n"
        "               N=xxx sets ca field in vdr output to :xxx:\n"
        "       -t N    Service select, Combined bitfield parameter.\n"
        "               1 = TV, 2 = Radio, 4 = Other, (default 7)\n"
        "       -p      for vdr output format: dump provider name\n"
-       "       -e N    VDR version, default 2 for VDR-1.2.x\n"
-       "               ANYTHING ELSE GIVES NONZERO NIT and TID\n"
+       "       -e N    VDR version, default 3 for VDR-1.3.x and newer\n"
+       "               value 2 sets NIT and TID to zero\n"
        "               Vdr version 1.3.x and up implies -p.\n"
        "       -l lnb-type (DVB-S Only) (use -l help to print types) or \n"
        "       -l low[,high[,switch]] in Mhz\n"
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

Reply via email to