[linux-dvb] QAM 256 starts kicking out VDR widespread TT/FuSi FF cards / on AGC, etc, IMPL and Filter Optimisation

thomas schorpp t.schorpp at gmx.de
Wed Aug 2 18:27:26 CEST 2006

patch contains correction for viterbi monitor flag, wrong SYNC register 
bit used before in ves1820.c(?).
cant use hg head - doesnt build dvb-ttpci.ko dont know why, yet.


<schorpp> lo
<schorpp> I am on the qam256 problems with some FF cards dvb
<schorpp> created a diagnostics patch for ves1820.c
<schorpp> after trial'n'error with AGCCONF register the register readings are wrong although the register accepts my values
<schorpp> Aug  2 14:51:28 tom1 kernel: ves1820: VAGC 0xff
<schorpp> Aug  2 14:51:28 tom1 kernel: ves1820: AGCCONF 0x13
<schorpp> Aug  2 14:51:28 tom1 kernel: ves1820: PWMREF 0x13
<schorpp> it always reads 0x13 whatever i write to the reg
<schorpp> may the av7110 firmware interfere?
<schorpp> not opened the box yet
<schorpp> PIN VAGC is connected to AGC input of fusi dvb-c, right?
<schorpp> seems no regulation IMPL
<schorpp> dev-list says why
<schorpp> many different tuners
<schorpp> source says of a pwm data member
* timonator (n=timonato at p508557F3.dip.t-dialin.net) has joined #linuxtv
<schorpp> it is configured used to control PIN FEL
<schorpp> what do you control with pwm value?
<schorpp> ADC input of tuner PLL?
<schorpp> ?
<KeefR> aren't there some registers, that are write-only?
<schorpp> KeefR, yes but..
<schorpp> none of those i used
<schorpp> and no if then only read only
<schorpp> ...
<schorpp> 1st i want to try is AGC working
<schorpp> 2nd filters adaption if neccessary
<schorpp> need AGC cause incoming signal is out of ADC capture range (clipping)
<schorpp> ves1820 ADC
<schorpp> Aug  2 14:51:28 tom1 kernel: ves1820: VAFC -3
<schorpp> normal, works on qam64 channels
<KeefR> got a ves1820, too, but qam256 works here
<schorpp> KeefR: manufacturer and type of card, driver version?
<schorpp> cable provider? ;)
<schorpp> which
<schorpp> ...
<schorpp> yes much things DO WORK FOR ME too ;)
<schorpp> ok showing code..
<schorpp> heres the diag patch:
<schorpp> http://paste.lisp.org/display/23544
<schorpp> http://pastebin.com/761837
<schorpp> pls review
<KeefR> schorpp: hauppage dvb-c rev 2.1, kable-bw, cvs driver (6ebb57bfac7d)
<schorpp> old cvs or hg ?
<schorpp> :)
<schorpp> list states there were problems with this card 
<schorpp> around may 06
<schorpp> interesting
<KeefR> hg
<KeefR> but i have probs tuning to higher frequencies, not enough snr, some channels aren't even revognized
<schorpp> no relevant changes for this problem head
<schorpp> probs?
<schorpp> which cable provider? 2nd Q
<KeefR> kabel-bw
<schorpp> me too :o
<schorpp> <-- karlsruhe süd
<KeefR> status 1f | signal ffff | snr ecec | ber 00100824 | unc 00000001 | FE_HAS_LOCK
<KeefR> fta radio with 256qam at 650mhz
<schorpp> ber too high
<KeefR> muehlburg ;-)
<KeefR> it works
<schorpp> hehe
<KeefR> but higher than 650mhz there are more probs, orf with 256qam at 450mhz is no probs
* schorpp gives KeefR a cold fresh beer
<KeefR> no beer today...had enough the last two days
<schorpp> *whine* cant get orf1
<schorpp> FE: VLSI VES1820 DVB-C (DVBC)
<schorpp> status SCVYL | signal ffff | snr ecec | ber 004bb310 | unc ffffffff | FE_HAS_LOCK
<schorpp> status SCVYL | signal ffff | snr e3e3 | ber 004dc0d8 | unc ffffffff | FE_HAS_LOCK
<schorpp> :(
<schorpp> house amp is wisi vx63
<KeefR> status 1f | signal ffff | snr eeee | ber 0002fc42 | unc 00000000 | FE_HAS_LOCK
<KeefR> orf1
<KeefR> don't know about the house amp
* schorpp gives KeefR a coffee
<schorpp> go downstairs ;)
<KeefR> but normal cables didn't work, had to make one myself
<schorpp> yeah me too, from mükra shop
<schorpp> unchristian expensive :[
<KeefR> well, last weekend i bought one at familia...10 euro for 3m, but that one works as well as my selfmade
<schorpp> :/ LOL
* alan|philo has quit ("Leaving")
<KeefR> i'm thinking about buying an amplifier
<KeefR> but I'll probably try to rent a dvb-c receiver first and check with that one
<schorpp> yeah
<schorpp> me too looking for someone who has got latest kabelbox version
<KeefR> at least the house amp isn't limited to 450mhz
-------------- next part --------------
--- ves1820.c 2006-07-25 05:36:01.000000000 +0200
+++ ves1820.c	2006-08-01 23:15:16.000000000 +0200
@@ -240,26 +240,36 @@
 static int ves1820_read_status(struct dvb_frontend* fe, fe_status_t* status)
 	struct ves1820_state* state = fe->demodulator_priv;
-	int sync;
+	u8 sync = ves1820_readreg(state, 0x11);
+	u8 vagc = ves1820_readreg(state, 0x17);
+	u8 mse = ves1820_readreg(state, 0x18);
+	u8 pwmref = ves1820_readreg(state, 0x34);
+	s8 vafc = ves1820_readreg(state, 0x19);
 	*status = 0;
-	sync = ves1820_readreg(state, 0x11);
-	if (sync & 1)
+	if (sync & 1) {
 		*status |= FE_HAS_SIGNAL;
+		*status |= FE_HAS_VITERBI;
+	}
 	if (sync & 2)
 		*status |= FE_HAS_CARRIER;
-	if (sync & 2)	/* XXX FIXME! */
-		*status |= FE_HAS_VITERBI;
 	if (sync & 4)
 		*status |= FE_HAS_SYNC;
 	if (sync & 8)
 		*status |= FE_HAS_LOCK;
+	if (verbose) {
+		printk("\n ves1820: Verbose Status: \n");
+		if (sync & 64) printk("ves1820: NODVB The framing of the Stream is not DVB compliant! \n");
+		printk("ves1820: VAFC %d \n", vafc);
+		printk("ves1820: VAGC 0x%02x \n", vagc);
+		printk("ves1820: PWMREF 0x%02x \n", pwmref);
+		printk("ves1820: MSE 0x%02x \n", mse);
+		printk("ves1820: BER-RANGE %d \n", !(sync >> 4));
+	}
 	return 0;
@@ -313,11 +323,8 @@
 static int ves1820_get_frontend(struct dvb_frontend* fe, struct dvb_frontend_parameters *p)
 	struct ves1820_state* state = fe->demodulator_priv;
-	int sync;
-	s8 afc = 0;
-	sync = ves1820_readreg(state, 0x11);
-	afc = ves1820_readreg(state, 0x19);
+	u8 sync = ves1820_readreg(state, 0x11);
+	s8 afc = ves1820_readreg(state, 0x19);
 	if (verbose) {
 		/* AFC only valid when carrier has been recovered */
 		printk(sync & 2 ? "ves1820: AFC (%d) %dHz\n" :
@@ -387,11 +394,14 @@
 	state->pwm = pwm;
 	/* check if the demod is there */
-	if ((ves1820_readreg(state, 0x1a) & 0xf0) != 0x70)
+	u8 id = ves1820_readreg(state, 0x1a);
+	if ((id & 0xf0) != 0x70)
 		goto error;
-	if (verbose)
+	else
+	if (verbose) {
+		printk("ves1820: Detected Chip Version 0x%02x\n", id);
 		printk("ves1820: pwm=0x%02x\n", state->pwm);
+	}
 	state->ops.info.symbol_rate_min = (state->config->xin / 2) / 64;      /* SACLK/64 == (XIN/2)/64 */
 	state->ops.info.symbol_rate_max = (state->config->xin / 2) / 4;       /* SACLK/4 */

More information about the linux-dvb mailing list