On 19.05.2012 22:32, Juergen Lock wrote:
Hi!

(I guess the forums are not the best place to post this, hence
reposted here...)

  By accident I stumbled across the special case for TT-budget S2-3200
(DVB-S/DVB-S2) in vdr's dvbdevice.c, and since both my tuners using
the pctv452e driver have the same issue (which are STB0899 too,
issue is the red/yellow/green bars in femon/osd didn't appear)
I added an OPTION to the FreeBSD port (STB0899_SIGNAL in the port's
make config menu) to enable the patch below.  Optional since I don't
know if there are STB0899-based tuners that don't have the problem,
does anyone here know?  (see log, if vdr logs like

        vdr: [29376960] frontend 0/0 provides DVB-S,DVB-S2,DSS with QPSK ("STB0899 
Multistandard")

and the bars appear without the patch please let us know, noting
pci ids for the cards especially if different from 0x13c2:0x1019
or if it's usb, thanx!)

  Cheers,
        Juergen

And here comes the patch, also at:

        
http://www.freebsd.org/cgi/cvsweb.cgi/ports/multimedia/vdr/files/stb0899-signalstrength.patch?rev=1.2;content-type=text%2Fplain

--- dvbdevice.c.orig
+++ dvbdevice.c
@@ -560,6 +560,12 @@ int cDvbTuner::GetSignalStrength(void) c
    switch (subsystemId) {
      case 0x13C21019: MaxSignal = 670; break; // TT-budget S2-3200 
(DVB-S/DVB-S2)
      }
+#if 1
+  // XXX This is likely not correct for all cards using stb0899
+  // but pctv452e usb ones seem to be affected too...
+  if (!strcmp(device->DeviceName(), "STB0899 Multistandard"))
+    MaxSignal = 670;
+#endif
    int s = int(Signal) * 100 / MaxSignal;
    if (s>  100)
       s = 100;
@@ -632,6 +638,12 @@ int cDvbTuner::GetSignalQuality(void) co
       switch (subsystemId) {
         case 0x13C21019: MaxSnr = 200; break; // TT-budget S2-3200 
(DVB-S/DVB-S2)
         }
+#if 1
+     // XXX This is likely not correct for all cards using stb0899
+     // but pctv452e usb ones seem to be affected too...
+     if (!strcmp(device->DeviceName(), "STB0899 Multistandard"))
+       MaxSnr = 200;
+#endif
       int a = int(Snr) * 100 / MaxSnr;
       int b = 100 - (Unc * 10 + (Ber / 256) * 5);
       if (b<  0)

Maybe I'm missing something here, but why don't you just add the subsystem id 
of your card
to the switch statements?

Klaus

_______________________________________________
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr

Reply via email to