Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: Budget DVB-C tuning problems



From: "Ingolf Haberer" <ingy@vorabend-einchecker.de>
> Me  too! Me too! (DVB-C in Berlin, Germany)

Ah! That I can directly relate to ;)

> kernel: ves1820_ioctl FE_READ_STATUS status=0x7   AFC=19 3997400Hz
> kernel: ves1820_ioctl FE_READ_STATUS status=0x7   AFC=19 0Hz

Hmm, the AFC output appears to be somewhat buggy:

if (sync & 2)
   /* AFC only valid when carrier has been recovered */
			   afc = ves1820_readreg(fe, 0x19);
		if (verbose)
   printk ("DVB: VES1820(%d): AFC (%d) %dHz\n",
				  	fe->i2c->adapter->num, afc,
					       -((s32)(p->u.qam.symbol_rate >> 3) * afc >> 7));

It doesn't make sense to output AFC if it hasn't been read, and AFC is
interesting even if there is no sync. Also, the frequency offset
calculation does not quite match the VES1820 docs. Try this instead:

if (verbose)
{
 afc = ves1820_readreg(fe, 0x19);
 printk ("DVB: VES1820(%d): AFC (%d) %dHz\n",
  fe->i2c->adapter->num, afc,
  ((s32)(p->u.qam.symbol_rate * afc) >> 10));
};

Anyway, back to your output:

> last message repeated 9 times
> kernel: ves1820_ioctl FE_READ_STATUS status=0x7   AFC=19 3997400Hz

If the calculated AFC is right (which doesn't match AFC=19...), this looks
like the "AFC getting stuck" I had mentioned earlier. You need to reset the
VES1820 at this point to reset the AFC logic and make it sync.

> I did the following:
> In ves1820_setup_reg0 I "outcommented" the first two ves1820_writereg
> (fe, 0x00,... lines.

That's the demodulator reset. Believe me, you _do_ need it if the AFC gets
stuck!

> Now I removed *both* reset lines in ves1820_setup_reg0()
> and it seems to work - even after power off/on:
> kernel: tuner_set_tv_freq freq=410000000
> kernel: tuner_set_tv_freq freq=394000000
> kernel: tuner_set_tv_freq freq=410000000
> kernel: tuner_set_tv_freq freq=394000000

Exactly, it only _seems_ to work. Your test coverage was not extensive
enough. I found that the most difficult channel changes to the VES1820 are
between _adjacent_ channels, especially in downwards direction. Especially
switching from S41 (466MHz) down to SK40 (458MHz) seems to be a problem to
this board. Try switching between 442MHz, 450MHz, 458MHz and 446MHz up- and
downwards a few times - I think you'll get a "no lock" very soon. You
really need to implement the VAFC check and reset the VES1820 if VAFC runs
out of a minimum range.

Regards,
--
Robert Schlabbach
e-mail: robert_s@gmx.net
Berlin, Germany



-- 
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index