Den Verdacht kann ich bestätigen
Hast Du yaVDR auch unter Proxmox laufen oder ohne Virtualisierung?
Den Verdacht kann ich bestätigen
Hast Du yaVDR auch unter Proxmox laufen oder ohne Virtualisierung?
ZitatHast Du yaVDR auch unter Proxmox laufen oder ohne Virtualisierung?
Ganz normale Installation.
vdr-freak & mahlzeit:
Dann müsst ihr den vdr-Patch erweitern. In device.c, dvbdevice.c und dvbci.c gibt es eine Funktion "SetIdle" bzw. "SetIdleDevice". Da könnt ihr nach belieben "isyslog"-Aufrufe einstreuen. Da ihr beide die Hardware durchreicht, vielleicht kriegt der vdr anschließend das Frontend nicht wieder richtig geöffnet, weil der Host irgendwie noch nicht so weit ist? Hab davon aber keine Ahnung.
Zumindest dippes hat ja auch Probleme mit dem Aufwecken der Devices, obwohl er keine Virtualisierung verwendet.
Ich habe zwar von Programmierung keine Ahnung, aber nach bestem Wissen die von Dir benannten Funktionen mit isyslog Einträgen ergänzt (den zugehörigen Patch habe ich angefügt). Nun habe ich den vdr gestartet und gewartet, bis alle Geräte eingeschlafen sind... danach habe ich über streamdev versucht einen Stream zu öffnen (ohne Erfolg). So wirklich schlau werde ich aus dem log aber auch nicht. Dass die Devices schlafen gelegt werden, kann man ja noch nachvollziehen (btw. device 1-4 entspricht adapter 0-3). Das mit dem Aufwecken kann ich allerdings noch nicht ganz nachvollziehen.
Nov 13 21:40:44 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 3
Nov 13 21:41:05 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 1
Nov 13 21:41:05 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 2
Nov 13 21:41:05 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 3
Nov 13 21:41:05 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 4
Nov 13 21:41:26 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 1
Nov 13 21:41:26 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 2
Nov 13 21:41:26 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 3
Nov 13 21:41:26 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 4
Nov 13 21:41:30 myVDR vdr: [3382] dynamite: device /dev/dvb/adapter0/frontend0 unused for 30 minutes, set to idle
Nov 13 21:41:30 myVDR vdr: [3382] dynamite: device /dev/dvb/adapter1/frontend0 unused for 30 minutes, set to idle
Nov 13 21:41:30 myVDR vdr: [3382] dynamite: device /dev/dvb/adapter2/frontend0 unused for 30 minutes, set to idle
Nov 13 21:41:30 myVDR vdr: [3382] dynamite: device /dev/dvb/adapter3/frontend0 unused for 30 minutes, set to idle
Nov 13 21:41:31 myVDR vdr: [3287] dynamite: set device /dev/dvb/adapter0/frontend0 to idle
Nov 13 21:41:31 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, Idle, Detach(player), device: 1
Nov 13 21:41:31 myVDR vdr: [3287] vdr-debug: cDvbTuner::SetIdle, CloseFrontend, idle, adapter/frontend 0/0
Nov 13 21:41:31 myVDR vdr: [3287] vdr-debug: cDvbDevice::SetIdleDevice, StopSectionHandler, idle, adapter/frontend 0/0
Nov 13 21:41:32 myVDR vdr: [3350] section handler thread ended (pid=3287, tid=3350)
Nov 13 21:41:32 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, SetIdleDevice(Idle, false), device: 1
Nov 13 21:41:32 myVDR vdr: [3287] dynamite: set device /dev/dvb/adapter1/frontend0 to idle
Nov 13 21:41:32 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, Idle, Detach(player), device: 2
Nov 13 21:41:32 myVDR vdr: [3287] vdr-debug: cDvbTuner::SetIdle, CloseFrontend, idle, adapter/frontend 1/0
Nov 13 21:41:32 myVDR vdr: [3287] vdr-debug: cDvbDevice::SetIdleDevice, StopSectionHandler, idle, adapter/frontend 1/0
Nov 13 21:41:33 myVDR vdr: [4356] section handler thread ended (pid=3287, tid=4356)
Nov 13 21:41:33 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, SetIdleDevice(Idle, false), device: 2
Nov 13 21:41:33 myVDR vdr: [3287] dynamite: set device /dev/dvb/adapter2/frontend0 to idle
Nov 13 21:41:33 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, Idle, Detach(player), device: 3
Nov 13 21:41:33 myVDR vdr: [3287] vdr-debug: cDvbTuner::SetIdle, CloseFrontend, idle, adapter/frontend 2/0
Nov 13 21:41:33 myVDR vdr: [3287] vdr-debug: cDvbDevice::SetIdleDevice, StopSectionHandler, idle, adapter/frontend 2/0
Nov 13 21:41:34 myVDR vdr: [4408] section handler thread ended (pid=3287, tid=4408)
Nov 13 21:41:34 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, SetIdleDevice(Idle, false), device: 3
Nov 13 21:41:34 myVDR vdr: [3287] dynamite: set device /dev/dvb/adapter3/frontend0 to idle
Nov 13 21:41:34 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, Idle, Detach(player), device: 4
Nov 13 21:41:34 myVDR vdr: [3287] vdr-debug: cDvbTuner::SetIdle, CloseFrontend, idle, adapter/frontend 3/0
Nov 13 21:41:34 myVDR vdr: [3287] vdr-debug: cDvbDevice::SetIdleDevice, StopSectionHandler, idle, adapter/frontend 3/0
Nov 13 21:41:35 myVDR vdr: [4443] section handler thread ended (pid=3287, tid=4443)
Nov 13 21:41:35 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, SetIdleDevice(Idle, false), device: 4
Nov 13 21:45:33 myVDR vdr: [3384] Streamdev: Accepted new client (HTTP) 192.168.5.55:43451
Nov 13 21:45:33 myVDR vdr: [3384] vdr-debug: cDvbTuner::SetIdle, OpenFrontend, not idle, adapter/frontend 3/0
Nov 13 21:45:33 myVDR vdr: [3384] vdr-debug: cDvbDevice::SetIdleDevice, StartSectionHandler, not idle, adapter/frontend 3/0
Nov 13 21:45:33 myVDR vdr: [3384] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 4
Nov 13 21:45:33 vdr: last message repeated 3 times
Nov 13 21:45:33 myVDR vdr: [3384] vdr-debug: cDevice::SetIdle, SetIdleDevice(Idle, false), device: 4
Nov 13 21:45:33 myVDR vdr: [3384] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 4
Nov 13 21:45:33 myVDR vdr: [7047] streamdev-livestreaming thread started (pid=3287, tid=7047, prio=high)
Nov 13 21:45:33 myVDR vdr: [7046] streamdev-writer thread started (pid=3287, tid=7046, prio=high)
Nov 13 21:45:33 myVDR vdr: [7045] section handler thread started (pid=3287, tid=7045, prio=low)
Nov 13 21:45:33 myVDR vdr: [3384] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 4
Nov 13 21:45:33 myVDR vdr: [7048] receiver on device 4 thread started (pid=3287, tid=7048, prio=high)
Nov 13 21:45:33 myVDR vdr: [7049] TS buffer on device 4 thread started (pid=3287, tid=7049, prio=high)
Nov 13 21:45:42 myVDR vdr: [3372] frontend 3/0 timed out while tuning to channel 24, tp 110802
Alles anzeigen
Irgendeine Idee?
Jetzt schieb ich direkt noch eine Log hinterher. Habe nun gewartet, bis die Geräte wieder idle waren und nochmal einen stream geöffnet... und siehe da, nun geht es. Das gleiche device (adapter 3 bzw. device 4) was gerade eben noch nicht ging... das soll mir mal einer erklären ;). Ich habe den vdr in der Zwischenzeit nicht neugestartet!!!
Nov 13 22:05:39 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 1
Nov 13 22:05:39 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 4
Nov 13 22:05:49 myVDR vdr: [3372] frontend 3/0 timed out while tuning to channel 41, tp 112421
Nov 13 22:06:01 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 1
Nov 13 22:06:01 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 4
Nov 13 22:06:10 myVDR vdr: [3372] frontend 3/0 timed out while tuning to channel 17, tp 112544
Nov 13 22:06:22 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 1
Nov 13 22:06:22 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 4
Nov 13 22:06:30 myVDR vdr: [3382] dynamite: device /dev/dvb/adapter0/frontend0 unused for 9 minutes, set to idle
Nov 13 22:06:30 myVDR vdr: [3382] dynamite: device /dev/dvb/adapter3/frontend0 unused for 20 minutes, set to idle
Nov 13 22:06:31 myVDR vdr: [3287] dynamite: set device /dev/dvb/adapter0/frontend0 to idle
Nov 13 22:06:31 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, Idle, Detach(player), device: 1
Nov 13 22:06:31 myVDR vdr: [3287] vdr-debug: cDvbTuner::SetIdle, CloseFrontend, idle, adapter/frontend 0/0
Nov 13 22:06:31 myVDR vdr: [3287] vdr-debug: cDvbDevice::SetIdleDevice, StopSectionHandler, idle, adapter/frontend 0/0
Nov 13 22:06:31 myVDR vdr: [3372] frontend 3/0 timed out while tuning to channel 26, tp 112662
Nov 13 22:06:31 myVDR vdr: [7089] section handler thread ended (pid=3287, tid=7089)
Nov 13 22:06:31 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, SetIdleDevice(Idle, false), device: 1
Nov 13 22:06:31 myVDR vdr: [3287] dynamite: set device /dev/dvb/adapter3/frontend0 to idle
Nov 13 22:06:31 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, Idle, Detach(player), device: 4
Nov 13 22:06:31 myVDR vdr: [3287] vdr-debug: cDvbTuner::SetIdle, CloseFrontend, idle, adapter/frontend 3/0
Nov 13 22:06:31 myVDR vdr: [3287] vdr-debug: cDvbDevice::SetIdleDevice, StopSectionHandler, idle, adapter/frontend 3/0
Nov 13 22:06:31 myVDR vdr: [7045] section handler thread ended (pid=3287, tid=7045)
Nov 13 22:06:31 myVDR vdr: [3287] vdr-debug: cDevice::SetIdle, SetIdleDevice(Idle, false), device: 4
Nov 13 22:09:13 myVDR vdr: [3384] Streamdev: Accepted new client (HTTP) 192.168.5.55:43825
Nov 13 22:09:14 myVDR vdr: [3384] vdr-debug: cDvbTuner::SetIdle, OpenFrontend, not idle, adapter/frontend 3/0
Nov 13 22:09:14 myVDR vdr: [3384] vdr-debug: cDvbDevice::SetIdleDevice, StartSectionHandler, not idle, adapter/frontend 3/0
Nov 13 22:09:14 myVDR vdr: [3384] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 4
Nov 13 22:09:14 vdr: last message repeated 3 times
Nov 13 22:09:14 myVDR vdr: [3384] vdr-debug: cDevice::SetIdle, SetIdleDevice(Idle, false), device: 4
Nov 13 22:09:14 myVDR vdr: [3384] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 4
Nov 13 22:09:14 myVDR vdr: [8589] streamdev-livestreaming thread started (pid=3287, tid=8589, prio=high)
Nov 13 22:09:14 myVDR vdr: [8588] streamdev-writer thread started (pid=3287, tid=8588, prio=high)
Nov 13 22:09:14 myVDR vdr: [8587] section handler thread started (pid=3287, tid=8587, prio=low)
Nov 13 22:09:14 myVDR vdr: [3384] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 4
Nov 13 22:09:14 myVDR vdr: [8590] receiver on device 4 thread started (pid=3287, tid=8590, prio=high)
Nov 13 22:09:14 myVDR vdr: [8591] TS buffer on device 4 thread started (pid=3287, tid=8591, prio=high)
Nov 13 22:09:15 myVDR vdr: [8587] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 4
Nov 13 22:09:54 vdr: last message repeated 3 times
Nov 13 22:09:54 myVDR vdr: [3384] ERROR: read from client (HTTP) 192.168.5.55:43825 failed: Die Verbindung wurde vom Kommunikationspartner zurückgesetzt
Nov 13 22:09:54 myVDR vdr: [3384] streamdev-server: closing HTTP connection to 192.168.5.55:43825
Nov 13 22:09:54 myVDR vdr: [8589] streamdev-livestreaming thread ended (pid=3287, tid=8589)
Nov 13 22:09:54 myVDR vdr: [8591] TS buffer on device 4 thread ended (pid=3287, tid=8591)
Nov 13 22:09:54 myVDR vdr: [8590] buffer stats: 336520 (8%) used
Nov 13 22:09:54 myVDR vdr: [8590] receiver on device 4 thread ended (pid=3287, tid=8590)
Nov 13 22:09:54 myVDR vdr: [8588] streamdev-writer thread ended (pid=3287, tid=8588)
Nov 13 22:09:54 myVDR vdr: [3384] buffer stats: 303056 (8%) used
Alles anzeigen
Beim ersten mal fällt mir als Unterschied nur die Zeile 51 auf:
War das der Kanal, den du per streamdev angefordert hast?
Beim zweiten Versuch taucht die Meldung nicht auf.
War die Karte beim ersten mal auf einen anderen Kanal getunt, so dass umgeschaltet werden musste?
Vermutlich war sie beim zweiten Versuch schon auf Kanal 24, so dass an der Ecke vielleicht nichts gehakt hat und der Kanal schneller gelockt werden konnte.
Ansonsten sieht das Log so aus, wie ich es erwarten würde. Es werden alle Funktionen aufgerufen, um die Karte wieder aufzuwecken (so auf den ersten Blick).
Aber natürlich kann es irgendwo immer noch Timing-Probleme geben. Geht es eigentlich um DVB-S(2)? Ich hab nur DVB-C, da geht das Tunen naturgemäß etwas schneller als bei Sat.
Lars.
Ja, channel 24 war der Kanal, den ich über streamdev angefordert hatte (bei beiden Versuchen). Beim zweiten Versuch taucht diese Meldung nicht auf, weil es kein time out gab und das 'tuning to channel' erfolgreich war (oder sollte wirklich ein Logeintrag erfolgen, wenn das tuning erfolgreich war?).
Vor dem ersten Versuch hatte ich auch channel 24 auf dem gleichen device. Jedoch kann es sein, dass ein epg-scan das device auf andere Kanäle umgeschaltet hat (ich kann aus dem Log nicht erkennen, welches device für epg scan verwendet wird). Die Vermutung, dass das device beim zweiten Versuch bereits auf Kanal 24 geschaltet war, kann ich noch nicht ganz nachvollziehen. Das erste log zeigt, dass frontend 3/0 (device 4) nicht auf channel 24 schalten konnte. Im Anschluss hat der vdr dann versucht auf verschiedenste Kanäle zu schalten (epg-scan?), jedoch auch ohne Erfolg. Der letzte Versuch war das Schalten auf Kanal 26, bevor das device dann schlafen gelegt worden ist. Danach kam ja erst wieder Kanal 24 ins Spiel (den ich aktiv über streamdev angefordert habe).
Bei mir geht es um DVB-S2.
Wie Du bereits schreibst, werden die Funktionen zum Aufwecken der Devices aufgerufen. Heisst das nun im Umkehrschluss, dass es sich um ein Treiberproblem handeln muss? Oder wie muss man mit eventuellen Timing-Problemen umgehen? Das komische ist ja wirklich, dass wenn erst mal ein "timed out" aufgetreten ist, das entsprechende Device frühestens nach erneutem Schlafenlegen und wieder Aufwecken funktioniert (zumindest nach aktuellem Kenntnisstand).
Schwer zu sagen, ist ja auch nicht einfach nachzustellen.
Treiber, Timeouts im vdr, Races oder irgendwas mit meinem Patch... ist alles möglich.
Lars.
Ok, ich verstehe, dass das alles sehr komplex ist. Aber wie kann man sich denn dem Problem annähern? Könnte man denn z.B. die Timeouts entsprechend verlängern, so dass man diese ausschließen kann?
Ich habe ein großes Interesse daran dieses Problem zu lösen und bin gerne bereit hier weiter aktiv zu testen. Leider bin ich kein Programmierer und brauche daher Hilfestellung an welchen Schrauben gedreht werden muss.
Das Problem kann ich zwar nicht direkt erzwingen, aber es tritt so häufig auf, dass ein debuggen möglich sein sollte. Letzte Nacht hatte ich testweise nochmals Timer erstellt. Alle devices schliefen. Von drei aufgeweckten devices war nur ein device in der Lage auch auf den entsprechenden channel zu tunen. Die anderen beiden brachten wieder nur "timed out". Heute Morgen lief dann erst mal wieder alles wie es sollte.
Zur vollständigkeit hier noch das installierte Treiberpaket:
$ apt-cache policy media-build-experimental-dkms
media-build-experimental-dkms:
Installiert: 0~20130831.210530-1yavdr1~precise
Kandidat: 0~20130831.210530-1yavdr1~precise
Versionstabelle:
*** 0~20130831.210530-1yavdr1~precise 0
500 http://ppa.launchpad.net/yavdr/main/ubuntu/ precise/main amd64 Packages
100 /var/lib/dpkg/status
Servus,
an der Problemlösung wäre ich auch interessiert, zwischen den Aufnahmen könnte ich auch mal testen. Kann zwar einigermaßen Programmieren, aber mit C/C++ und den VDR Gegebenheiten habe ich mich noch nicht auseinandergesetzt-
cu
Markus
Ich habe gerade nochmal mit femon die devices beobachtet. Dazu habe ich alle devices per svdrpsend Befehl schlafen gelegt und dann ein device geweckt (hierbei ist kein Client mit dem VDR Server verbunden). Nach dem Aufwecken versucht der vdr server direkt einen channel zu tunen und bringt ein timeout. Nach einigen Sekunden sehe ich aber im femon einen lock.
svdrpsend und femon:
$ svdrpsend -p 6419 plug dynamite setnotidle /dev/dvb/adapter3/frontend0
220 myVDR SVDRP VideoDiskRecorder 2.0.3; Thu Nov 14 09:27:12 2013; UTF-8
900 device /dev/dvb/adapter3/frontend0 is not idle
221 myVDR closing connection
$ femon -H -a3 -f0
FE: STV090x Multistandard (DVBS)
status | signal 0% | snr 0% | ber 0 | unc 0 |
status SC | signal 0% | snr 0% | ber 0 | unc 0 |
status | signal 0% | snr 0% | ber 0 | unc 0 |
status SC | signal 0% | snr 0% | ber 0 | unc 0 |
status SC | signal 0% | snr 0% | ber 0 | unc 0 |
status | signal 0% | snr 0% | ber 0 | unc 0 |
status | signal 0% | snr 0% | ber 0 | unc 0 |
status | signal 0% | snr 0% | ber 0 | unc 0 |
status | signal 0% | snr 0% | ber 0 | unc 0 |
status | signal 0% | snr 0% | ber 0 | unc 0 |
status | signal 0% | snr 0% | ber 0 | unc 0 |
status | signal 0% | snr 0% | ber 0 | unc 0 |
status | signal 0% | snr 0% | ber 0 | unc 0 |
status SC | signal 0% | snr 0% | ber 0 | unc 0 |
status | signal 0% | snr 0% | ber 0 | unc 0 |
status | signal 0% | snr 0% | ber 0 | unc 0 |
status | signal 0% | snr 0% | ber 0 | unc 0 |
status SCVYL | signal 75% | snr 72% | ber 0 | unc 0 | FE_HAS_LOCK
status SCVYL | signal 75% | snr 72% | ber 0 | unc 0 | FE_HAS_LOCK
status SCVYL | signal 75% | snr 72% | ber 0 | unc 0 | FE_HAS_LOCK
status SCVYL | signal 75% | snr 72% | ber 0 | unc 0 | FE_HAS_LOCK
status SCVYL | signal 75% | snr 72% | ber 0 | unc 0 | FE_HAS_LOCK
status SCVYL | signal 75% | snr 72% | ber 0 | unc 0 | FE_HAS_LOCK
status SCVYL | signal 75% | snr 72% | ber 0 | unc 0 | FE_HAS_LOCK
Alles anzeigen
syslog:
Nov 14 09:27:12 myVDR vdr: [17451] connect from 127.0.0.1, port 41334 - accepted
Nov 14 09:27:12 myVDR vdr: [17451] dynamite: set device /dev/dvb/adapter3/frontend0 to not idle
Nov 14 09:27:12 myVDR vdr: [17451] vdr-debug: cDvbTuner::SetIdle, OpenFrontend, not idle, adapter/frontend 3/0
Nov 14 09:27:12 myVDR vdr: [17451] vdr-debug: cDvbDevice::SetIdleDevice, StartSectionHandler, not idle, adapter/frontend 3/0
Nov 14 09:27:12 myVDR vdr: [17451] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 4
Nov 14 09:27:12 vdr: last message repeated 3 times
Nov 14 09:27:12 myVDR vdr: [17451] vdr-debug: cDevice::SetIdle, SetIdleDevice(Idle, false), device: 4
Nov 14 09:27:12 myVDR vdr: [20167] section handler thread started (pid=17451, tid=20167, prio=low)
Nov 14 09:27:12 myVDR vdr: [17451] closing SVDRP connection
Nov 14 09:27:27 myVDR vdr: [17451] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 4
Nov 14 09:27:36 myVDR vdr: [17537] frontend 3/0 timed out while tuning to channel 20, tp 110743
Nov 14 09:27:48 myVDR vdr: [17451] vdr-debug: cDevice::SetIdle, isIdle == Idle, device: 4
Alles anzeigen
Hierbei ist mir auch aufgefallen, dass devices, die einen Lock haben, manchmal auch nach dem Schlafenlegen über femon noch einen Lock anzeigen, jedoch mit Fehlerweten bei SNR und BER. Ist das normal? Zum Beispiel wie hier:
$ svdrpsend -p 6419 plug dynamite setnotidle /dev/dvb/adapter2/frontend0
220 myVDR SVDRP VideoDiskRecorder 2.0.3; Thu Nov 14 09:22:25 2013; UTF-8
900 device /dev/dvb/adapter2/frontend0 is not idle
221 myVDR closing connection
$ femon -H -a2 -f0
FE: STV090x Multistandard (DVBS)
status | signal 0% | snr 0% | ber 0 | unc 32 |
status | signal 30% | snr 0% | ber 0 | unc 32 |
status | signal 0% | snr 0% | ber 0 | unc 32 |
status | signal 0% | snr 0% | ber 0 | unc 32 |
status | signal 30% | snr 0% | ber 0 | unc 32 |
status SC | signal 0% | snr 0% | ber 0 | unc 32 |
status | signal 0% | snr 0% | ber 0 | unc 32 |
status SC | signal 0% | snr 0% | ber 0 | unc 32 |
status | signal 0% | snr 0% | ber 0 | unc 32 |
status SC | signal 0% | snr 0% | ber 0 | unc 32 |
status | signal 0% | snr 0% | ber 0 | unc 32 |
status | signal 0% | snr 0% | ber 0 | unc 32 |
status SCVYL | signal 72% | snr 79% | ber 0 | unc 0 | FE_HAS_LOCK
status SCVYL | signal 72% | snr 79% | ber 0 | unc 0 | FE_HAS_LOCK
status SCVYL | signal 71% | snr 79% | ber 0 | unc 0 | FE_HAS_LOCK
status SCVYL | signal 72% | snr 79% | ber 0 | unc 0 | FE_HAS_LOCK
status SCVYL | signal 71% | snr 79% | ber 0 | unc 0 | FE_HAS_LOCK
status SCVYL | signal 71% | snr 79% | ber 0 | unc 0 | FE_HAS_LOCK
status SCVYL | signal 72% | snr 79% | ber 0 | unc 0 | FE_HAS_LOCK
status SCVYL | signal 71% | snr 79% | ber 0 | unc 0 | FE_HAS_LOCK
status SCVYL | signal 72% | snr 79% | ber 0 | unc 0 | FE_HAS_LOCK
status SCVYL | signal 71% | snr 79% | ber 0 | unc 0 | FE_HAS_LOCK
$ svdrpsend -p 6419 plug dynamite setidle /dev/dvb/adapter2/frontend0
220 myVDR SVDRP VideoDiskRecorder 2.0.3; Thu Nov 14 09:23:00 2013; UTF-8
900 device /dev/dvb/adapter2/frontend0 is idle
221 myVDR closing connection
$ femon -H -a2 -f0
FE: STV090x Multistandard (DVBS)
Problem retrieving frontend information: Resource temporarily unavailable
status SCVYL | signal 0% | snr 0% | ber 4196587 | unc -239047299 | FE_HAS_LOCK
Problem retrieving frontend information: Resource temporarily unavailable
status SCVYL | signal 0% | snr 0% | ber 4196587 | unc -239047299 | FE_HAS_LOCK
Problem retrieving frontend information: Resource temporarily unavailable
status SCVYL | signal 0% | snr 0% | ber 4196587 | unc -239047299 | FE_HAS_LOCK
Problem retrieving frontend information: Resource temporarily unavailable
status SCVYL | signal 0% | snr 0% | ber 4196587 | unc -239047299 | FE_HAS_LOCK
Problem retrieving frontend information: Resource temporarily unavailable
Alles anzeigen
Manchmal ist der Status der devices nach dem Schlafenlegen auch nur "SC", ohne FE_HAS_LOCK. Manchmal auch mit leerem Status, auch ohne FE_HAS_LOCK. Kommt mir irgendwie komisch vor.
Und weil es so schön ist direkt noch ein Szenario. Device schlafen gelegt und wieder aufgeweckt... danch kein Lock mehr (Signalwert ändert sich dann mal, wenn der vdr versucht auf einen anderen Kanal zu wechseln, sonst passiert nix). In der Syslog sind dann dauerhauft "timed out" Einträge mit den jeweiligen channels (habe ich mir gespart anzufügen)...
$ svdrpsend -p 6419 plug dynamite setidle /dev/dvb/adapter3/frontend0
220 myVDR SVDRP VideoDiskRecorder 2.0.3; Thu Nov 14 09:41:25 2013; UTF-8
900 device /dev/dvb/adapter3/frontend0 is idle
221 myVDR closing connection
$ femon -H -a3 -f0
FE: STV090x Multistandard (DVBS)
Problem retrieving frontend information: Resource temporarily unavailable
status SC | signal 0% | snr 0% | ber 4196587 | unc -872133251 |
Problem retrieving frontend information: Resource temporarily unavailable
status SC | signal 0% | snr 0% | ber 4196587 | unc -872133251 |
Problem retrieving frontend information: Resource temporarily unavailable
$ svdrpsend -p 6419 plug dynamite setnotidle /dev/dvb/adapter3/frontend0
220 myVDR SVDRP VideoDiskRecorder 2.0.3; Thu Nov 14 09:46:26 2013; UTF-8
900 device /dev/dvb/adapter3/frontend0 is not idle
221 myVDR closing connection
$ femon -H -a3 -f0
FE: STV090x Multistandard (DVBS)
status SC | signal 100% | snr 0% | ber 0 | unc 32 |
status SC | signal 0% | snr 0% | ber 0 | unc 32 |
status SC | signal 0% | snr 0% | ber 0 | unc 32 |
status SC | signal 0% | snr 0% | ber 0 | unc 32 |
status SC | signal 0% | snr 0% | ber 0 | unc 32 |
status SC | signal 0% | snr 0% | ber 0 | unc 32 |
status SC | signal 0% | snr 0% | ber 0 | unc 32 |
status SC | signal 0% | snr 0% | ber 0 | unc 32 |
status SC | signal 0% | snr 0% | ber 0 | unc 32 |
status SC | signal 0% | snr 0% | ber 0 | unc 32 |
status SC | signal 0% | snr 0% | ber 0 | unc 32 |
status SC | signal 0% | snr 0% | ber 0 | unc 32 |
status SC | signal 0% | snr 0% | ber 0 | unc 32 |
status SC | signal 74% | snr 0% | ber 0 | unc 32 |
status SC | signal 74% | snr 0% | ber 0 | unc 32 |
status SC | signal 74% | snr 0% | ber 0 | unc 32 |
status SC | signal 74% | snr 0% | ber 0 | unc 32 |
status SC | signal 74% | snr 0% | ber 0 | unc 32 |
status SC | signal 74% | snr 0% | ber 0 | unc 32 |
status SC | signal 74% | snr 0% | ber 0 | unc 32 |
Alles anzeigen
Update: Auch hier will ich nochmal anmerken, dass ein erneutes Schlafenlegen des device und wieder aufwecken das Problem löst.
Wenn dynamite das Device "schlafen" legt, heißt das letztlich nur, dass alle Filedescriptoren geschlossen werden. Dass dann manchmal noch ein Lock vorhanden ist und manchmal nicht, ist Zufall. Es ist ja keine Anwendung mehr da, die den Tuner steuert. Was dann also passiert, ist Treibersache. Vielleicht hält der Treiber noch den Lock, vielleicht auch nicht - keine Ahnung.
Jedenfalls kann man davon ausgehen, dass die Karte in einem "undefinierten" Zustand ist, wenn alle Descriptoren geschlossen wurden.
Vielleicht fehlt ja noch ein wichtiges Detail beim wieder Öffnen, also in "OpenFrontend". Muss ich mir mal bei Gelegenheit ansehen.
Lars.
Vielleicht könntest du in dvbdevice.c in der Funktion "CloseFrontend" noch was einbauen:
bool cDvbTuner::CloseFrontend(void)
{
if (fd_frontend < 0)
return true;
cMutexLock MutexLock(&mutex);
tunerStatus = tsIdle;
+ ResetToneAndVoltage();
newSet.Broadcast();
close(fd_frontend);
fd_frontend = -1;
return true;
}
Alles anzeigen
Lars.
Ich habe die Ergänzung in der dvbdevice.c vorgenommen, jedoch hat sich am bislang beschriebenen Verhalten nichts geändert.
Schade. Dann muss ich erst länger drüber nachdenken, hab aber keine Ahnung, wann ich Zeit dafür finde.
Ohne dynamite bekommt streamdev immer ein Bild?
Lars
Ohne "AutoIdle" bekommt streamdev immer ein Bild (dynamite selbst bleibt grundsätzlich aktiv, es geht ja nur ums Schlafenlegen der devices).
Danke für Deine bisherigen Bemühungen. Sobald Dir was einfällt, will ich gerne testen!
Gibt es denn einen Ansatz den Debug-Output des Treibers zu sehen? Vielleicht ist ja etwas auffällig, wenn sich das device schlafen legt bzw. aufgeweckt wird.
Vielleicht hat der Treiber eine Modul-Option, mit der er mehr über dmesg ausgibt.
=> modinfo <Modul>
Lars.
Ich habe das idle meines USB DVB Adapters ausprobiert. Der Suntek USB Stick wurde wie gewünscht abgeschaltet und bei Bedarf wieder aktiviert.
Allerdings gibt es bei mir den Seiteneffekt das auch mein USB MCE IR Emfänger deaktiviert wird, weshalb ich den idle Parameter wieder deaktiviert habe.
Bus 003 Device 002: ID 2659:1208 idle ok
Bus 001 Device 003: ID 15c2:0038 SoundGraph Inc. GD01 MX LCD Display/IR Receiver idle ok funktioniert weiter
Bus 002 Device 003: ID 0609:031d SMK Manufacturing, Inc. eHome Infrared Receiver idle nicht ok
Wie erkennt dynamite das das USB Gerät ein DVB Device ist?
Ob USB oder nicht, ist dynamite total egal.
Wenn der vdr eine zeitlang nicht OpenDvr von cDvbDevice aufgerufen hat, dann werden einfach alle Filedescriptors geschlossen, mehr nicht. Sobald der vdr wieder irgendwas von dem DVB-Gerät will, werden sie wieder geöffnet.
Ob da vielleicht irgendein Energiemanagement vom USB-System zuschlägt und die Hubs deaktiviert?
dynamite kümmert sich jedenfalls nicht um USB.
Lars.
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!