On 20.05.2012 10:55, Juergen Lock wrote:
On Sat, May 19, 2012 at 11:57:35PM +0200, Klaus Schmidinger wrote:
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?

Heh.

  Because a) it's usb, b) I'm on FreeBSD which doesn't emulate Linux'
/sys/class/dvb nodes and finding out which /dev/dvb node belongs
to which usbid isn't as straightforward there, and c) I was wondering
if the bug maybe affects all STB0899 frontends not just some.

Ah, I see.

Well, maybe if this is common to all STB0899 frontends it could even be
fixed in the driver itself ;-)
I always thought that the *driver* should provide a normalized interface
for getting signal strength and snr. It can't be reasonable that every
application has to figure these out by itself.

Klaus

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

Reply via email to