ves1x93 improvement

Sklaventreiber
Striper
Erleuchteter
Erleuchteter
Beiträge: 625
Registriert: Samstag 8. September 2007, 15:17

ves1x93 improvement

Beitrag von Striper »

Hab den Patch aus einem anderen Forum. Stammte damals glaube ich von Nico77. Läuft schon seit Jahren Problemlos in diversen Images.

- Kein "Kanal nicht verfügbar" auf seltenen Nokia Revisionen
- etwas schnellere Umschaltzeiten
- Registeranpassung
- Revisionsausgabe
- Whitespace cleanup

Code: Alles auswählen

Index: ves1x93.c
===================================================================
RCS file: /cvs/tuxbox/driver/dvb/drivers/media/dvb/frontends/ves1x93.c,v
retrieving revision 1.21
diff -u -r1.21 ves1x93.c
--- ves1x93.c	4 Nov 2005 17:50:08 -0000	1.21
+++ ves1x93.c	5 Jun 2006 16:51:00 -0000
@@ -28,9 +28,11 @@
 #include <linux/init.h>
 #include <linux/string.h>
 #include <linux/slab.h>
+#include <linux/delay.h>
 
 #include "dvb_frontend.h"
-
+#include "dvb_functions.h"
+  
 static int debug = 0;
 #define dprintk	if (debug) printk
 
@@ -48,12 +50,12 @@
 	.type			= FE_QPSK,
 	.frequency_min		= 950000,
 	.frequency_max		= 2150000,
-	.frequency_stepsize	= 250,           /* kHz for QPSK frontends */
+	.frequency_stepsize	= 125,		 /* kHz for QPSK frontends */
 	.frequency_tolerance	= 29500,
 	.symbol_rate_min	= 1000000,
 	.symbol_rate_max	= 45000000,
-/*      .symbol_rate_tolerance	=	???,*/
-	.notifier_delay		= 50,                /* 1/20 s */
+/*	.symbol_rate_tolerance	=	???,*/
+	.notifier_delay		= 50,		     /* 1/20 s */
 	.caps = FE_CAN_INVERSION_AUTO |
 		FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
 		FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
@@ -78,7 +80,7 @@
 
 
 static u8 init_1993_tab [] = {
-	0x00, 0x9c, 0x35, 0x80, 0x6a, 0x09, 0x72, 0x8c,
+	0x00, 0x9c, 0x35, 0x80, 0x6a, 0x0b, 0x72, 0x8c,
 	0x09, 0x6b, 0x00, 0x00, 0x4c, 0x08, 0x00, 0x00,
 	0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x80, 0x40, 0x21, 0xb0, 0x00, 0x00, 0x00, 0x10,
@@ -109,19 +111,24 @@
 	1,1,1,0,1,1,1,1, 1,1,1,1,1
 };
 
+struct ves1x93_state {
+	fe_spectral_inversion_t inversion;
+};
+
+
 
 static int ves1x93_writereg (struct dvb_i2c_bus *i2c, u8 reg, u8 data)
 {
-        u8 buf [] = { 0x00, reg, data };
+	u8 buf [] = { 0x00, reg, data };
 	struct i2c_msg msg = { .addr = 0x08, .flags = 0, .buf = buf, .len = 3 };
 	int err;
 
-        if ((err = i2c->xfer (i2c, &msg, 1)) != 1) {
+	if ((err = i2c->xfer (i2c, &msg, 1)) != 1) {
 		dprintk ("%s: writereg error (err == %i, reg == 0x%02x, data == 0x%02x)\n", __FUNCTION__, err, reg, data);
 		return -EREMOTEIO;
 	}
 
-        return 0;
+	return 0;
 }
 
 
@@ -144,17 +151,17 @@
 
 static int tuner_write (struct dvb_i2c_bus *i2c, u8 *data, u8 len)
 {
-        int ret;
-        struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = data, .len = len };
+	int ret;
+	struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = data, .len = len };
 
 	ves1x93_writereg(i2c, 0x00, 0x11);
-        ret = i2c->xfer (i2c, &msg, 1);
+	ret = i2c->xfer (i2c, &msg, 1);
 	ves1x93_writereg(i2c, 0x00, 0x01);
 
-        if (ret != 1)
-                printk("%s: i/o error (ret == %i)\n", __FUNCTION__, ret);
+	if (ret != 1)
+		printk("%s: i/o error (ret == %i)\n", __FUNCTION__, ret);
 
-        return (ret != 1) ? -1 : 0;
+	return (ret != 1) ? -1 : 0;
 }
 
 
@@ -163,10 +170,26 @@
  *   set up the downconverter frequency divisor for a
  *   reference clock comparision frequency of 125 kHz.
  */
-static int sp5659_set_tv_freq (struct dvb_i2c_bus *i2c, u32 freq, u8 pwr)
+static int sp5659_set_tv_freq (struct dvb_i2c_bus *i2c, u32 freq)
 {
-        u32 div = (freq + 479500) / 125;
-	u8 buf [4] = { (div >> 8) & 0x7f, div & 0xff, 0x95, (pwr << 5) | 0x30 };
+	u8 pwr = 0;
+   	u8 buf[4];
+	u32 div = (freq + 479500) / 125;
+   
+	if (freq > 2000000) pwr = 3;
+	else if (freq > 1800000) pwr = 2;
+	else if (freq > 1600000) pwr = 1;
+	else if (freq > 1200000) pwr = 0;
+	else if (freq >= 1100000) pwr = 1;
+	else pwr = 2;
+
+   	buf[0] = (div >> 8) & 0x7f;
+   	buf[1] = div & 0xff;
+   	buf[2] = ((div & 0x18000) >> 10) | 0x95;
+   	buf[3] = (pwr << 6) | 0x30;
+   	
+	// NOTE: since we're using a prescaler of 2, we set the
+	// divisor frequency to 62.5kHz and divide by 125 above
 
 	return tuner_write (i2c, buf, sizeof(buf));
 }
@@ -188,10 +211,10 @@
 }
 
 
-static int tuner_set_tv_freq (struct dvb_i2c_bus *i2c, u32 freq, u8 pwr)
+static int tuner_set_tv_freq (struct dvb_i2c_bus *i2c, u32 freq)
 {
 	if ((demod_type == DEMOD_VES1893) && (board_type == BOARD_SIEMENS_PCI))
-		return sp5659_set_tv_freq (i2c, freq, pwr);
+		return sp5659_set_tv_freq (i2c, freq);
 	else if (demod_type == DEMOD_VES1993)
 		return tsa5059_set_tv_freq (i2c, freq);
 
@@ -245,10 +268,11 @@
 
 static int ves1x93_clr_bit (struct dvb_i2c_bus *i2c)
 {
-        ves1x93_writereg (i2c, 0, init_1x93_tab[0] & 0xfe);
-        ves1x93_writereg (i2c, 0, init_1x93_tab[0]);
-        ves1x93_writereg (i2c, 3, 0x00);
-        return ves1x93_writereg (i2c, 3, init_1x93_tab[3]);
+	dvb_delay(10);
+	ves1x93_writereg (i2c, 0, init_1x93_tab[0] & 0xfe);
+	ves1x93_writereg (i2c, 0, init_1x93_tab[0]);
+	dvb_delay(50);
+	return 0;
 }
 
 
@@ -275,10 +299,7 @@
 		return -EINVAL;
 	}
 
-	/* needs to be saved for FE_GET_FRONTEND */
-	init_1x93_tab[0x0c] = (init_1x93_tab[0x0c] & 0x3f) | val;
-
-	return ves1x93_writereg (i2c, 0x0c, init_1x93_tab[0x0c]);
+	return ves1x93_writereg (i2c, 0x0c, (init_1x93_tab[0x0c] & 0x3f) | val);
 }
 
 
@@ -302,7 +323,7 @@
 static int ves1x93_set_symbolrate (struct dvb_i2c_bus *i2c, u32 srate)
 {
 	u32 BDR;
-        u32 ratio;
+	u32 ratio;
 	u8  ADCONF, FCONF, FNR;
 	u32 BDRI;
 	u32 tmp;
@@ -350,15 +371,15 @@
 
 	FNR = 0xff;
 
-	if (ratio < MUL/3)           FNR = 0;
+	if (ratio < MUL/3)	     FNR = 0;
 	if (ratio < (MUL*11)/50)     FNR = 1;
-	if (ratio < MUL/6)           FNR = 2;
-	if (ratio < MUL/9)           FNR = 3;
-	if (ratio < MUL/12)          FNR = 4;
+	if (ratio < MUL/6)	     FNR = 2;
+	if (ratio < MUL/9)	     FNR = 3;
+	if (ratio < MUL/12)	     FNR = 4;
 	if (ratio < (MUL*11)/200)    FNR = 5;
-	if (ratio < MUL/24)          FNR = 6;
+	if (ratio < MUL/24)	     FNR = 6;
 	if (ratio < (MUL*27)/1000)   FNR = 7;
-	if (ratio < MUL/48)          FNR = 8;
+	if (ratio < MUL/48)	     FNR = 8;
 	if (ratio < (MUL*137)/10000) FNR = 9;
 
 	if (FNR == 0xff) {
@@ -368,16 +389,16 @@
 	} else {
 		ADCONF = 0x81;
 		FCONF  = 0x88 | (FNR >> 1) | ((FNR & 0x01) << 5);
-		/*FCONF  = 0x80 | ((FNR & 0x01) << 5) | (((FNR > 1) & 0x03) << 3) | ((FNR >> 1) & 0x07);*/
+		/*FCONF	 = 0x80 | ((FNR & 0x01) << 5) | (((FNR > 1) & 0x03) << 3) | ((FNR >> 1) & 0x07);*/
 	}
 
 	BDR = (( (ratio << (FNR >> 1)) >> 4) + 1) >> 1;
 	BDRI = ( ((FIN << 8) / ((srate << (FNR >> 1)) >> 2)) + 1) >> 1;
 
-        dprintk("FNR= %d\n", FNR);
-        dprintk("ratio= %08x\n", (unsigned int) ratio);
-        dprintk("BDR= %08x\n", (unsigned int) BDR);
-        dprintk("BDRI= %02x\n", (unsigned int) BDRI);
+	dprintk("FNR= %d\n", FNR);
+	dprintk("ratio= %08x\n", (unsigned int) ratio);
+	dprintk("BDR= %08x\n", (unsigned int) BDR);
+	dprintk("BDRI= %02x\n", (unsigned int) BDRI);
 
 	if (BDRI > 0xff)
 		BDRI = 0xff;
@@ -395,8 +416,8 @@
 	else
 		ves1x93_writereg (i2c, 0x05, init_1x93_tab[0x05] & 0x7f);
 
-	ves1x93_writereg (i2c, 0x00, 0x00);
-	ves1x93_writereg (i2c, 0x00, 0x01);
+		ves1x93_writereg (i2c, 0x00, 0x00);
+		ves1x93_writereg (i2c, 0x00, 0x01);
 
 	/* ves1993 hates this, will lose lock */
 	if (demod_type != DEMOD_VES1993)
@@ -424,17 +445,33 @@
 static int ves1x93_ioctl (struct dvb_frontend *fe, unsigned int cmd, void *arg)
 {
 	struct dvb_i2c_bus *i2c = fe->i2c;
+	struct ves1x93_state *state = (struct ves1x93_state*) fe->data;
 
-        switch (cmd) {
-        case FE_GET_INFO:
+	switch (cmd) {
+	case FE_GET_INFO:
 		memcpy (arg, &ves1x93_info, sizeof(struct dvb_frontend_info));
 		break;
 
-        case FE_READ_STATUS:
+	case FE_READ_STATUS:
 	{
 		fe_status_t *status = arg;
 		u8 sync = ves1x93_readreg (i2c, 0x0e);
 
+		/*
+		 * The ves1893 sometimes returns sync values that make no sense,
+		 * because, e.g., the SIGNAL bit is 0, while some of the higher
+		 * bits are 1 (and how can there be a CARRIER w/o a SIGNAL?).
+		 * Tests showed that the the VITERBI and SYNC bits are returned
+		 * reliably, while the SIGNAL and CARRIER bits ar sometimes wrong.
+		 * If such a case occurs, we read the value again, until we get a
+		 * valid value.
+		 */
+		int maxtry = 10; /* just for safety - let's not get stuck here */
+		while ((sync & 0x03) != 0x03 && (sync & 0x0c) && maxtry--) {
+			dvb_delay(10);
+			sync = ves1x93_readreg (i2c, 0x0e);
+		}
+
 		*status = 0;
 
 		if (sync & 1)
@@ -455,25 +492,25 @@
 		break;
 	}
 
-        case FE_READ_BER:
+	case FE_READ_BER:
 	{
 		u32 *ber = (u32 *) arg;
 
 		*ber = ves1x93_readreg (i2c, 0x15);
-                *ber |= (ves1x93_readreg (i2c, 0x16) << 8);
-                *ber |= ((ves1x93_readreg (i2c, 0x17) & 0x0F) << 16);
+		*ber |= (ves1x93_readreg (i2c, 0x16) << 8);
+		*ber |= ((ves1x93_readreg (i2c, 0x17) & 0x0F) << 16);
 		*ber *= 10;
 		break;
 	}
 
-        case FE_READ_SIGNAL_STRENGTH:
+	case FE_READ_SIGNAL_STRENGTH:
 	{
 		u8 signal = ~ves1x93_readreg (i2c, 0x0b);
 		*((u16*) arg) = (signal << 8) | signal;
 		break;
 	}
 
-        case FE_READ_SNR:
+	case FE_READ_SNR:
 	{
 		u8 snr = ~ves1x93_readreg (i2c, 0x1c);
 		*(u16*) arg = (snr << 8) | snr;
@@ -492,16 +529,17 @@
 		break;
 	}
 
-        case FE_SET_FRONTEND:
-        {
+	case FE_SET_FRONTEND:
+	{
 		struct dvb_frontend_parameters *p = arg;
 
-		tuner_set_tv_freq (i2c, p->frequency, 0);
+		tuner_set_tv_freq (i2c, p->frequency);
 		ves1x93_set_inversion (i2c, p->inversion);
 		ves1x93_set_fec (i2c, p->u.qpsk.fec_inner);
 		ves1x93_set_symbolrate (i2c, p->u.qpsk.symbol_rate);
-                break;
-        }
+		state->inversion = p->inversion;
+		break;
+	}
 
 	case FE_GET_FRONTEND:
 	{
@@ -517,7 +555,7 @@
 		 * inversion indicator is only valid
 		 * if auto inversion was used
 		 */
-		if (!(init_1x93_tab[0x0c] & 0x80))
+		if (state->inversion == INVERSION_AUTO)
 			p->inversion = (ves1x93_readreg (i2c, 0x0f) & 2) ? 
 					INVERSION_OFF : INVERSION_ON;
 		p->u.qpsk.fec_inner = ves1x93_get_fec (i2c);
@@ -525,44 +563,48 @@
 		break;
 	}
 
-        case FE_SLEEP:
+	case FE_SLEEP:
 		if (board_type == BOARD_SIEMENS_PCI)
 			ves1x93_writereg (i2c, 0x1f, 0x00);    /*  LNB power off  */
 		return ves1x93_writereg (i2c, 0x00, 0x08);
 
-        case FE_INIT:
+	case FE_INIT:
 		return ves1x93_init (i2c);
 
-	case FE_RESET:
-		return ves1x93_clr_bit (i2c);
-
 	case FE_SET_TONE:
 		return -EOPNOTSUPP;  /* the ves1893 can generate the 22k */
-		                     /* let's implement this when we have */
-		                     /* a box that uses the 22K_0 pin... */
+				     /* let's implement this when we have */
+				     /* a box that uses the 22K_0 pin... */
 
 	case FE_SET_VOLTAGE:
 		return ves1x93_set_voltage (i2c, (fe_sec_voltage_t) arg);
 
 	default:
 		return -EOPNOTSUPP;
-        };
-        
-        return 0;
+	};
+	
+	return 0;
 } 
 
 
 static int ves1x93_attach (struct dvb_i2c_bus *i2c, void **data)
 {
 	u8 identity = ves1x93_readreg(i2c, 0x1e);
+	struct ves1x93_state* state;
 
 	switch (identity) {
 	case 0xdc: /* VES1893A rev1 */
+		printk("ves1x93: Detected ves1893a rev1\n");
+		demod_type = DEMOD_VES1893;
+		ves1x93_info.name[4] = '8';
+		break;
 	case 0xdd: /* VES1893A rev2 */
+		printk("ves1x93: Detected ves1893a rev2\n");
 		demod_type = DEMOD_VES1893;
 		ves1x93_info.name[4] = '8';
 		break;
 	case 0xde: /* VES1993 */
+		printk("ves1x93: Detected ves1993\n");
 		demod_type = DEMOD_VES1993;
 		ves1x93_info.name[4] = '9';
 		break;
@@ -571,12 +613,19 @@
 		return -ENODEV;
 	}
 
-	return dvb_register_frontend (ves1x93_ioctl, i2c, NULL, &ves1x93_info);
+	if ((state = kmalloc(sizeof(struct ves1x93_state), GFP_KERNEL)) == NULL) {
+		return -ENOMEM;
+	}
+	state->inversion = INVERSION_OFF;
+	*data = state;
+
+	return dvb_register_frontend (ves1x93_ioctl, i2c, (void*) state, &ves1x93_info);
 }
 
 
 static void ves1x93_detach (struct dvb_i2c_bus *i2c, void *data)
 {
+	kfree(data);
 	dvb_unregister_frontend (ves1x93_ioctl, i2c);
 }
 

JtG-Riker
Image-Team
Beiträge: 1015
Registriert: Freitag 7. Februar 2003, 18:37

Re: ves1x93 improvement

Beitrag von JtG-Riker »

Müsste ma gucken aber ich glaub das ist der Patch den ich auch im JTG Image drin habe seit langer Zeit, keine Probleme bekannt.

Der ist auch auf Nicos Homepage gewesen.

Gruß Riker
Striper
Erleuchteter
Erleuchteter
Beiträge: 625
Registriert: Samstag 8. September 2007, 15:17

Re: ves1x93 improvement

Beitrag von Striper »

Kannst Du das mal bitte prüfen? Wenn dies der Fall ist werd ich das nämlich einchecken. Mir ist ausser den Vorteilen des Patches auch nix bekannt.
Striper
Erleuchteter
Erleuchteter
Beiträge: 625
Registriert: Samstag 8. September 2007, 15:17

Re: ves1x93 improvement

Beitrag von Striper »

Is jetzt im CVS.
mrvica
Einsteiger
Einsteiger
Beiträge: 342
Registriert: Freitag 24. September 2004, 11:48

Re: ves1x93 improvement

Beitrag von mrvica »

kleiner Schönheitsfehler, wegen Kompatibilität zu anderen Boxen, dbox2 Kabelboxen, sowie Applikationen auf dem PC (ProgDVB und andere), sollte Signal Strength (AGC) so um 70% sein (mit dem aktuellen Treiber um 30%), betrifft Sagem und Nokia SAT Boxen, bitte folgendes ändern, getestet auf meiner Sagem SAT mit Enigma und funktioniert

Code: Alles auswählen

	case FE_READ_SIGNAL_STRENGTH:
	{
		u8 signal = ~ves1x93_readreg (i2c, 0x0b);
bitte ändern in

Code: Alles auswählen

	case FE_READ_SIGNAL_STRENGTH:
	{
		u8 signal = ves1x93_readreg (i2c, 0x0b);
nach einer Idee von Nico77

mrvica
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 13:05

Re: ves1x93 improvement

Beitrag von rhabarber1848 »

bruno71
Interessierter
Interessierter
Beiträge: 84
Registriert: Freitag 25. Dezember 2009, 12:03

Re: ves1x93 improvement

Beitrag von bruno71 »

rhabarber1848 hat geschrieben:committed
http://article.gmane.org/gmane.comp.vid ... x.scm/2158
Liegt das an dieser änderung das mein SIG-Wert mit dem aktuellen cvs jetzt nur noch bei ca. 20% liegt?

Habe eine Nokia Sat Box Avia600 mit aktuellem Neutrino.

mfg bruno
mrvica
Einsteiger
Einsteiger
Beiträge: 342
Registriert: Freitag 24. September 2004, 11:48

Re: ves1x93 improvement

Beitrag von mrvica »

kann sein dass Neutrino intern noch mal die Werte dreht, unter Enigma ist es nicht der Fall, sollte man einheitllich machen, in den Treibern ändern und dann GUI anpassen

mrvica
bruno71
Interessierter
Interessierter
Beiträge: 84
Registriert: Freitag 25. Dezember 2009, 12:03

Re: ves1x93 improvement

Beitrag von bruno71 »

Also bedeutet das jetzt, dass die Anzeige bei Enigma gefixt und bei Neutrino damit kaputt gemacht wurde???

Und wenn sich keiner findet der die Treiber für Neutrino anpasst wird es also dann ewig so bleiben! :(
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 13:05

Re: ves1x93 improvement

Beitrag von rhabarber1848 »

Einige Codeschnipsel, ich kann mangels guter C/C++-Kenntnisse damit nicht anfangen:

apps/tuxbox/enigma/src/enigma_dyn.cpp

Code: Alles auswählen

int agc = fe->SignalStrength();
result.strReplace("#AGC#", eString().sprintf("%d", agc * 100 / 65535));
apps/dvb/zapit/src/zapit.cpp

Code: Alles auswählen

response_FEsig.sig = frontend->getSignalStrength();
apps/tuxbox/neutrino/src/gui/streaminfo2.cpp

Code: Alles auswählen

signal.sig = s.sig & 0xFFFF;
mrvica
Einsteiger
Einsteiger
Beiträge: 342
Registriert: Freitag 24. September 2004, 11:48

Re: ves1x93 improvement

Beitrag von mrvica »

Enigma Sourcen sollte man nicht verändern, dann stimmt die Anzeige bei der Dream nicht mehr, die Tilde ist bei den Kabeltreibern (at76c651, ves1820) bei SIGNAL_STRENGTH auch nicht vorhanden (kann mich noch erinnern dass das angepasst wurde), da stimmt die Anzeige (auch bei Enigma), bin jetzt ein bisschen verwundert, will man Neutrino Sourcen anpassen, kann sein dass die Anzeige dann bei den Kabelboxen falsch ist, meinetwegen könnt ihr den Patch rückgängig machen, ich habe meine Sourcen für Enigma nach dem obigen Patch angepasst

mrvica
bruno71
Interessierter
Interessierter
Beiträge: 84
Registriert: Freitag 25. Dezember 2009, 12:03

Re: ves1x93 improvement

Beitrag von bruno71 »

rhabarber1848 hat geschrieben:committed
http://article.gmane.org/gmane.comp.vid ... x.scm/2158
Und diese änderung bringt unter neutrino (bei mir) auch keine verbesserung!!! :dagegen:

Oder liege ich da falsch???
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: ves1x93 improvement

Beitrag von Gaucho316 »

Da in einem anderen Thread nochmal die kaputte Anzeige der Signalstärke auf Nokia Sat-Boxen angesprochen wurde, hole ich das Thema hier nochmal hoch. Ist es denn bei jedem, der eine Nokia Sat-Box hat, so, dass die Anzeige unter Enigma richtig und unter Neutrino falsch ist? Und ist es tatsächlich auf allen anderen Sat-Boxen immer richtig? Ich selbst kann es nicht testen, da ich nur Kabel-Boxen habe.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: ves1x93 improvement

Beitrag von Gaucho316 »

Nach Ansehen des Codes kann ich keine Unterschiede beim Berechnen der Anzeigewerte in Neutrino und Enigma erkennen, außer ich bin :blind . Die Signalstärke müsste also auch auf einer Nokia Sat mit Enigma falsch angezeigt werden. Deshalb bin ich dafür, die Änderung in ves1x93.c vom 10.04.2010 rückgängig zu machen, damit die Anzeige wieder stimmt. Laut bruno71 und JtG-Riker funktioniert es ja seitdem nicht mehr richtig auf Nokia-Sat-Boxen. Für Sagem-Sat-Boxen ist die Änderung in tda8044h.c laut mrvica aber richtig.
bruno71
Interessierter
Interessierter
Beiträge: 84
Registriert: Freitag 25. Dezember 2009, 12:03

Re: ves1x93 improvement

Beitrag von bruno71 »

Gaucho316 hat geschrieben:Deshalb bin ich dafür, die Änderung in ves1x93.c vom 10.04.2010 rückgängig zu machen, damit die Anzeige wieder stimmt.
:dafuer:

Wie es bei den Sagem Sat Boxen ist kann ich nicht sagen, habe nur Nokia.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: ves1x93 improvement

Beitrag von Gaucho316 »

Da habe ich mir ja gestern wieder mal einen ziemlichen Mist zusammengereimt. Der Treiber tda8044h ist ja gar nicht für Sagem-Sat- sondern für Philips-Sat-Boxen zuständig. Für Sagem-Sat-Boxen ist auch der Treiber ves1x93 verantwortlich. Deshalb muss das folgendermaßen gefixt werden und dann sollten alle zufrieden sein:

Code: Alles auswählen

--- ves1x93.c.ORIG	2011-09-09 10:32:21.160140000 +0200
+++ ves1x93.c	2011-09-09 10:46:53.905085600 +0200
@@ -505,7 +505,11 @@
 
 	case FE_READ_SIGNAL_STRENGTH:
 	{
-		u8 signal = ves1x93_readreg (i2c, 0x0b);
+		u8 signal;
+		if (board_type == BOARD_NOKIA_DBOX2)
+			signal = ~ves1x93_readreg (i2c, 0x0b);
+		else
+			signal = ves1x93_readreg (i2c, 0x0b);
 		*((u16*) arg) = (signal << 8) | signal;
 		break;
 	}
Edit: Ich habe den Code mal in eine Datei gepackt. Das Ganze ist natürlich immer noch ungetestet, da ich ja, wie schon gesagt, keine Sat-Box habe.
Link zum Patch entfernt
JtG-Riker
Image-Team
Beiträge: 1015
Registriert: Freitag 7. Februar 2003, 18:37

Re: ves1x93 improvement

Beitrag von JtG-Riker »

Ich schau mir das heute mal an, meine vmware funktioniert mittlerweile wieder.

Ich mein aber bei Sagem wär die Anzeige okay gewesen.

Gruß Riker

Also es reicht für Nokia zu fixen, denn beim ves1993 scheint das ~ nichts zu bewirken, ich hab da immer 58% ob mit oder ohne.
Hab eben mal mit ner Sagem getestet.


Werde das heute nachmittag oder Abend mal noch mit Nokia nochmal testen da meine Nokia nen ves1993 Tuner hat und sich da auch nix ändert muss ich ma im keller eine andere nehmen.

Gruß Riker
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: ves1x93 improvement

Beitrag von Gaucho316 »

Vielleicht muss man eher auf

Code: Alles auswählen

if (demod_type == DEMOD_VES1893)
oder besser beides kombiniert

Code: Alles auswählen

if (board_type == BOARD_NOKIA_DBOX2 && demod_type == DEMOD_VES1893)
testen? :gruebel:

Edit: Ich habe jetzt mal eine Variante hochgeladen, die auf ves1893 und auf Nokia testet. Nur dann wird das Einerkomplement gebildet. Das ist es nämlich, was die Tilde macht. Ich habe nicht so die große Ahnung von C und musste das erst einmal nachlesen. Deshalb habe ich die Änderung jetzt auch etwas vereinfachen können.
Link entfernt, da Patch im CVS
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: ves1x93 improvement

Beitrag von Gaucho316 »

JtG-Riker hat geschrieben:Also es reicht für Nokia zu fixen, denn beim ves1993 scheint das ~ nichts zu bewirken, ich hab da immer 58% ob mit oder ohne.
Hab eben mal mit ner Sagem getestet.
Das überrascht mich jetzt aber wirklich. Laut einem Posting weiter oben von mrvica sieht die Sache bei ihm ganz anders aus. Und nun? :gruebel:
mrvica
Einsteiger
Einsteiger
Beiträge: 342
Registriert: Freitag 24. September 2004, 11:48

Re: ves1x93 improvement

Beitrag von mrvica »

da war nichts kaputt an der Anzeige, wir (vor allem ich) wollten nur dass es einheitlich aussieht, bei Enigma(2), Neutrino (HD), ProgDVB usw., ich konnte nur Enigma1 testen und da siehts jetzt gut aus, max. Werte 100%, bei 16, 17% weiss man nicht ob 20, 25, 50 oder 100 max. Wert ist, bei Enigma war nur AGC (automatic gain control) gedreht, SIG (signal gain) war OK, früher AGC 15%, jetzt 85% oder besser, ist OK so

mrvica
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: ves1x93 improvement

Beitrag von Gaucho316 »

@mrvica
Wenn ich den Enigma-Code richtig durchschaue, gibt es dort gar keinen Wert namens SIG. Es gibt nur AGC, SNR und BER. Unter Neutrino gibt es dagegen SIG, SNR und BER. AGC in Enigma entspricht SIG in Neutrino. Auf deiner Sagem-Sat-Box mit VES1993 hauen die Werte mit aktuellem CVS-Stand also hin. Warum aber ist es bei JtG-Riker mit der gleichen Box egal, ob das Einerkomplement gebildet wird oder nicht? Das verstehe ich nicht.

@JtG-Riker
Hast du's mal auf einer Nokia-Sat-Box mit VES1893 mit und ohne ~ probiert?

@bruno71
Was hast du für einen Tuner in der Box, VES1893 oder VES1993?
JtG-Riker
Image-Team
Beiträge: 1015
Registriert: Freitag 7. Februar 2003, 18:37

Re: ves1x93 improvement

Beitrag von JtG-Riker »

@Gaucho316

Also heut hab ich mit mit Nokia 1893 getestet, den haben ja die meisten Boxen. ohne ~ hat die auf z.B. ARD 17% mit dann >80

Sagem hatte ich getestet mit und ohne, da war kein Unterschied, kann ich aber morgen noch mal testen mit der Sagem.

Gruß Riker
mrvica
Einsteiger
Einsteiger
Beiträge: 342
Registriert: Freitag 24. September 2004, 11:48

Re: ves1x93 improvement

Beitrag von mrvica »

Gaucho316 hat geschrieben:@mrvica
gibt es dort gar keinen Wert namens SIG. Es gibt nur AGC, SNR und BER.
hast du recht, ich hab was im Kopf verdreht, nochmal:
SNR - Signal Noise Ratio
AGC - Automatic Gain Control, entspricht SIG (wahrscheinlich Signal Strength) in Neutrino (oder im Satfind FB Plugin)

grad "Das Erste" auf Astra probiert
SNR - 85% rum
AGC - 68% rum (SIG)

mit SatfindFB Plugin
SNR - 56200 rum
SIG 44900 rum

mrvica
JtG-Riker
Image-Team
Beiträge: 1015
Registriert: Freitag 7. Februar 2003, 18:37

Re: ves1x93 improvement

Beitrag von JtG-Riker »

Stimmt nun doch, mit ~ hat die Sagem mit 1993 Tuner weniger Anzeige also ohne, also genau umgedreht wie bei der Nokia.

Hmm, und nun ?

Ich hab mit dem Release Image vom August 58% auf der Sagem, mit dem aktuellen Snap mit dem ~ drin 44%

Werde aber mal noch eine zweite Sagem gegentesten.


Gruß Riker
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: ves1x93 improvement

Beitrag von Gaucho316 »

JtG-Riker hat geschrieben:Hmm, und nun ?
Also, ich fasse nochmal zusammen:
  • Sagem: ~ nicht nötig
  • Nokia VES1893: ~ nötig
  • Nokia VES1993: ?
Je nachdem, was du mir jetzt zur Nokia VES1993 sagen kannst, muss ich den Patch nochmals anpassen oder eben auch nicht. Und dann kann's jemand einchecken.