[linux-dvb] Strange problem with Vision DTV-CI (1030A)

Bendyak Evgen ebendyak at i.com.ua
Mon Sep 25 10:25:46 CEST 2006


Good day I have big strange problem I have Sat card Vision DTV-CI (1030A)
(5 cards) & also for test I use Twinhan DTV-CI (1030). Kernel 2.6.14 and
also try 2.6.17 (problem the same)
All of those cards have such problem:
	From time to time (not constant form 1 minute to 10 minutes) I read from
card data that contain errors. So picture in these moments is breaking on
boxes and sound is sizzling. I check integrity of data by each PID stream
counter (so I detect in this moments error in counter sequence, for
information error in all PID that translate in this stream). My test app
once tunes to signal after read data and play one channel and check PID
streams counter. I try on many signals from different Satellites problem
the same (25 M symbol/sec 3/4 FEC mode data not scrambled). For check
signal I connect domestic Sat receiver to output (loop) of card tuner and
check picture and sound in parallel on TV. So domestic Sat receiver work
all time without errors in picture or sound, no picture break or still was
detected. So I decide something wrong with card or driver, hw part I think
okay because I test 5 Vision DTV-CI and one Twinhan DTV-CI problem the
same. So problem I think is in driver or in chip setup sequence. Under
windows drivers those cards works okay without such bug. So next my step
was opening source code of driver and adding some check with printk
messages in detection of error.
I add (drivers/media/dvb/dvb-core/dvb_demux.c) in begin of static void
dvb_dmx_swfilter_packet(struct dvb_demux *demux, const u8 *buf) such code
for check correct PID stream counter fro one of PIDs (6521 video stream)
static short counter_val=0;
if(pid==6521)
{
              short counter=buf[3]&0x0F;
              short NextCounter=counter_val+1;
              short PrevCounter=counter_val-1;
              if(NextCounter>0xF)
                  NextCounter=0;
              if(PrevCounter<0)
                  PrevCounter=0xF;
              if(counter!=NextCounter && counter!=PrevCounter &&
counter!=counter_val)
              {
                  printk("DVB:was %d wait [%d;%d] received
%d!\n",counter_val,PrevCounter,NextCounter,counter);
              }
              counter_val=counter;
}
And other modification in this file in void dvb_dmx_swfilter(struct
dvb_demux *demux, const u8 *buf, size_t count)
while (p < count) {
                  if (buf[p] == 0x47) {
                          if (count - p >= 188) {
                                  dvb_dmx_swfilter_packet(demux, &buf[p]);
                                  p += 188;
                          } else {
                                  i = count - p;
                                  memcpy(demux->tsbuf, &buf[p], i);
                                  demux->tsbufp = i;
                                  goto bailout;
                          }
                  } else
                  {
                      printk("Skip sinhro byte!\n"); //I add for print
information about that skip one byte
                          p++;
                  }
          }
After modification I reconfigure kernel log system to send message in
file. I send you small part listing of this file:
Sep 25 03:33:15 localhost kernel: Skip sinhro byte!
Sep 25 03:33:15 localhost last message repeated 1271 times
Sep 25 03:33:15 localhost kernel: DVB:was 4 wait [3;5] received  8!
Sep 25 03:33:15 localhost kernel: Skip sinhro byte!
Sep 25 03:33:15 localhost last message repeated 375 times
Sep 25 03:33:17 localhost kernel: DVB:was 10 wait [9;11] received  2!
Sep 25 03:33:17 localhost kernel: DVB:was 10 wait [9;11] received  3!
Sep 25 03:34:52 localhost kernel: DVB:was 15 wait [14;0] received  3!
Sep 25 03:34:52 localhost kernel: DVB:was 9 wait [8;10] received  4!
Sep 25 03:51:44 localhost kernel: Skip sinhro byte!
Sep 25 03:51:44 localhost last message repeated 1283 times
Sep 25 03:51:44 localhost kernel: DVB:was 11 wait [10;12] received  1!
Sep 25 03:51:44 localhost kernel: Skip sinhro byte!
Sep 25 03:51:44 localhost last message repeated 375 times
Sep 25 03:51:46 localhost kernel: DVB:was 12 wait [11;13] received  2!
Sep 25 03:51:46 localhost kernel: DVB:was 8 wait [7;9] received  6!
Sep 25 03:53:21 localhost kernel: DVB:was 10 wait [9;11] received  8!
Sep 25 03:57:10 localhost kernel: DVB:was 4 wait [3;5] received  6!
Sep 25 03:57:11 localhost kernel: DVB:was 15 wait [14;0] received  4!
Sep 25 03:59:53 localhost kernel: DVB:was 14 wait [13;15] received  1!
Sep 25 04:10:12 localhost kernel: Skip sinhro byte!
Sep 25 04:10:12 localhost last message repeated 1271 times
Sep 25 04:10:12 localhost kernel: DVB:was 5 wait [4;6] received  7!
Sep 25 04:10:12 localhost kernel: Skip sinhro byte!
Sep 25 04:10:12 localhost last message repeated 187 times
Sep 25 04:10:12 localhost kernel: DVB:was 11 wait [10;12] received  13!
Sep 25 04:10:12 localhost kernel: Skip sinhro byte!
Sep 25 04:10:12 localhost last message repeated 187 times
Sep 25 04:10:12 localhost kernel: DVB:was 7 wait [6;8] received  9!
Sep 25 04:10:14 localhost kernel: DVB:was 4 wait [3;5] received  8!
Sep 25 04:10:15 localhost kernel: DVB:was 1 wait [0;2] received  6!
Sep 25 04:23:02 localhost kernel: DVB:was 14 wait [13;15] received  0!
Sep 25 04:23:03 localhost kernel: DVB:was 8 wait [7;9] received  13!
Sep 25 04:24:37 localhost kernel: DVB:was 13 wait [12;14] received  15!
Sep 25 04:28:41 localhost kernel: Skip sinhro byte!
Sep 25 04:28:41 localhost last message repeated 703 times
Sep 25 04:28:41 localhost kernel: DVB:was 2 wait [1;3] received  4!
Sep 25 04:28:41 localhost kernel: Skip sinhro byte!
Sep 25 04:28:41 localhost last message repeated 567 times
Sep 25 04:28:41 localhost kernel: DVB:was 7 wait [6;8] received  10!
Sep 25 04:28:41 localhost kernel: Skip sinhro byte!
Sep 25 04:28:41 localhost last message repeated 939 times
Sep 25 04:28:43 localhost kernel: DVB:was 3 wait [2;4] received  5!
Sep 25 04:28:43 localhost kernel: DVB:was 14 wait [13;15] received  1!
Sep 25 04:31:53 localhost kernel: DVB:was 7 wait [6;8] received  4!
Sep 25 04:31:54 localhost kernel: DVB:was 4 wait [3;5] received  6!
Sep 25 04:32:21 localhost kernel: DVB:was 15 wait [14;0] received  7!
Sep 25 04:39:47 localhost kernel: DVB:was 11 wait [10;12] received  13!
Sep 25 04:39:47 localhost kernel: DVB:was 8 wait [7;9] received  10!
Sep 25 04:39:47 localhost kernel: DVB:was 11 wait [10;12] received  3!
Sep 25 04:39:47 localhost kernel: DVB:was 11 wait [10;12] received  1!
Sep 25 04:39:48 localhost kernel: DVB:was 10 wait [9;11] received  12!
Sep 25 04:39:48 localhost kernel: DVB:was 1 wait [0;2] received  3!
Sep 25 04:39:48 localhost kernel: DVB:was 3 wait [2;4] received  12!
Sep 25 04:39:48 localhost kernel: DVB:was 12 wait [11;13] received  5!
Sep 25 04:41:00 localhost kernel: DVB:was 5 wait [4;6] received  7!
Sep 25 04:41:00 localhost kernel: DVB:was 3 wait [2;4] received  10!
Sep 25 04:41:00 localhost kernel: DVB:was 10 wait [9;11] received  5!
Sep 25 04:41:01 localhost kernel: DVB:was 12 wait [11;13] received  14!
Sep 25 04:41:02 localhost kernel: DVB:was 3 wait [2;4] received  1!
Sep 25 04:41:02 localhost kernel: DVB:was 1 wait [0;2] received  5!
Sep 25 04:41:02 localhost kernel: DVB:was 15 wait [14;0] received  1!
Sep 25 04:41:03 localhost kernel: DVB:was 15 wait [14;0] received  2!
Sep 25 04:41:03 localhost kernel: DVB:was 2 wait [1;3] received  7!
Sep 25 04:41:03 localhost kernel: DVB:was 7 wait [6;8] received  4!
Sep 25 04:41:03 localhost kernel: DVB:was 14 wait [13;15] received  11!
Sep 25 04:41:03 localhost kernel: DVB:was 11 wait [10;12] received  0!
Sep 25 04:41:03 localhost kernel: DVB:was 14 wait [13;15] received  0!
Sep 25 04:41:03 localhost kernel: DVB:was 1 wait [0;2] received  3!
Sep 25 04:41:03 localhost kernel: DVB:was 12 wait [11;13] received  14!
Sep 25 04:41:09 localhost kernel: DVB:was 5 wait [4;6] received  11!
Sep 25 04:47:10 localhost kernel: Skip sinhro byte!
Sep 25 04:47:10 localhost last message repeated 1271 times
Sep 25 04:47:10 localhost kernel: DVB:was 15 wait [14;0] received  2!
Sep 25 04:47:10 localhost kernel: Skip sinhro byte!
Sep 25 04:47:10 localhost last message repeated 375 times
Sep 25 04:47:12 localhost kernel: DVB:was 15 wait [14;0] received  6!
Sep 25 04:47:12 localhost kernel: DVB:was 10 wait [9;11] received  15!
Sep 25 05:03:49 localhost kernel: DVB:was 12 wait [11;13] received  15!
Sep 25 05:03:50 localhost kernel: DVB:was 10 wait [9;11] received  5!
Sep 25 05:05:39 localhost kernel: Skip sinhro byte!
Sep 25 05:05:39 localhost last message repeated 1271 times
Sep 25 05:05:39 localhost kernel: DVB:was 1 wait [0;2] received  6!
Sep 25 05:05:39 localhost kernel: Skip sinhro byte!
Sep 25 05:05:39 localhost last message repeated 939 times
Sep 25 05:05:39 localhost kernel: DVB:was 13 wait [12;14] received  15!
Sep 25 05:05:41 localhost kernel: DVB:was 8 wait [7;9] received  14!
Sep 25 05:05:41 localhost kernel: DVB:was 3 wait [2;4] received  8!
Sep 25 05:07:16 localhost kernel: DVB:was 2 wait [1;3] received  8!
Sep 25 05:07:43 localhost kernel: DVB:was 12 wait [11;13] received  6!
Sep 25 05:07:44 localhost kernel: DVB:was 8 wait [7;9] received  1!
Sep 25 05:10:26 localhost kernel: DVB:was 5 wait [4;6] received  3!
Sep 25 05:14:16 localhost kernel: DVB:was 12 wait [11;13] received  8!
Sep 25 05:15:51 localhost kernel: DVB:was 11 wait [10;12] received  2!
Sep 25 05:17:26 localhost kernel: DVB:was 0 wait [15;1] received  3!
Sep 25 05:17:26 localhost kernel: DVB:was 13 wait [12;14] received  11!
Sep 25 05:24:07 localhost kernel: Skip sinhro byte!
Sep 25 05:24:07 localhost last message repeated 1271 times
Sep 25 05:24:07 localhost kernel: DVB:was 3 wait [2;4] received  7!
Sep 25 05:24:07 localhost kernel: Skip sinhro byte!
Sep 25 05:24:07 localhost last message repeated 375 times
Sep 25 05:24:07 localhost kernel: DVB:was 8 wait [7;9] received  10!
Sep 25 05:24:07 localhost kernel: Skip sinhro byte!
Sep 25 05:24:07 localhost last message repeated 563 times
Sep 25 05:24:09 localhost kernel: DVB:was 0 wait [15;1] received  12!
Sep 25 05:24:10 localhost kernel: DVB:was 11 wait [10;12] received  1!
Sep 25 05:25:44 localhost kernel: DVB:was 3 wait [2;4] received  6!
Sep 25 05:25:45 localhost kernel: DVB:was 15 wait [14;0] received  11!
Sep 25 05:27:19 localhost kernel: DVB:was 0 wait [15;1] received  13!
Sep 25 05:27:20 localhost kernel: DVB:was 12 wait [11;13] received  0!
Sep 25 05:27:47 localhost kernel: DVB:was 14 wait [13;15] received  10!
Sep 25 05:27:48 localhost kernel: DVB:was 11 wait [10;12] received  7!
Sep 25 05:28:15 localhost kernel: DVB:was 7 wait [6;8] received  4!
Sep 25 05:28:15 localhost kernel: DVB:was 3 wait [2;4] received  8!
Sep 25 05:35:27 localhost kernel: DVB:was 5 wait [4;6] received  7!
Sep 25 05:39:17 localhost kernel: DVB:was 15 wait [14;0] received  3!
Sep 25 05:40:51 localhost kernel: DVB:was 15 wait [14;0] received  1!
Sep 25 05:40:52 localhost kernel: DVB:was 12 wait [11;13] received  6!
Sep 25 05:42:36 localhost kernel: Skip sinhro byte!
Sep 25 05:42:36 localhost last message repeated 1271 times
Sep 25 05:42:36 localhost kernel: DVB:was 0 wait [15;1] received  5!
Sep 25 05:42:36 localhost kernel: Skip sinhro byte!
Sep 25 05:42:36 localhost last message repeated 939 times
Sep 25 05:42:38 localhost kernel: DVB:was 9 wait [8;10] received  14!
Sep 25 05:42:38 localhost kernel: DVB:was 4 wait [3;5] received  13!
Sep 25 05:45:04 localhost kernel: DVB:was 4 wait [3;5] received  6!
Sep 25 05:45:04 localhost kernel: DVB:was 1 wait [0;2] received  3!
Sep 25 05:45:04 localhost kernel: DVB:was 13 wait [12;14] received  3!
Sep 25 05:45:04 localhost kernel: DVB:was 2 wait [1;3] received  4!
Sep 25 05:45:10 localhost kernel: DVB:was 4 wait [3;5] received  15!
Sep 25 05:45:26 localhost kernel: DVB:was 9 wait [8;10] received  13!
Sep 25 05:45:26 localhost kernel: DVB:was 13 wait [12;14] received  11!
Sep 25 05:45:26 localhost kernel: DVB:was 10 wait [9;11] received  12!
Sep 25 05:45:26 localhost kernel: DVB:was 9 wait [8;10] received  11!
Sep 25 05:45:26 localhost kernel: DVB:was 13 wait [12;14] received  15!
Sep 25 05:45:26 localhost kernel: DVB:was 14 wait [13;15] received  0!
Sep 25 05:45:26 localhost kernel: DVB:was 1 wait [0;2] received  7!
Sep 25 05:45:26 localhost kernel: DVB:was 15 wait [14;0] received  8!
Sep 25 05:45:26 localhost kernel: DVB:was 13 wait [12;14] received  15!
Sep 25 05:45:26 localhost kernel: DVB:was 15 wait [14;0] received  4!

And other parts of file look like this one. Strange that to much of Skip
sinhro byte messages look like read error bytes from tuner. So I decide
that problem in FEC recover system. I look inside of DST driver and fount
that this cards all time work in FEC auto mode, driver simply nothing do
with FEC mode value. Maybe problem is hire in FEC auto mode. Is present
some possibility to tell tuner use given FEC mode and not Auto. Also if
some body have some ideas where to find such error please tell.


Thanks!
Bendyak Evgen
-- 
Евгений Бендяк



More information about the linux-dvb mailing list