Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: OutCommand: timeout waiting for COMMAND idle; SOutCommand error; outcom error



At 15:57 17/05/2003, you wrote:
Hello List!

My System:
1. and 2. DVB-Card: DVB-C (Siemens) (w/o analog module detected)
3. DVB-Card: DVB-T (Nova-T)
If I start after driver restart VDR on a DVB-T-Program (Transfermode start),
then it comes to 3-5 min on DVB C Program to the following error. (Kernel-Log)
DVB C Programs (primary DVB Card) cannot be indicated then any longer.
If i tune the DVB-C-Card (Primary DVB-Card) after driver restart on a program, it comes not to this error.

Can this someone confirm??
Yes, I can confirm this - it seems related to the vbv delay / buffer overflow bug we've been talking about. At least I've been getting this a lot with CVS drivers and my patch to vdr to set vbv to 0xFFFF. After about 50-60 channel changes it would throws these errors. It was certainly an improvement over dieing straight away on certain channels (and then obviously I wouldn't get the errors because the av7110 had already locked up :).

Oliver Endriss elaborated on these ideas made an experimental patch to av7110.c which incorporates setting vbv delay to 0xFFFF on the driver level. He posted it over on the vdr list.

We both agree this should really be fixed at firmware level but for the time being this might seem like a good solution. You could give it a try (and if you happened to have patched remux.c with my patch for vdr beforehand put it back to an original one).

I have not yet seen any command errors after around 100 channel changes and 2 hours of solid running time with Olli's patch.

Let me repost it here:

--- av7110.c.org Sat May 17 05:12:30 2003
+++ av7110.c Sat May 17 05:19:39 2003
@@ -1116,6 +1116,8 @@ pes_play(void *dest, ring_buffer_t *buf,
int len, split=0;
u32 sync;
u16 blen;
+ int i, ftype;
+ char *p;

dprintk ("function : %s\n", __FUNCTION__);
if (!dlen) {
@@ -1165,6 +1167,20 @@ pes_play(void *dest, ring_buffer_t *buf,

dprintk ("function: %s pread=%08x pwrite=%08x\n", __FUNCTION__,
buf->pread, buf->pwrite);
+
+ p = dest;
+ for (i = 0; i < blen-8; i++) {
+ if (p[i] == 0 && p[i+1] == 0 && p[i+2] == 1 && p[i+3] == 0) {
+ ftype = (p[i+5] >> 3) & 0x07;
+ if (ftype) {
+ //printk ("pic %d at %d/%d\n", ftype, i, blen);
+ p[i+5] |= 0x07;
+ p[i+6] |= 0xff;
+ p[i+7] |= 0xf8;
+ }
+ }
+ }
+
wake_up(&buf->queue);
return blen;
}


- Gregor


--
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index