[linux-dvb] Pinnacle 300i working

tim0m1a tim0m1a at gmx.de
Sat Sep 17 10:04:05 CEST 2005


Am Fri, 16 Sep 2005 10:23:28 -0400 schrieb Mike Krufky  
<mkrufky at linuxtv.org>:

> 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
>>
>
>

I had the same Problem as Ingo, as I am the autor of the gentoo-wiki-entry.

I worked over two weeks on getting my Pinnacle running on my system. Than  
I realized that Rainer who helped me a lot with my solution has been using  
the V4L version 0.2.13 whereas I was using the 0.2.12 verion of V4L.
The main problem in the 0.2.12-Version was that after some minutes the  
channel-lock is lost. So I tried the latest CVS (0.2.14). Now it was not  
possible to tune any channel anymore. The problem should be due to some  
changings in the mt352-module, as this is the tuner module used by the  
Pinnacle 300i.
As I describe in the gentoo-wiki-entry I am using the video4linux-20050627  
snapshot. This version wokes fine.This is the only information I can give  
at the moment. I will test other versions this afternoon and will go  
through the changings. I hope I will find out which changings have caused  
the problem.

Regards,

Tim ("neweb")





More information about the linux-dvb mailing list