[linux-dvb] Pinnacle 300i working

Mike Krufky mkrufky at linuxtv.org
Fri Sep 16 16:23:28 CEST 2005


Ingo Schmiegel wrote:

>Hi all,
>
>After some problems, I got the hybrid analog and dvb-t budget card
>working with a stock 2.6.13.1 kernel plus one patch with _older_
>video4linux drivers. Besides that kernel I'm using a fairly updated
>debian/testing system.
>
>Kudos go to user "neweb" on the german gentoo forum for the idea and the
>pointer to the older drivers. You can find it all described (in german)
>here:
> http://www.gentooforum.de/thread.php?threadid=6579
> http://de.gentoo-wiki.com/Pinnacle_300i
>
>Short summary in English:
>
>2.6.13.1 ships with video4linux 0.2.14. These drivers introduce a
>problem with the 300i card. Symptom is that the "scan" utility (debian
>package dvb-utils) can not tune to any frequency:
># scan /home/cfi/channels.conf -v
>[...]
>  
>
>>>>tune to:
>>>>        
>>>>
>198500000:INVERSION_AUTO:BANDWIDTH_7_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSI
>ON_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE
>  
>
>>>>tuning status == 0x00
>>>>        
>>>>
>[...]
>  
>
>>>>tuning status == 0x00
>>>>        
>>>>
>WARNING: >>> tuning failed!!!
>[...]
>
>To workaround
># cd /usr/src
># wget
>http://www.linuxtv.org/downloads/video4linux/video4linux-20050627.tar.gz
># tar xzvf video4linux-20050627.tar.gz
># cd video4linux
>
>In theory and with older kernels (~2.6.11 era, but not sure) you could
>now just proceed with
>
># make
># make install
># modprobe -r saa7134_dvb video_buf_dvb saa7134 videodev video_buf mt352
>dvb_core tda1004x i2c_nforce2 tuner tda9887 i2c_core v4l2_common v4l1_compat
># modprobe saa7134_dvb
>
>Now you would see in /var/log/messages:
>Sep 15 20:21:01 localhost kernel: saa7130/34: v4l2 driver version 0.2.13
>loaded
>instead of the 0.2.14 release coming with the kernel.
>
>Unfortunately the API changed a little, so the newer kernel headers are
>incompatible with the older v4l drivers. So the make step will yield
>compilation errors. But it's an easy change to remedy that (see patch
>below). Only three files need a small change each. Note that the change
>of Make.config will prevent CX88 based cards from working. If you have
>one of those in addition to the 300i, leave Make.config as it is and fix
>the remaining compilation errors yourself :-p
>
>Note that the "make install" will overwrite the installed dvb related
>modules in /lib/modules/<kernel-version>. If you later test a newer
>kernel, and the card can still not tune with that, rerun the "make
>install" step.
>
>Have fun!
>  Ingo
>  
>
What a sad story.....  This is a v4l issue, cc added.

I appreciate that you have gotten your card working, but this isn't 
really a solution to the problem.  In fact, seeing something like this 
makes me want to fix the problem the right way, but my hands are tied on 
this, as I do not know the cause of the problem, or exactly what patches 
you had to revert in order to fix it, nor do I have the hardware to test 
this on.

I can take a closer look at this over the weekend, but it would be a 
great service if you could actually go through the cvs and figure out 
exactly what patch breaks support for your card.  If you cannot do that, 
then if you could at least try to get the absolute very latest cvs where 
your card still works.... For example:

You can do cvs checkout -D {date}  to specify that cvs should checkout 
all cvs code where commits are no later than {date} ... If you can 
identify the FIRST date where cvs is broken for your card, that can help 
us to identify exactly which patch is the culprit here.

The RIGHT thing to do would be to use this information to apply a new 
patch to cvs that will restore full functionality of your board, without 
causing any other regressions.

>*** /usr/src/video4linux_20050627/msp3400.c     Thu Sep 15 20:16:33 2005
>--- /usr/src/video4linux_20050627/msp3400.c.orig        Thu Sep 15
>20:13:07 2005
>*************** static int msp34xx_sleep(struct msp3400c
>*** 755,761 ****
>                }
>        }
>        if (current->flags & PF_FREEZE)
>!               refrigerator(/*PF_FREEZE*/);
>        remove_wait_queue(&msp->wq, &wait);
>        return msp->restart;
>  }
>--- 755,761 ----
>                }
>        }
>        if (current->flags & PF_FREEZE)
>!               refrigerator(PF_FREEZE);
>        remove_wait_queue(&msp->wq, &wait);
>        return msp->restart;
>  }
>
>
>*** /usr/src/video4linux_20050627/video-buf-dvb.c       Thu Sep 15
>20:17:44 2005
>--- /usr/src/video4linux_20050627/video-buf-dvb.c.orig  Thu Sep 15
>20:17:12 2005
>*************** static int videobuf_dvb_thread(void *dat
>*** 63,69 ****
>                if (kthread_should_stop())
>                        break;
>                if (current->flags & PF_FREEZE)
>!                       refrigerator(/*PF_FREEZE*/);
>
>                /* feed buffer data to demux */
>                if (buf->state == STATE_DONE)
>--- 63,69 ----
>                if (kthread_should_stop())
>                        break;
>                if (current->flags & PF_FREEZE)
>!                       refrigerator(PF_FREEZE);
>
>                /* feed buffer data to demux */
>                if (buf->state == STATE_DONE)
>
>*** /usr/src/video4linux_20050627/Make.config   Thu Sep 15 20:19:08 2005
>--- /usr/src/video4linux_20050627/Make.config.orig      Thu Sep 15
>21:47:44 2005
>*************** CONFIG_VIDEO_SAA7134    := m
>*** 6,17 ****
>  CONFIG_VIDEO_IR               := m
>  CONFIG_VIDEO_TUNER    := m
>  CONFIG_VIDEO_TVAUDIO  := m
>! CONFIG_VIDEO_CX88     := n
>
>  # doesn't build on kernels older than 2.6.10
>  CONFIG_VIDEO_CX88_DVB := n
>  CONFIG_VIDEO_SAA7134_DVB := n
>  if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10))
>!  CONFIG_VIDEO_CX88_DVB        := n
>  if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10))
>   CONFIG_VIDEO_SAA7134_DVB := m
>--- 6,17 ----
>  CONFIG_VIDEO_IR               := m
>  CONFIG_VIDEO_TUNER    := m
>  CONFIG_VIDEO_TVAUDIO  := m
>! CONFIG_VIDEO_CX88     := m
>
>  # doesn't build on kernels older than 2.6.10
>  CONFIG_VIDEO_CX88_DVB := n
>  CONFIG_VIDEO_SAA7134_DVB := n
>  if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10))
>!  CONFIG_VIDEO_CX88_DVB        := m
>  if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10))
>   CONFIG_VIDEO_SAA7134_DVB := m
>
>
>
>
>_______________________________________________
>linux-dvb mailing list
>linux-dvb at linuxtv.org
>http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
>  
>


-- 
Michael Krufky





More information about the linux-dvb mailing list