Marko Ristola marko.ristola at kolumbus.fi
Wed Nov 29 22:38:51 CET 2006

Hi Elmar and Manu

Maybe the smallest improvement might be to just
adjust the wait from 50ms into 10 seconds:
if FE_TUNE_MODE_ONESHOT is in use, dvb_frontend.c
must just wait a very long time.

Here are other thoughts, that might be helpful for you to get MB86A16

I know that the values that I gave for dvb_frontend_tune_settings
might be the best values for DVB-C.
With DVB-C with me, max_drift and step_size must(?) be zero.
So no heuristics to figure out the optimal frequency.

With dvb_frontend.c frequencies are tested with steps.
One frequency step is defined with step_size.
max_drift gives an upper limit to the maximal frequency
drift based on the given original frequency. The max_drift is reached
by stepping long enough.

In dvb_frontend.c in function dvb_frontend_swzigzag_autotune() there is
heuristics for this optimal frequency selection.

That function needs nonzero max drift and step size.
Maybe the unit is HZ on both of them.

dvb_frontend_swzigzag_autotune() function assumes that  
fe->ops.set_frontend() is a simple function:
Inversion selection and small frequency tuning are done in dvb_frontend.c.

That's what I found with cu1216.c with frequency setting function:
by simplifying cu1216.c I managed to make cu1216.c to work.

dvb_frontend.c assumes, that cu1216.c has a simple frequency
setting with no inversion heuristics and with no frequency drift 
heuristics of it's own.
cu1216_set_parameters() has also a very short maximum delay on my 
That made dvb_frontend.c to do correct and successful
LOCK heuristics for me.

cu1216.c still figures out best gain setting for the given frequency and 
That is not done in dvb_frontend.c.

So you could do further testing by simplfying mb86a16.c and testing
with different values on step_size and max_drift.

The problems seem to be mostly on software side, so it is this heuristics
and mb86a16_set_frontend() and mb86a16_mb86a16_read_status() function 
that are critical for lock acquirance.

Marko Ristola

Elmar Schmidt kirjoitti:
> Hi,
> I aded the Lines from Marko Ristola to my cu1216.c File.
> Anywere:
> ---
> static int cu1216_get_tune_settings(struct dvb_frontend* fe, struct
> dvb_frontend_tune_settings* settings)
> {
>     settings->min_delay_ms = 50;
>     settings->step_size = 0; /* FE_QAM: zero */
>     settings->max_drift = 0; /* FE_QAM: zero */
>     return 0;
> }
> ---
> In dvb_frontend_ops:
> ---
> .get_tune_settings            = cu1216_get_tune_settings,
> ---
> But it doesnt work. Same Output like before this Changes :(
> Is anything wrong with this Changes? Wrong Lines maybe?
> After i added these Changes I did the following:
> make all
> cp v4l/cu1216.kp /lib/modules/kernel/drivers/media/dvb/mantis/
> make install
> modules-update
> depmod -a
> Infos:
> amd64 Gentoo 2006.1
> PS: Hope this opens not a new Thread. If this Mail opens a new Thread, 
> so I have to say sorry. I dont get the Answeres in my E-Mail Programm 
> to work.
> --Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
> _______________________________________________
> linux-dvb mailing list
> linux-dvb at linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

More information about the linux-dvb mailing list