dass der VDR einen Bug hat und nicht erkennt, dass die Karte DVB-S kann
Oder der Treiber, weil der das nicht richtig (nach API-Spezifikation) signalisiert.
Lars.
dass der VDR einen Bug hat und nicht erkennt, dass die Karte DVB-S kann
Oder der Treiber, weil der das nicht richtig (nach API-Spezifikation) signalisiert.
Lars.
Oder der Treiber, weil der das nicht richtig (nach API-Spezifikation) signalisiert.
An das habe ich auch schon gedacht. Kann man da nachschauen was der Treiber meldet? Vielleicht irgendwo im /sys filesystem?
Oder eben als Workaround den Teil vom VDR patchen der die "capabilities" des Treibers einliest.
Wenn jemand genauere Infos zu diesem Thema hat, immer her damit - wenn ich weiß an welcher stelle im Sourcecode da geschaut wird dann pusch ich das dort schon irgendwie rein !
Aber am wahrscheinlichsten kommt mir immer noch vor, dass das Problem irgendwas banales an meiner VDR Konfiguration ist...
Da muss man mal die Methode bool cDvbDevice::QueryDeliverySystems(int fd_frontend) genau anschauen: http://projects.vdr-developer.…/master/entry/dvbdevice.c
Und schauen, was der Treiber an Capabilities angibt.
Gruß
hepi
Wichtig ist, dass der Treiber DTV_ENUM_DELSYS unterstützt, das tun aber nicht alle.
Lars.
Hallo.
Jetzt hab ich mal ganz wild einfach den Block für das neue DVB-API in der dvbdevice.c auskommentiert um den Legacy mode hardcoded zu aktivieren (glaub ich zumindest) und neu kompiliert:
}
// Determine the types of delivery systems this device provides:
bool LegacyMode = true;
/*if (DvbApiVersion >= 0x0505) {
memset(&Frontend, 0, sizeof(Frontend));
memset(&CmdSeq, 0, sizeof(CmdSeq));
CmdSeq.props = Frontend;
SETCMD(DTV_ENUM_DELSYS, 0);
int Result = ioctl(fd_frontend, FE_GET_PROPERTY, &CmdSeq);
if (Result == 0) {
for (uint i = 0; i < Frontend[0].u.buffer.len; i++) {
if (numDeliverySystems >= MAXDELIVERYSYSTEMS) {
esyslog("ERROR: too many delivery systems on frontend %d/%d", adapter, frontend);
break;
}
deliverySystems[numDeliverySystems++] = Frontend[0].u.buffer.data[i];
}
LegacyMode = false;
}
else {
esyslog("ERROR: can't query delivery systems on frontend %d/%d - falling back to legacy mode", adapter, frontend);
}
}*/
if (LegacyMode) {
Alles anzeigen
und siehe da - alle Sender laufen!!!
Das kann natürlich nicht die endgültige Lösung sein - aber wir kommen der Ursache des Problems immer näher. Auch die logausgabe könnte noch Aufschluß geben:
original:
Sep 27 10:22:26 vdr vdr: [3034] frontend 0/0 provides DVB-S2 with QPSK ("Conexant CX24120/CX24118")
mit meiner kleinen "Anpassung":
Sep 27 13:37:35 vdr vdr: [25332] frontend 0/0 provides DVB-S,DVB-S2 with QPSK ("Conexant CX24120/CX24118")
Da muss man mal die Methode bool cDvbDevice::QueryDeliverySystems(int fd_frontend) genau anschauen: http://projects.vdr-developer.org/projec…try/dvbdevice.cUnd schauen, was der Treiber an Capabilities angibt.Grußhepi
ja, das schau ich mir als nächstes an, danke.
Ich glaube jetzt brauche ich wieder eure Hilfe.
Ich habe den Block wieder "einkommentiert" und ein paar debugausgaben eingefügt. Es stellt sich heraus, dass in zeile 11 von meinem letzten post
Frontend[0].u.buffer.len den Wert 1 hat. Also es wird nur genau ein DeliverySystem vom Treiber gemeldet - wenn ich das richtig verstanden hab!?
Aber Wie es jetzt weitergeht? An welcher Stelle (im Kerneltreiber) wird den diese Liste erzeugt? Wie ich überprüfe ob DTV_ENUM_DELSYS richtig unterstützt wird, weiß ich halt auch nicht.
Am liebsten wäre mir, wenn wir es irgendwie schaffen, dass der Kerneltreiber mehrere DeliverySystems meldet - so sollte es doch sein, oder macht der VDR da was falsch?
Das Endziel sollte ja sein, das in Zukunft die Karte "einfach so" mit Linux und VDR läuft - dann hat die VDR-Gemeinde insgesamt auch noch was von unserem Aufwand (Danke nochmal für die große Unterstützung)
Moin!
So sieht dtv_property aus: http://linuxtv.org/downloads/v…/FE_GET_SET_PROPERTY.html
Ich würde mal prüfen, ob Frontend[0].u.buffer.len den richtigen Wert hat und außerdem würde ich Frontend[0].u.buffer.data[0] - Frontend[0].u.buffer.data[31] ausgeben. Vielleicht steht da ja schon das passende DELSYS drin, nur die zurückgegebene Anzahl stimmt nicht.
Hier sind die Werte dafür: http://linuxtv.org/downloads/v….html#DTV-DELIVERY-SYSTEM
Lars.
ch würde mal prüfen, ob Frontend[0].u.buffer.len den richtigen Wert hat und außerdem würde ich Frontend[0].u.buffer.data[0] - Frontend[0].u.buffer.data[31]
Sep 27 14:27:08 vdr vdr: [26159] DVB API version is 0x050A (VDR was built with 0x050A)
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: len is 1
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[0] = 6
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[1] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[2] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[3] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[4] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[5] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[6] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[7] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[8] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[9] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[10] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[11] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[12] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[13] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[14] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[15] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[16] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[17] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[18] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[19] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[20] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[21] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[22] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[23] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[24] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[25] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[26] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[27] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[28] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[29] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[30] = 0
Sep 27 14:27:08 vdr vdr: [26159] DEBUG: Frontend[0].u.buffer.data[31] = 0
Sep 27 14:27:08 vdr vdr: [26159] frontend 0/0 provides DVB-S2 with QPSK ("Conexant CX24120/CX24118")
Sep 27 14:27:08 vdr vdr: [26159] found 1 DVB device
Alles anzeigen
DVB-S ist Nummer 5. Das scheint der Treiber nicht zurückzugeben.
Jetzt musst du im Treiberquellcode wühlen... Oder einfach len auf 2 setzen und data[1] auf 5. Aber dann profitiert kein anderer davon.
Lars.
Ich habs geschafft!!!
Ich habe den Treiber angepasst! Also das SYS_DVBS als zusätzliches system in die Datei cx24120.c eingefügt (Zeile 14 in dem Auszug) - jetzt funktioniert also alles mit original VDR!
static int cx24120_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks) // UNCORRECTED_BLOCKS
{
struct cx24120_state *state = fe->demodulator_priv;
*ucblocks = (cx24120_readreg(state, CX24120_REG_UCB_H) << 8) |
cx24120_readreg(state, CX24120_REG_UCB_L);
dbginfo("Blocks = %d\n", *ucblocks);
return 0;
}
EXPORT_SYMBOL(cx24120_read_ucblocks);
// ########################################################################################
static struct dvb_frontend_ops cx24120_ops = {
.delsys = { SYS_DVBS, SYS_DVBS2 },
.info = {
.name = "Conexant CX24120/CX24118",
.frequency_min = 950000,
.frequency_max = 2150000,
.frequency_stepsize = 1011, /* kHz for QPSK frontends */
.frequency_tolerance = 5000,
.symbol_rate_min = 1000000,
.symbol_rate_max = 45000000,
.caps = // 0x500006ff
FE_CAN_INVERSION_AUTO | //0x00 000 001
Alles anzeigen
Sep 27 14:40:08 vdr vdr: [2195] DVB API version is 0x050A (VDR was built with 0x050A)
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: len of Frontend is 2
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[0] = 5
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[1] = 6
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[2] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[3] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[4] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[5] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[6] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[7] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[8] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[9] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[10] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[11] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[12] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[13] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[14] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[15] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[16] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[17] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[18] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[19] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[20] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[21] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[22] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[23] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[24] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[25] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[26] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[27] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[28] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[29] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[30] = 0
Sep 27 14:40:08 vdr vdr: [2195] DEBUG: Frontend[0].u.buffer.data[31] = 0
Sep 27 14:40:08 vdr vdr: [2195] frontend 0/0 provides DVB-S,DVB-S2 with QPSK ("Conexant CX24120/CX24118")
Sep 27 14:40:08 vdr vdr: [2195] found 1 DVB device
Alles anzeigen
Glückwunsch! Diese Änderung darf aber nicht hier im Portal verloren gehen bzw. versanden! Am besten an möglichst viele Leute schicken, die diese Treiber-Patches anbieten, und auch im linuxtv.org wiki posten. Dort solltest Du auch Deine Erfahrungen festhalten, da ja die Wiki-Seite nicht aktuell zu sein scheint.
Gruß
hepi
Im Anhang der gesamtpatch gegen Linux 3.10.7
mfg
ducky
Ok, das war die Kür, jetzt kommt die Pflicht - Das Melden an die linux-media-Mailingliste bzw. den Treiberentwickler.
Herzlichen Glückwunsch!
Lars.
Danke!
ich habe den Patch in unserem SVN jetzt auch angepasst.
Patch works OK for kernel 3.13.7
Hallo,
dank des Treiberpatches habe ich auf meiner Zweitkiste die SkystarS2 zu Laufen bewegen können.
Vielen Dank für die Vorarbeit und Ergänzungen!
Die 8PSK-3/4 Kanäle laufen auch einwandfrei
Allerding scheitern bei mir folgende channels.conf Einträge:
Das Erste HD;ARD:11493:HC23M5O35P0S1:S19.2E:22000:5101=27:5102=deu@3,5103=mis@3;5106=deu@106:5104;5105=deu:0:10301:1:1019:0
ZDF HD;ZDFvision:11361:HC23M5O35P0S1:S19.2E:22000:6110=27:6120=deu@3,6121=mis@3,6123=mul@3;6122=deu@106:6130;6131=deu:0:11110:1:1011:0
arte HD;ARD:11493:HC23M5O35P0S1:S19.2E:22000:5111=27:5112=deu@3,5113=fra@3,5117=mis@3;5116=mul@106:5114;5115=deu,5118=fra:0:10302:1:1019:0
zdf.kultur HD;ZDFvision:11361:HC23M5O35P0S1:S19.2E:22000:6410=27:6420=deu@3,6421=mis@3,6423=mul@3;6422=deu@106:6430:0:11140:1:1011:0
ATV2;ATV:11243:HC56M2S0:S19.2E:22000:2230=2:2231=deu@4:2235:D05,D95,648,9C4,1702,1833,98C,D98,650:13223:1:1003:0
sixx Austria;sevenonemedia:12662:HC56M2S0:S19.2E:22000:1060=2:1061=deu@4:1063:0:13106:1:1115:0
Ich kann mit dem vdr auf die Kanäle schalten, es kommt aber kein Ton/Bild. (EPG wird aufgefüllt).
Kann mal bitte jemand der diese Karte mit dem Patch betreibt bestätigen, ob diese Kanäle laufen sollten?
Ich habe gegen Kernel 3.0.6 gepatcht.
Edit: Logausschnitt beim Umschalten auf Das Erste HD:
Jun 01 14:28:46 [vdr] [13063] connect from 127.0.0.1, port 39730 - accepted
Jun 01 14:28:46 [vdr] [13063] switching to channel 16
Jun 01 14:28:46 [vdr] [13063] [softhddev]SetPlayMode: 0_
Jun 01 14:28:46 [vdr] [13063] [softhddev]SetVideoDisplayFormat: 1_
Jun 01 14:28:46 [vdr] [13063] [softhddev]GetSpuDecoder:_
Jun 01 14:28:46 [vdr] [17948] osdteletext-receiver thread ended (pid=13063, tid=17948)
Jun 01 14:28:46 [vdr] [13063] buffer stats: 0 (0%) used
Jun 01 14:28:46 [vdr] [17949] TS buffer on device 1 thread ended (pid=13063, tid=17949)
Jun 01 14:28:46 [vdr] [17947] buffer stats: 68056 (1%) used
Jun 01 14:28:46 [vdr] [17947] receiver on device 1 thread ended (pid=13063, tid=17947)
Jun 01 14:28:46 [vdr] [13063] creating directory /tmp/osdteletext/S19.2E-1-1019-10301
Jun 01 14:28:46 [vdr] [18014] osdteletext-receiver thread started (pid=13063, tid=18014, prio=high)
Jun 01 14:28:46 [vdr] [18013] receiver on device 1 thread started (pid=13063, tid=18013, prio=high)
Jun 01 14:28:46 [vdr] [18015] TS buffer on device 1 thread started (pid=13063, tid=18015, prio=high)
Jun 01 14:28:46 [vdr] [13063] [softhddev]SetPlayMode: 1_
Jun 01 14:28:47 [vdr] [13063] closing SVDRP connection
Jun 01 14:28:47 [vdr] video: slow down video, duping frame_
Jun 01 14:28:47 [vdr] video: decoder buffer empty, duping frame (109/1286) 0 v-buf_
Jun 01 14:28:47 [vdr] video: --:--:--.--- +0 0 240/\ms 0+5 v-buf_
Jun 01 14:28:55 [vdr] [13069] frontend 0/0 timed out while tuning to channel 16, tp 111493
Jun 01 14:29:10 [vdr] video: decoder buffer empty, duping frame (189/1286) 0 v-buf_
Jun 01 14:29:10 [vdr] video: --:--:--.--- +0 0 240/\ms 0-1 v-buf_
Alles anzeigen
Grüße
astra
Das Erste tunes with no problem over here.
Das Erste HD;ARD:11493:HC23M5O0S1:S19.2E:22000:5101=27:5102=deu@3,5103=mis@3;5106=deu@106:5104;5105=deu:0:10301:1:1019:0
Linux 3.13.7 // VDR 2.1.6
Danke tv-user!
Ich konnte zwischenzeitlich eine zweite Skystar S2 testen.
Diese verhält sich exakt identisch, einen Fehler der Karte schließe ich daher aus.
Es liegt wohl am System, oder an der Kombination mit dem Multischalter.
Der patch funktioniert auch unter 3.17.0 einwandfrei. Gab es bereits Bemühungen den Patch in die Kernel Mainline zu integrieren?
lg
Es muss ihn nur einer auf der Mailingliste posten, am besten jemand, der die Hardware hat.
Lars
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!