[linux-dvb] [Proposal] Meaningful reporting of SNR

Mauro Carvalho Chehab mchehab at infradead.org
Fri Apr 14 12:48:28 CEST 2006

Let me include my 2 cents at this issue.

I think the big problem we have is that we have about to nothing at the
current way this is implemented on some drivers and its usage at

I'm currently working at cx24123 SNR estimation, based on BER, since it
doesn't seem to have a SNR indicator.

As all know, very short variations at SNR means high BER. To avoid
complex integer math, for log10, I've just used several linear
interpolations at the cx24123 code, since the error between such
approach and the real values are less than the measure error, if the
linear segments were proper selected.

The code is working fine, but I have a big challenge now:
The userspace app I'm working (kaffeine - I think it is the only app
that were already fixed to work at C-BAND) shows SNR as a 0 to 100%
range, with is meaningless on cx24123: from "100%" to "99%", the signal
varies from "very good" to "just random noise", since BER=5500 (99%)
just generates a very bad image, were almost all blocks are compromised.
The dynamic range of the current code is bad, because of that.

I dunno how the values were determined by the original author, but it
seemed to me that they are based on a SNR x BER curve, since the points
were clearly at an exponential curve.

So, it seemed to me that:

1) Technically, SNR calculation at cx24123, based on BER is now ok after
my patches (except for the fact that 100% is not a dB measure);

2) For SNR to be converted to "quality", i.e. to have some relevance to
normal users, apps should do: exp10(SNR). Maybe a better quality
indicator to the applications would be BER or UCB, instead of SNR;

3) Having a SNR indication is good, especially on satellite systems
(like DVB-S) to allow checking if antenna positioning remains correct.
As wind may move the antenna, a precise SNR, together with signal
strengh helps to detect antenna misalignment. It also helps detecting
other issues like obstructions or interferences caused by other antenas
emitting high power signals next to the sat dish.


1) I think we should try to have SNR as close as possible to a real dB

2) maybe creating a "quality" indicator at driver would be interesting,
ranging from 0% to 100%, were 100% meaning high SNR or 0 BER, and 0% no
image at all;

3) It would be interesting if dvbscan would print SNR, BER and UCB.


More information about the linux-dvb mailing list