[linux-dvb] DEC3000-s
bander ajba
bander.ajba at gmail.com
Fri Dec 2 07:59:33 CET 2005
Apologies,
Now I know how what the command "diff" is for.
Attached are my patches.
-----Original Message-----
From: Johannes Stezenbach [mailto:js at linuxtv.org]
Sent: Thursday, December 01, 2005 6:21 PM
To: bander ajba
Cc: 'Peter Beutner'
Subject: Re: [linux-dvb] DEC3000-s
Hi,
your mail is too large for the linux-dvb list, it got dropped.
Plaese send patches (diff -up file.c.orig file.c),
not whole files.
Thanks,
Johannes
On Thu, Dec 01, 2005 at 05:24:01PM +0300, bander ajba wrote:
> Hello again,
>
> Sorry If I cannot provide patches due to my weak programming skills.
> However, I will post the 2 driver files and I will explain my findings
which
> hopefully gives you an idea on what's wrong.
>
> There are 5 things I found if you do something about them you will have a
> working dec3000:
>
> Finding 1: My last searches on the dec3000s driver on this forum pointed
> that the scanning for channels sometime works and some does not. The
reason
> for this is in ttusbdecfe.c:
>
> [ state->hi_band ]
>
> in function
>
> [static int ttusbdecfe_dvbs_set_frontend(...)] is always set to zero.
>
> Which sets the variable [band] to the constant [LOF_LO] causing the
dec3000
> to fail.
>
> I tried to sets the variable when the diseqc command is sent but it does
not
> work. So I set it to 1 because most of the channels I tuned to are in the
> high band anyway. I believe the error lies in passing the variable from
the
> dvb_demux -> ttusbdecfe.c
>
> So setting the [hi_band] correctly will cause the DEC3000 to tune okay.
> (critical)
>
>
> Finding 2: some applications fail (like mplayer, and mythtv) when Sending
> Burst tone to the DEC. Apparently the DEC does not care about the burst
tone
> (I think automatically detected) so I always return success.
>
> So ignoring the [Burst_tone] and returning success will case the
application
> to work correctly.(annoyance)
>
> Finding 3: adding the range for min_symbolrate, and max_symbolrate will
stop
> some applications to complain about symbolrate being out of range
> (Annoyance)
>
> Finding 4: this should concerns myth users, once you suite yourself with
the
> 3 above findings go to /mythtv-0.18.1/libs/libmythtv/siparser.cpp and
> recheck the filter value on ::ParseSDT (). Setting the filter to 0x4E
cause
> mythtv to tune successfully and automatically scan for channels. I'm not
> sure if I changed any other filters so I will post this file too.
>
> Please note: in siparser.cpp I added a functionality routine to grab EIT
> from space and insert them in the Database. It functions okay but there
many
> null entries in the mythconverg.program table. The reason for this is that
> xmltv does not fit my needs.(extra feature)
>
> Finding 5: I reached this finding just yesterday when I successfully was
> able to watch encrypted channels in Mythtv.
>
> After many many many many starring at the usb sniffer dumps between the
> dec3000 and Windows, I found out that there some commands need to be send
in
> the initialization time of the DEC which causes the CAM to initialize.
>
>
>
/**************************************************************************/
> static int ttusb_dec_set_interface(struct ttusb_dec *dec,
> enum ttusb_dec_interface interface)
> {
> int result = 0;
> u8 b[] = { 0x05 };
> u8 b0[] = {0x01 };
> u8 b1[]= { 0x00, 0x00, 0x00,0x01};
>
> if (interface != dec->interface) {
> switch (interface) {
> case TTUSB_DEC_INTERFACE_INITIAL:
> result = usb_set_interface(dec->udev, 0, 0);
> break;
> case TTUSB_DEC_INTERFACE_IN:
> result = ttusb_dec_send_command(dec, 0x80,
> sizeof(b),b, NULL, NULL);
> result = ttusb_dec_send_command(dec, 0xac, 0,NULL,
> NULL, NULL);
> result = ttusb_dec_send_command(dec, 0xa6,
> sizeof(b0),b0, NULL, NULL);
> result = ttusb_dec_send_command(dec, 0x81, 0,NULL,
> NULL, NULL);
>
/**************************************************************************/
>
> However, that's the easy part. Now every time you set the section filter
for
> the channel, you need to send the ServiceID or the Program Number of the
> channel to the DEC. until now I did not figure out the way to pass this
> value from the PAT parser at the application level to the driver level. So
> as an easy layback temporary solution, I added switch case to the
frequently
> used scrambled channels in the driver and boom it works.
>
> This is the code:
>
/**************************************************************************/
> static int ttusb_dec_start_sec_feed(struct dvb_demux_feed *dvbdmxfeed)
> {
> struct ttusb_dec *dec = dvbdmxfeed->demux->priv;
> u8 b0[] = { 0x00, 0x00, 0x00, 0x01,
> 0x00, 0x00, 0x00, 0x00,
> 0x00, 0x00, 0x00, 0x00,
> 0x00, 0x00, 0x00, 0x00,
> 0x00, 0xff, 0x00, 0x00,
> 0x00, 0x00, 0x00, 0x00,
> 0x00, 0x00, 0x00, 0x00,
> 0x00 };
> u16 pid;
> u16 sid;
> int flag = 0;
> u8 c[COMMAND_PACKET_SIZE];
> int c_length;
> int result;
> struct filter_info *finfo;
> unsigned long flags;
> u8 b1[]={ 0x00 , 0x00 };
>
> u8 b2[]={ 0x00, 0x00, 0x00, 0x01,
> 0x00, 0x00, 0x00, 0x00 };
> u8 x = 1;
>
> dprintk("%s\n", __FUNCTION__);
> pid = htons(dvbdmxfeed->pid);
> sid = 0;//htons(dvbdmxfeed->sid);
> memcpy(&b0[0], &pid, 2);
> memcpy(&b0[4], &x, 1);
> memcpy(&b0[5], &dvbdmxfeed->filter->filter.filter_value[0], 1);
>
> switch(dvbdmxfeed->pid)
> {
> case 101: sid =301; break;
> case 102: sid =302; break;
> case 103: sid =303; break;
> case 104: sid =304; break;
> case 270: sid =2307; break;
> case 271: sid =1013; break;
> case 272: sid =421; break;
> case 273: sid =422; break;
> case 274: sid =423; break;
> case 275: sid =721; break;
> case 276: sid =425; break;
> case 277: sid =426; break;
>
> default:
> sid = 0;
>
> }
> //dprintk("sid is %d\n",dvbdmxfeed->sid);
> sid = htons(sid);
> memcpy(&b1[0], &sid,2);
> if (dvbdmxfeed->pid > 18 && sid > 0)
> {
> dprintk("pid is %d\n",dvbdmxfeed->pid);
> result = ttusb_dec_send_command(dec, 0xa5, sizeof(b1), b1,
> &c_length,c);
> result = ttusb_dec_send_command(dec, 0x73, sizeof(b2), b2,
> &c_length,c);
> result = ttusb_dec_send_command(dec, 0xa5, sizeof(b1), b1,
> &c_length,c);
> result = ttusb_dec_send_command(dec, 0x73, sizeof(b2), b2,
> &c_length,c);
> result = ttusb_dec_send_command(dec, 0x73, sizeof(b2), b2,
> &c_length,c);
> }
>
/*************************************************************************/
>
> The reason for reptetion on the last part is just simulating what windows
is
> doing.
>
>
> I hope my post is thorough.
>
>
>
>
>
>
>
>
>
> -----Original Message-----
> From: Peter Beutner [mailto:p.beutner at gmx.net]
> Sent: Thursday, December 01, 2005 10:28 AM
> To: bander ajba
> Cc: linux-dvb at linuxtv.org
> Subject: Re: [linux-dvb] DEC3000-s
>
> bander ajba schrieb:
> > Hello All,
> >
> > This is my first post so I hope that I see active people with me.
> >
> > I have successfully used DEC3000-s with MYTHTV. I did few changes in the
> > ttusb_dec drvier and few changes in Mythtv code.
> >
> > Please if anybody is interested then I will explain everything in
details.
> > So please respond.
> >
> Given the fact that the ttusb_dec driver doesn't really work that well and
> especially
> regarding the DEC3000s I remember several reports that it didn't work at
> all, I think it
> would be nice if you post your changes and try to get them committed to
cvs.
>
> >
> >
> > Currently I'm trying to figure out how to work the DEC3000-S CI using
> IRDETO
> > system.
> >
> >
> >
> > --Bander
> >
> >
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > linux-dvb mailing list
> > linux-dvb at linuxtv.org
> > http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ttusb_dec.patch
Type: application/octet-stream
Size: 4363 bytes
Desc: not available
Url : http://www.linuxtv.org/pipermail/linux-dvb/attachments/20051202/b0c5610c/ttusb_dec-0001.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ttusbdecfe.patch
Type: application/octet-stream
Size: 2798 bytes
Desc: not available
Url : http://www.linuxtv.org/pipermail/linux-dvb/attachments/20051202/b0c5610c/ttusbdecfe-0001.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: siparser.patch
Type: application/octet-stream
Size: 2412 bytes
Desc: not available
Url : http://www.linuxtv.org/pipermail/linux-dvb/attachments/20051202/b0c5610c/siparser-0001.obj
More information about the linux-dvb
mailing list