Philips Tunertreiber hat definitiv große (lösbare) Probleme

Sklaventreiber
HopeofnewDriver
Interessierter
Interessierter
Beiträge: 22
Registriert: Dienstag 27. September 2005, 21:12

Beitrag von HopeofnewDriver »

just_me hat geschrieben:
racker hat geschrieben:Ohne Kenntnis der internen Frequenzumschaltung sind keine Verbesserungen zu erreichen.
Es gibt "auch ohne" eine Chance: Rechnergestütztes Permutieren der Parameter.
Da es Informationen über die Güte einer Einstellung gibt, die vom Programm aus zugänglich sind (z.B. Zeit bis zum Locken, BER, Signalstärke) lässt sich das Setzen von Registern und ggfs. das optimale Timing über den Rechner ermitteln:

Code: Alles auswählen

for(TestNr=0; TestNr++; TestNr< 0x1000)
{
    // 4 verschiedene Werte für Parameter 1 probieren
    switch(TestNr & 0x03)
    { 
       case 0:  Parameter1=0x00; break;
       case 1:  Parameter1=0x01; break;
       case 2:  Parameter1=0x80; break;
       case 3:  Parameter1=0x81; break;
     };
    RegisterSetzen( Parameter1 );     /* know what you are doing! */

    // verschiedene delays dazwischen checken.
    // remember to add an Offset (or a multiplier) for series 
    // tolerances between different dboxes if the delay is 
    // needed for some analog stuff
    delay( ((TestNr & 0x0c)>>2) * 10 + 50 );

    // 4 verschiedene Werte für nächsten Parameter probieren
    switch((TestNr & 0x30) >>4 )
    { 
       case 0: Parameter2=0x80; break;
       case 1: Parameter2=0x12; break;
       case 2: Parameter2=0x81; break;
       case 3: Parameter2=0x40; break;
    }
    EinstellungMitParameter2(Parameter2); /* know what you are doing! */

   ...
 
   // Güte merken und/oder mit printf ausgeben
   ResultArray[TestNr] = WichtungBER * get_BER() + 
                                   WichtungSignalstaerke * get_Signalstaerke() + 
                                   WichtungLockTime * get_LockTime()  + ... ;
}
Nicht ausgeschlossen ist, dass man mit diesem systematischen Probieren auch zu besseren Ergebnissen als nach Datenblatt kommt :)

Frieder
Irgendwie scheint das heir echt ein qualifizierter Beitrag zu sein...leider trifft er auf keine Resonan was sehr sehr schade ist....ich weiß alleine zu arbeiten ist echt schlecht aber dein potemnzial und wissen frieder ist beeindruckend und du könntest denke ich vieln hier was gutes tun....aber ewnn sich niemand anschließt wird daraus wohl ncihts....


beste Grüße
Nico 77
Semiprofi
Semiprofi
Beiträge: 1383
Registriert: Freitag 18. April 2003, 15:12

Beitrag von Nico 77 »

Auch wenn ich jetzt in eurer Negativskala mal wieder steiger.....

Erst wenn du und beba versteht das den Fehler nur jemand beheben kann der die Sender empfangen tut, werdet ihr feststellen das nur ihr selber den Fehler beheben könnt. Solang das nicht der Fall ist wird es nur mit sehr viel Glück noch einen Treiber geben, woran ich nicht mehr glaube. :-?
beba
Interessierter
Interessierter
Beiträge: 70
Registriert: Donnerstag 7. November 2002, 13:14

Beitrag von beba »

wie ? ? ?



GRUß ! ! !
HopeofnewDriver
Interessierter
Interessierter
Beiträge: 22
Registriert: Dienstag 27. September 2005, 21:12

Beitrag von HopeofnewDriver »

Es geht bei dieser Sache schon ncihtmehr NUR um niedrige Symbolraten. Man weiß ja dsas der tda8044h nicht egerade ein guter Treiber ist in jeder hinsicht und ich habe es jetzt so verstanden dass man ihn noch verbessern könnte wenn sich ein guter DEV nur die Zeit nehmen würde....nicht nur wegen niedrigen symbolraten also....

beste Grüße
HopeofnewDriver
Interessierter
Interessierter
Beiträge: 22
Registriert: Dienstag 27. September 2005, 21:12

Beitrag von HopeofnewDriver »

Wer ist so nett und würde den tda80xx.o von dietmarw, den er einmal auf seinen Fileserver freundlicherweise hochgeladen hat, nochmal hier posten (hochladen).

Dazu wäre es auch sehr nett wenn jemand den neuen tda80xx.o aus dem neuen Kernel hochladen würde und ihn zu schreiben würde damit man ihn in ein Image mit altem Kernel einfügen lässt.

Wenn das jemand machen könnte wäre echt super. Will nochmal testen und wenn ich teste dann richtig deswegen gleich die 2 Treiber.

beste Grüße

HopeofnewDriver
HopeofnewDriver
Interessierter
Interessierter
Beiträge: 22
Registriert: Dienstag 27. September 2005, 21:12

Beitrag von HopeofnewDriver »

Wäre aufjedenfal sehr sehr nett wenn das jemand machen würde....

beste Grüße

HopeofNewDriver
HopeofnewDriver
Interessierter
Interessierter
Beiträge: 22
Registriert: Dienstag 27. September 2005, 21:12

Beitrag von HopeofnewDriver »

Also dietmarw hat ihn nochmal hochgeladen, ihr solltet ihm danken. Werde wen ich mienen neune LCD hier stehen hab dann direkt testen und diesmal gibt es umfangreiches feedback!

beste Grüße

DunkDream
beba
Interessierter
Interessierter
Beiträge: 70
Registriert: Donnerstag 7. November 2002, 13:14

Beitrag von beba »

Philips niedrige Symbolrate ??? noch immer nichts was neues ???


GRUSS ! ! !
Lopi
Interessierter
Interessierter
Beiträge: 56
Registriert: Montag 5. Januar 2004, 15:07

Beitrag von Lopi »

.symbol_rate_min = 10000000,

...

static int tda8044_set_parameters(struct dvb_i2c_bus *i2c,
fe_spectral_inversion_t inversion,
u32 symbol_rate,
fe_code_rate_t fec_inner)
{ u8 buf[16];
u64 ratio;
u32 clk = 96000000;
u32 k = (1 << 21);
u32 sr = symbol_rate;
u32 gcd;

u8 clkbuf[3];
clkbuf[0x00] = 0x17;

buf[0x00] = 0x01;
buf[0x01] = 0x00;
buf[0x06] = 0x00;
buf[0x08] = 0x30;
buf[0x0b] = 0x28;
buf[0x0c] = 0x30;

buf[0x05] = 0x20;
buf[0x09] = 0x42;
buf[0x0a] = 0x98;
buf[0x0d] = 0x42;
buf[0x0e] = 0x99;
buf[0x0f] = 0x50;

clkbuf[0x01] = 0x68;
clkbuf[0x02] = 0x9a;

if (inversion == INVERSION_ON)
buf[0x01] |= 0x60;
else if (inversion == INVERSION_OFF)
buf[0x01] |= 0x20;

if (fec_inner == FEC_NONE)
buf[0x07] = 0x00;
else if ((fec_inner >= FEC_1_2) && (fec_inner <= FEC_8_9))
buf[0x07] = (1 << (8 - fec_inner));
else if (fec_inner == FEC_AUTO)
buf[0x07] = 0xff;

if ((symbol_rate == 22000000) || (symbol_rate == 27500000)) {
if (symbol_rate == 22000000)
{ buf[0x02] = 0x8b; buf[0x03] = 0xa2; buf[0x04] = 0xe9; buf[0x05] = 0x23;
goto end_write; }
if (symbol_rate == 27500000)
{ buf[0x02] = 0x6f; buf[0x03] = 0xb5; buf[0x04] = 0x87; buf[0x05] = 0x22;
goto end_write; }
}

if (symbol_rate < 1000000)
printk("%s: Not working : %d\n", __FILE__, symbol_rate);

else if (symbol_rate < 5000000)
{ buf[0x05] |= 0x07; buf[0x09] = 0x20; buf[0x0a] = 0x76; buf[0x0d] = 0x33; buf[0x0e] = 0x7a; buf[0x0f] = 0x50;
clkbuf[0x01] = 0x8a; clkbuf[0x02] = 0x9f; clk=24000000; }

else if (symbol_rate < 6750000)
{ buf[0x05] |= 0x07; buf[0x09] = 0x30; buf[0x0a] = 0x76; buf[0x0d] = 0x52; buf[0x0e] = 0xb9; buf[0x0f] = 0x50;
clkbuf[0x01] = 0x8a; clkbuf[0x02] = 0x9f; clk=24000000; }

else if (symbol_rate < 9750000)
{ buf[0x05] |= 0x06; buf[0x09] = 0x30; buf[0x0a] = 0x76; buf[0x0d] = 0x52; buf[0x0e] = 0xb9; buf[0x0f] = 0x50;
clkbuf[0x01] = 0x8a; clkbuf[0x02] = 0x9f; clk=24000000; }

else if (symbol_rate < 10000000)
{ buf[0x05] |= 0x05; buf[0x09] = 0x30; buf[0x0a] = 0x76; buf[0x0d] = 0x52; buf[0x0e] = 0xb9; buf[0x0f] = 0x50;
clkbuf[0x01] = 0x8a; clkbuf[0x02] = 0x9f; clk=24000000; }

else if (symbol_rate < 13500000)
{ buf[0x05] |= 0x05; buf[0x09] = 0x51; buf[0x0a] = 0x78; buf[0x0d] = 0x42; buf[0x0e] = 0x79; buf[0x0f] = 0x50;
clkbuf[0x01] = 0x69; clkbuf[0x02] = 0x9c; clk=48000000; }

else if (symbol_rate < 19500000)
{ buf[0x05] |= 0x04; buf[0x09] = 0x51; buf[0x0a] = 0x78; buf[0x0d] = 0x42; buf[0x0e] = 0x79; buf[0x0f] = 0x50;
clkbuf[0x01] = 0x69; clkbuf[0x02] = 0x9c; clk=48000000; }

else if (symbol_rate < 20000000)
{ buf[0x05] |= 0x03; buf[0x09] = 0x51; buf[0x0a] = 0x78; buf[0x0d] = 0x42; buf[0x0e] = 0x79; buf[0x0f] = 0x50;
clkbuf[0x01] = 0x69; clkbuf[0x02] = 0x9c; clk=96000000; }

else if (symbol_rate < 25500000)
{ buf[0x05] |= 0x03; buf[0x09] = 0x42; buf[0x0a] = 0x98; buf[0x0d] = 0x42; buf[0x0e] = 0x99; buf[0x0f] = 0x50;
clkbuf[0x01] = 0x68; clkbuf[0x02] = 0x9a; clk=96000000; }

else if (symbol_rate < 30000000)
{ buf[0x05] |= 0x02; buf[0x09] = 0x42; buf[0x0a] = 0x98; buf[0x0d] = 0x42; buf[0x0e] = 0x99; buf[0x0f] = 0x50;
clkbuf[0x01] = 0x68; clkbuf[0x02] = 0x9a; clk=96000000; }

else if (symbol_rate < 39000000)
{ buf[0x05] |= 0x02; buf[0x09] = 0x42; buf[0x0a] = 0x99; buf[0x0d] = 0x32; buf[0x0e] = 0x98; buf[0x0f] = 0x50;
clkbuf[0x01] = 0x68; clkbuf[0x02] = 0x9a; clk=96000000; }

else if (symbol_rate <= 45000000)
{ buf[0x05] |= 0x00; buf[0x09] = 0x42; buf[0x0a] = 0x98; buf[0x0d] = 0x32; buf[0x0e] = 0x98; buf[0x0f] = 0x50;
clkbuf[0x01] = 0x68; clkbuf[0x02] = 0x9a; clk=96000000; }
else
printk("%s: REPORT TO MODULE_AUTHOR : %d\n", __FILE__, symbol_rate);

gcd = tda8044_gcd(clk, sr);
clk /= gcd;
sr /= gcd;
gcd = tda8044_gcd(k, sr);
k /= gcd;
sr /= gcd;
ratio = (u64)k * (u64)clk;
do_div(ratio, sr);
buf[0x02] = ratio >> 16;
buf[0x03] = ratio >> 8;
buf[0x04] = ratio;

end_write:
tda8044_write_buf(i2c, clkbuf, sizeof(clkbuf));
tda8044_write_buf(i2c, buf, sizeof(buf));

return 0;
}


Viel Spasssss ;-)

Besser nicht :D
iceman2003
Neugieriger
Neugieriger
Beiträge: 10
Registriert: Freitag 20. Januar 2006, 20:13

Beitrag von iceman2003 »

der Code Schnippsel von Loki funktioniert mit niedriger Symbolrate.
Ich kann leider nur Hotbird testen und da gibt es nur zwei.

Die folgenden Hotbird Kanäle kann ich jetzt damit empfangen:

<transponder id="1bbc" onid="013e" frequency="12144000" inversion="2" symbol_rate="3333000" fec_inner="3" polarization="0">
<channel service_id="0001" name="m2" service_type="01" />
</transponder>
<transponder id="2cec" onid="013e" frequency="10828000" inversion="2" symbol_rate="3333000" fec_inner="3" polarization="0">
<channel service_id="0001" name="Autonomia" service_type="01"/>
</transponder>

So ähnlich hatte ich das auch schon mal probiert. Aber jetzt klappts.


cu iceman2003
Z80
Erleuchteter
Erleuchteter
Beiträge: 710
Registriert: Dienstag 3. September 2002, 12:54

Beitrag von Z80 »

:o - wer hätte das noch gedacht!
tausend dank Lopi (auch wenn ichs nicht brauche).

BITTE einchecken. 8)
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

Nico 77
Semiprofi
Semiprofi
Beiträge: 1383
Registriert: Freitag 18. April 2003, 15:12

Beitrag von Nico 77 »

Z80 hat geschrieben::o - wer hätte das noch gedacht!
tausend dank Lopi (auch wenn ichs nicht brauche).

BITTE einchecken. 8)
Ja mit sowas hätte wohl keiner mehr gerechnet.
Habe es nicht getestet, aber von mir auch ein dickes danke. :)
Muttersöhnchen
Interessierter
Interessierter
Beiträge: 73
Registriert: Samstag 31. Juli 2004, 18:15

Beitrag von Muttersöhnchen »

War mal nicht gesagt, daß Philips Tuner von Hardware Seite keine kleine Symbolraten kann ?
Man sollte nie den "Experten" glauben. :D

Danke Lopi.
Hotte
Interessierter
Interessierter
Beiträge: 26
Registriert: Montag 23. Juli 2001, 00:00

Beitrag von Hotte »

Hiho...

Greift das auch bei den Sagem Kabel Boxen mit den Problemen von Pro7 etc. empfang?

Gruss
Hotte
- Odectra.de - LCD Shop - Character und Grafik Displays -
Gorcon
Tuxboxer
Tuxboxer
Beiträge: 5873
Registriert: Samstag 23. Februar 2002, 22:46

Beitrag von Gorcon »

Nein, natürlich nicht. für eine Sagem Kabelbox brauchst Du auch einen solchen Treiber.
Ein genrellles Problem mit Pro7 im Kabel wäre mir aber neu.

Gruß Gorcon
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

ich hab mal ein diff gamacht.
vielleicht checkt das mal einer, ob alles stimmt, und checkt es ein ?
tda8044h.diff
AudioSlyer
Erleuchteter
Erleuchteter
Beiträge: 450
Registriert: Sonntag 28. Juli 2002, 01:18

Beitrag von AudioSlyer »

Hmm, den Source kann man noch optimieren/reduzieren, aber wenn es läuft...
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

ist das diff so korrekt ??
satelli
Neugieriger
Neugieriger
Beiträge: 6
Registriert: Samstag 29. Januar 2005, 19:47

Beitrag von satelli »

...Sensationell !!!

Tausend Dank an die Macher. :D :D :D :D

MFG satelli

PS: Ich glaube jetzt ist die Phillips an der Nokia vorbei gerauscht. 8) 8)
iceman2003
Neugieriger
Neugieriger
Beiträge: 10
Registriert: Freitag 20. Januar 2006, 20:13

Beitrag von iceman2003 »

mb405 hat geschrieben:ist das diff so korrekt ??
- .symbol_rate_min = 4500000,
+ .symbol_rate_min = 10000000,

da stimmt was nicht. Der alte Wert war wohl richtiger!


Und wenn schon mal was verbessert wird, könnte auch diese Sache aus dem tda80xx.c Sourcecode mit einfließen:

static void tda8044_wait_diseqc_fifo(struct dvb_i2c_bus *i2c)
{
size_t i;

for(i = 0; i < 100; i++) {
if (tda8044_readreg(i2c, 0x02) & 0x80)
break;
dvb_delay(10);
}
}

static int tda8044_send_diseqc_msg(struct dvb_i2c_bus *i2c, struct dvb_diseqc_master_cmd *cmd)
{
u8 buf[cmd->msg_len + 1];

/* register */
buf[0] = 0x23;
/* diseqc command */
memcpy(buf + 1, cmd->msg, cmd->msg_len);

tda8044_write_buf(i2c, buf, cmd->msg_len + 1);
tda8044_writereg(i2c, 0x29, 0x0c + (cmd->msg_len - 3));

tda8044_wait_diseqc_fifo(i2c);

return 0;
}


static int tda8044_send_diseqc_burst(struct dvb_i2c_bus *i2c, fe_sec_mini_cmd_t cmd)
{
switch (cmd) {
case SEC_MINI_A:
// return tda8044_writereg(i2c, 0x29, 0x14);
tda8044_writereg(i2c, 0x29, 0x14);
case SEC_MINI_B:
// return tda8044_writereg(i2c, 0x29, 0x1c);
tda8044_writereg(i2c, 0x29, 0x1c);
default:
return -EINVAL;
}

tda8044_wait_diseqc_fifo(i2c);
return 0;
}

"Kanal nicht verfügbar" gibt's dann auch nicht mehr, weil der Status korrekt abgewartet wird.



cu iceman2003
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

also das symbolrate_min ist ja im diff so drin.
iceman2003
Neugieriger
Neugieriger
Beiträge: 10
Registriert: Freitag 20. Januar 2006, 20:13

Beitrag von iceman2003 »

mb405 hat geschrieben:also das symbolrate_min ist ja im diff so drin.
nö, da steht :
+ .symbol_rate_min = 10000000,

ich habe aber schon "3333000" empfangen und der Wert ist viel kleiner.
Da ist eine 0 zuviel.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

ich hätte es ja schon längst eingecheckt aber ohne einen einzigen Kommentar zum kompilierten Treiber...
iceman2003
Neugieriger
Neugieriger
Beiträge: 10
Registriert: Freitag 20. Januar 2006, 20:13

Beitrag von iceman2003 »

Houdini hat geschrieben:ich hätte es ja schon längst eingecheckt aber ohne einen einzigen Kommentar zum kompilierten Treiber...
ich kann nur diese Hotbird Kanäle testen. Die gehen jetzt mit deinem Treiber.

<transponder id="1bbc" onid="013e" frequency="12144000" inversion="2" symbol_rate="3333000" fec_inner="3" polarization="0">
<transponder id="2cec" onid="013e" frequency="10828000" inversion="2" symbol_rate="3333000" fec_inner="3" polarization="0">
Antworten