[vdr] adjust range of snr bar at bottom of vdr screen?

Klaus Schmidinger Klaus.Schmidinger at tvdr.de
Tue Dec 4 22:40:56 CET 2012

On 04.12.2012 20:35, cedric.dewijs at telfort.nl wrote:
> Hi All,
> I use an USB DVB-T receiver. This works ok, but the snr meter at the bottom
> of the screen is never filled more than a few pixels, no matter how good
> the signal is. The problem with this receiver is that the snr figure never
> goes above 0x00d0. Is there a way to adjust the scaling of the signal and
> snr bars? I would like the snr bar to be fully filled when the figure is
> 0x00ff
> Best regards,
> Cedric
> $ lsusb
> Bus 001 Device 004: ID 2013:0245 PCTV Systems PCTV 73ESE
> $ tzap -a 0 -r 'Nederland 1'
> using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
> reading channels from file '/home/cedric/.tzap/channels.conf'
> tuning to 474000000 Hz
> video pid 0x1b63, audio pid 0x1b64
> status 1b | signal 0dbd | snr 00a2 | ber 001fffff | unc 00000000 | FE_HAS_LOCK
> $ dmesg
> [ 3.519233] dvb-usb: found a 'Pinnacle PCTV 73e SE' in cold state, will
> try to load a firmware
> [ 3.529962] dvb-usb: downloading firmware from file 'dvb-usb-dib0700-1.20.fw'
> [ 3.871202] dib0700: firmware started successfully.
> [ 4.373456] dvb-usb: found a 'Pinnacle PCTV 73e SE' in warm state.
> [ 4.373567] dvb-usb: will pass the complete MPEG2 transport stream to
> the software demuxer.
> [ 4.373732] DVB: registering new adapter (Pinnacle PCTV 73e SE)
> [ 4.568680] DVB: registering adapter 0 frontend 0 (DiBcom 7000PC)...
> [ 4.766795] DiB0070: successfully identified
> [ 4.830021] Registered IR keymap rc-dib0700-rc5
> [ 4.831325] input: IR-receiver inside an USB DVB receiver as /devices/pci0000:00/0000:00:10.4/usb1/1-6/rc/rc0/input6
> [ 4.831485] rc0: IR-receiver inside an USB DVB receiver as /devices/pci0000:00/0000:00:10.4/usb1/1-6/rc/rc0
> [ 4.831681] dvb-usb: schedule remote query interval to 50 msecs.
> [ 4.831688] dvb-usb: Pinnacle PCTV 73e SE successfully initialized and
> connected.

It's a real pitty that the DVB drivers don't provide a standardized way of
getting signal strength and quality. They all deliver some bogus values
in various different ranges, which are pretty useless to applications.
That's why VDR's cDvbTuner tries to work around this deficiency in its
cDvbTuner::GetSignalStrength() and cDvbTuner::GetSignalQuality() functions by
scaling the individual values so that they fall into a defined range of 0..100.
See these functions in dvbdevice.c and how they use the subsystemId to set
an individual maximum value for the "TT-budget S2-3200". Maybe you can do something
similar for your device.
Please send me a proper patch if you have any success with this.


P.S.: ceterum censeo: the DVB drivers should finally get an interface that delivers
these values right away. After all, the driver is the only place where this can be
done reasonably. It wouldn't even matter whether the range is 0..100, 0x0000..0xFFFF
or anything else - just the *same* for all drivers! Or does this already exist and
I just missed it?

More information about the vdr mailing list