[linux-dvb] How to gather "Signal Quality" information from DVB drivers
wolfgang at leila.ping.de
Mon Jul 30 14:13:33 CEST 2007
On Mon, Jul 30, 2007 at 03:08:23PM +0200, Luca Olivetti wrote:
> En/na Morgan Tørvolt ha escrit:
> > your real problem is not the quality part of this equation really. It
> > is the fact that all drivers implement this differently.
> That's not surprising, since the current api specification doesn't tell
> what these values are supposed to mean
> An old version of the api did specify everythin, but various question
> here by me and others asking if the old specification is still valid (or
> if not how to fill these values) have remained unanswered.
I guess the problem is that it is not clear how one could implement
such a thing. Even with properly defined return values, you do not
know if they can always be interpreted by the application (or the
user) in the same way.
Example: C/N values have completely different ranges for DVB-C, DVB-S
In a commercial product, we helped ourselves like this for C/N:
The frontend drivers return the C/N value in tenth of dB (i.e. 56
meaning 5.6 dB), a minimum value and a maximum value. Like this, the
C/N can be displayed as a number, and a bar graph can be displayed
giving a correct scale between minimum and maximum for the frontend
A similar approach can be used for the signal strength, but here the
numeral value is not useful for display due to the tolerance and
different characteristic of different frontends. As stated, you can
at least see if there is a signal present or none at all.
Like this, we have the same API and GUI for DVB-S, DVB-T and DVB-C.
However, I know there are still frontends/demodulators that can not be
handled like this. The STV0297's register values can only be converted
to a C/N value by a lookup table, and the values are very unstable, so
you definitely have to apply strong filtering before using the values.
This is not so bad with the TDA10021/TDA10023 (DVB-C), TDA10046 (DVB-T)
and STV0299/STV0288 I am a bit familiar with. I do not know about other
I would really love to see a more sophisticated approach in a future
API version (maybe similar to the one I outlined above or better), but
I fear it might be a problem due to these "non-compliant" demodulators.
More information about the linux-dvb