Mir ist gerade im linuxtv-CVS folgende Bemerkung aufgefallen: http://www.linuxtv.org/cgi-bin/viewcvs.cgi/dvb-kernel/b2c2/README?rev=1.16&view=auto
ZitatAlles anzeigen
Known bugs and problems and TODO
-----------------------
[...]
1h) size of the dma and type of irq.
Currently dma1 is used for TS transfer to the user space. The DMA is splitted
in 2 equal-sized subbuffers. The Flexcop writes to first address and executes an irq
when it is full and starts writing to the second address. When the second
address is full, the IRQ is executed again, and the flexcop writes to first
address again, and so on.
The buffersize of each address is currently 640*188 bytes. Problem is, when
using hw-pid-filtering and doing some low-bandwidth operation (like scanning)
the buffers won't be filled enough to trigger the IRQ.
There are two additional DMA-IRQ-methods: a timer IRQ and a packet count IRQ.
For both one need to calculate stuff with the cur_address (0x008 and 0x018 ).
Probably the best would be a combination of timer IRQ and the normal size-IRQ
as used by the old skystar2-driver.
Another solution would be, to disable HW PID filtering, but I don't know how
the DVB API software demux behaves on slow systems with 45MBit/s TS Stream.
Hieraus ergeben sich eine Erklärung für das "Einschlafproblem" und einige mögliche Workarounds.
Zunächst die Erklärung: Wird beim VDR eine "low-Bandwidth" (also wenige Daten liefernde) Anwendung gestartet, wie z.B. EPG-Scan, dann kann es vorkommen, dass vor dem nächsten Zap keiner der beiden DMA-Buffer gefüllt ist. Der Treiber liefert dann einfach keine weiteren Daten mehr.
Jetzt die Workaraounds:
1. Warten, bis Patrick den neuen Treiber fertig hat. (Zugegeben, nichts für Ungeduldige.)
2. Den EPG-Scan so patchen, dass er zusätzlich einen PID-Filter auf einen Video-PID setzt. Dann sollte der Buffer sich immer schnell genug füllen.
3. Die Hardware-Filter abschalten. Dazu muss eine Kernel-Option gesetzt werden, die in der jeweils verwendeten skystar2.c (bzw. skystar2.ko) dokumentiert ist. Wenn dies getan wird, wird der Buffer immer mit dem ganzen TS geflutet, egal welche PIDs gesetzt sind. [EDIT]Die dazugehörige Moduloption heißt "enable_hw_filters=0". Das muss hinter "modprobe skystar2" eingetragen werden, wo auch immer das steht.[/EDIT]
Ich hoffe, eine dieser Optionen hilft euch weiter.