[linux-dvb] [PATCH]Fix a bug in scan, which outputs the wrong frequency if the current tuned transponder is scanned only

e9hack e9hack at googlemail.com
Wed Dec 3 18:13:11 CET 2008


Alex Betis schrieb:
>>> If you use S2API driver, please try my scan-s2 from here:
>>> http://mercurial.intuxication.org/hg/scan-s2/
>> If I use 'scan-s2 -c -o vdr', the output is wrong. I get:
>>
>> Bayerisches FS Süd;ARD:201:202=deu,203=2ch;206=deu:204:0:28107:41985:1101:0
>>
>> I should get:
>>
>> Bayerisches FS
>> Süd;ARD:346:M256:C:6900:201:202=deu,203=2ch;206=deu:204:0:28107:41985:0:0
>>
>> Frequency, modulation, DVB type and symbol rate are still missing.
> 
> That's interesting. That means the utility doesn't know what delivery system
> is used. Probably because it didn't tune the driver.
> I'll check that. It should happen with DVB-S as well.

For the current transponder scanning, it isn't set any filter for NIT parsing. Since the
output format is zap and vdr only, it must be always setup a NIT filter:

diff -r 51eceb97c3bd scan.c
--- a/scan.c    Mon Dec 01 23:36:50 2008 +0200
+++ b/scan.c    Wed Dec 03 18:04:10 2008 +0100
@@ -2495,7 +2503,7 @@ static void scan_tp_dvb (void)
        add_filter (&s0);
        add_filter (&s1);

-       if (!current_tp_only) {
+       if (/*!current_tp_only*/1) {
                setup_filter (&s2, demux_devname, PID_NIT_ST, TID_NIT_ACTUAL, -1, 1, 0,
15); /* NIT */
                add_filter (&s2);
                if (get_other_nits) {

> Can you scan the same channel without "-c" and report if the dump is
> correct?

I need a little patch for tuning to DVB-C transponders:

diff -r 51eceb97c3bd scan.c
--- a/scan.c    Mon Dec 01 23:36:50 2008 +0200
+++ b/scan.c    Wed Dec 03 18:04:10 2008 +0100
@@ -1729,6 +1729,14 @@ static int __tune_to_transponder (int fr

        switch(t->delivery_system)
        {
+       case SYS_DVBC_ANNEX_AC:
+               if_freq = t->frequency;
+
+               if (verbosity >= 2){
+                       dprintf(1,"DVB-C frequency is %d\n", if_freq);
+               }
+               break;
+
        case SYS_DVBS:
        case SYS_DVBS2:
                if (lnb_type.high_val) {

It seems that the output is correct (currently not tested with vdr).

Regards,
Hartmut



More information about the linux-dvb mailing list