[linux-dvb] Asus Tiger can't find any channels (INVERSION_AUTO problem?, test case suggested here)

Marko Ristola marko.ristola at kolumbus.fi
Tue Oct 9 22:23:16 CEST 2007

Hi Anssi,

In this email I have a testing case for you.
With good luck, your problem will even be identified.

Hi Manu,

Unfortunately I don't know how to adjust VDR or Kaffeine so that
it would use a fixed inversion value. I don't know how to tune
kernel module parameters to fix that either. I'd like to see
that the DVB kernel driver work for me without searching tweaks
from the Internet.

I don't know how Kaffeine or VDR can take the inversion value
as a configuration parameter to be able to scan:
Kaffeine won't find any channels on scanning
if AUTO mode doesn't work, for me here in Finland, in Espoo city, with 

I understand that on every Linux DVB kernel driver, INVERSION_AUTO
means that the driver should try both. That's how dvb_frontend.c
implements INVERSION_AUTO. It is designed to try both.
Thus I think that Kaffeine doesn't have a bug in this case.
dvb_frontend.c implements the heuristics in a smart and
a working way also.

Experience with cu1216.c's INVERSION_AUTO Heuristics

My DVB-C PCI card uses cu1216.c (Manu's branch).
That file has it's own inversion heuristics currently,
but unfortunately the heuristics tries repeatedly INVERSION=0 and never
inversion=1 with INVERSION_AUTO. I'd like that you Manu would accept a 
fix for that
some day.

So here is the currently buggy (on my opinion) version in latest Manu's 
branch on cu1216.c:
1. If dvb_frontend.c orders you to use INVERSION=0, use INVERSION=0.
2. If dvb_frontend.c orders you to use INVERSION=1, use INVERSION=0 
instead. BUG!

Here is the behaviour that I'd like to see in latest Manu's branch on 
1. If dvb_frontend.c orders you to use INVERSION=0, use INVERSION=0.
2. If dvb_frontend.c orders you to use INVERSION=1, use INVERSION=1.

Suggesting a Test Case for Anssi's DVB-T Driver

I checked linux/drivers/media/dvb/frontends/tda1004x.c

There is the following code block in tda1004x_set_fe function:

794:    if (state->config->invert)
795:       inversion = inversion ? INVERSION_OFF : INVERSION_ON;

Would you Anssi please comment rows 794 and 795 out and add a debug line:
/*    if (state->config->invert) */
/*        inversion = inversion ? INVERSION_OFF : INVERSION_ON; */
    dprintk("inversion=%d\n", fe_params->inversion);

With this, I think that you might have a better chance to get a LOCK with
Kaffeine while scanning. How does your inversion=0/1 messages look like
with my test case?

Could you Anssi test my little fix suggestion, please? Does it help?

More about Inversion heuristics

dvb_frontend.c implements INVERSION_AUTO so, that if you switch frequency
and previous INVERSION=0 succeeded, it will try INVERSION=0 first. Thus 
no unnecessary delays. Same applies to INVERSION=1. Thus only the initial
scanning is slower in Europe, in the US and in Finland. Of course it is 
better, if Kaffeine
and VDR would not use INVERSION_AUTO after the scan, while watching the 

Have I Manu understood something wrong with
this INVERSION_AUTO thing? I know that there are many users that don't
need INVERSION=1 ever. If the driver tries INVERSION=1 at least once on 
scanning or TV watching, that time (maybe a second) is just wasted time.
Unfortunately disabling INVERSION=1 on INVERSION_AUTO hurts every
people that depend on INVERSION=1, because with them scanning and 
watching doesn't work at all. Of course I think that if the scanning has 
been done and results
stored into a file, Kaffeine and VDR should use fixed INVERSION=0/1 
values with channel watching.

Best Regards for both of you, Manu and Anssi!
Marko Ristola

Manu Abraham wrote:
> Marko Ristola wrote:
>> One thing is, that INVERSION=1 is used in Finland.
>> might not work in kernel drivers if the INVERSION_AUTO
>> is implemented in software, as it is with Twinhan
>> Cab-CI 2033.
> If you need INVERSION=1(INVERSION_ON) , why do you specify 
> INVERSION=AUTO in userspace. Seems like incorrect behaviour 
> in a userspace application or configuration.

More information about the linux-dvb mailing list