Mailing List archive

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

[linux-dvb] Siemens DVB-C won't display video



I had this Siemens DVB-C card working well under 0.8.2.

I've been upgrading the OS and driver with latest (up to this 
morning's) CVS versions for the past two months, and the Hauppauge 
DVB-S card works fine, but not the Siemens DVB-C.

The cable stream is clear and valid (I can plug the cable in a STB and 
see the video).

It seems like it's getting the stream, but just not 
decoding/displaying the video.  (I'm using a multisync TV that ought 
to display just about anything).

The PES Filter IOCTL should get the decoder and video output started, 
and it's very straight forward:

      ioctl(fd, DMX_STOP);
      pesFilterParams.pid     = Pid;
      pesFilterParams.input   = DMX_IN_FRONTEND;
      pesFilterParams.output  = DMX_OUT_DECODER;
      pesFilterParams.pesType = DMX_PES_VIDEO;
      pesFilterParams.flags   = DMX_IMMEDIATE_START;
      if (ioctl(fd, DMX_SET_PES_FILTER, &pesFilterParams) < 0)...

But, no video.

Driver debug messages show the frequency/symbol rate/QAM64/FEC is 
being set correctly:

...mon_complete(0): freq=602750000, sr=6900000, realfreq=602750000, 
step=0 , fdiff=0, fec=0


That's later followed by some AFC tuning offset:

...dvb_mon(0): mon_afc freq:602750000 curfreq:602750000 afc:-20214 
sync:e nest:0 vber:1048575


After waiting for the FE_COMPLETION_EV then setting the PIDs and 
unblanking the video, I print the different front end status values:


   if (fd_video >= 0 && fd_audio >= 0) {
      ioctl(fd_audio, AUDIO_SET_MUTE, false);
      ioctl(fd_video, VIDEO_SET_BLANK, false);
   }
  #define checkstatus(str, const, val) \
   if (ioctl(frontend_fd, const, &val) < 0) {\
     perror(str); \
   } else {\
     fprintf(stderr, str, val); \
   }

   checkstatus("Cumulative bit errors %d, ",
	      FE_READ_BER, uretdata);
   checkstatus("Signal to noise ratio: %d, ",
	      FE_READ_SNR, retdata);
   checkstatus("Signal strength: %d\n\n",   		
	      FE_READ_SIGNAL_STRENGTH, retdata);

The output usually looks like:

   Cumulative bit errors 10485750,
   Signal to noise ratio: 21250000,
   Signal strength: 69

The SNR is always constant (not a clue what the value means), the BER 
is fairly constant (sometimes the number dips down, then returns; I'm 
guessing this is totally bogus).  The signal strength bounces between 
0 and ~70.  It's usually 69, and the symbol rate is 6.9e6 -- probably 
just coincidence.

The driver frequently reloads the firmware.  This does display on the 
screen (a full screen multi-colored herring bone pattern followed by 
the Convergence copyright, which slides off the bottom of the screen). 
  The reload usually occurs when I haven't changed the PIDs for 
awhile, then happens right as I'm changing them.

Up until about two weeks ago, the latest CVS sync would allow me to 
fetch good SI data, but it was acting strangely: the amount of SI data 
I was getting would be a function of the previously set video/audio 
pids (getting SI data off PID 0 would be a function of freq/srate, but 
not other active PIDs)!  With a current CVS sync, I'm not getting any 
SI data back at all, from any PID.

The CVS sync from July 2nd, which I successfully use for the DVB-S 
card, panics when using the DVB-C card with a null pointer in the 
kernel while loading the dvb.o module while it's loading the firmware. 
  Setting "readfirm=0" on the module load avoids the panic, but still 
no video output.

Any ideas?

Thanks,

Chris




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


Home | Main Index | Thread Index