[linux-dvb] [PATCH] TT Budget 1500 S

Perceval Anichini perceval.anichini at streamvision.fr
Tue Feb 21 10:42:18 CET 2006

Hello !

> Sorry, I'm still not sure whether it is correct. :-(
	No problems :)

> The question is (@all: Please correct me if I'm wrong):
> (1) Does Hauppauge enable line-length-compensation for all cards, or
	This is not a problem with Hauppauge cards, just with TT 1500S.

> (2) is this a work-around for a design flaw of this specific card type?
	To my mind, this is a work around for a design flaw of the
TechnoTrend Budget 1500 S. (I can't figure out why the LNB LLC flag do
mess with the tuning capabilities of the card !!!).

	Let me re-explain the problem I, (and a few people of the
list who mailed me) have.

	With the unmodified driver,

  - When in Horizontal mode : everything works properly.
  - When in Vertical mode : the signal "lock" is lost periodically.

I mean szap is sending me lines like :

... | LOCKED
... |
... | LOCKED
... | LOCKED
... |
....| LOCKED

And so on...

To perform more checks, here what we tried :
	MPTS player -> QPSK Modulator -> TT1500S card

The QPSK modulator indeed does not mind the LNB control voltage :)
And.... The same behavior occured ! No way to obtain a correct signal
when set in vertical mode...

After a few tries we set this "magical" LLC bit, and from then
everything worked properly... And TechnoTrend confirmed this LLC bit
was to be set...

> Ad (1):
> The DVB API has a special ioctl to compensate for voltage loss on the
> LNB line. It is not correct to enable it by default (or the API has to
> be changed).
	I _DO_ agree with that !!! But sadly, the card is not working when not

> If (2) holds true, we must not enable LLC for all cards with the LNBP21.
> It should only be done for the 1500 S.
	In fact I thought I did that :(((
I thought that PCI subsystem ID 0x1017 was the 1500 S... :/

> Obviously the card worked for the one who submitted the code.
	Well, maybe he tried only in horizontal mode ? Moreover he
didn't tried the CI part of it :)

	It seems to me that the 1500 product line of TT (1500 T and
1500 C) are not working so well also. I have the 3 cards, therefore,
I'll try to make theim work when I'll have more time...

What I know is that three people on the list here had the same problem
as me with this card, and that my patch seems to fix the problem. (but
maybe it breaks other cards ???) I'm not enough implied yet in the
driver to be sure about that :/

> Could you please measure the voltage at the LNBP input for a vertical
> and a horizontal transponder?
	Not easily... I don't have tools to do that at work... I'll
try to do that at home next week end, if you really need this

> Btw, are we talking about the card with sub-system id 0x1016 (Samsung
> tuner) or sub-system id 0x1017 (ALPS tuner)?
	We are talking about the 0x1017. My patch should only modify the
behavior for this card. If it don't, it means I made a mistake :/

> Imho the patch is way too complicated. A simple 	
> |	lnbp21_enable_high_lnb_voltage(budget->dvb_frontend, 1);
> after the lnbp21_init() call should do. Or did I miss something?
	Well, that's what I did in the first place :

case 0x1017:
if (lnbp21_init(budget)) {
	printk("%s: No LNBP21 found!\n", __FUNCTION__);
	goto error_out;
if (lnbp21_enable_high_lnb_voltage (budget->dvb_frontend, 1)) {
	printk("%s: Couldn't enable LNBP21 high voltage mode!\n",
	goto error_out;

But when I try to use that :

ambre:/home/corwin/work/sv/alcyone/kernel/v4l-dvb# modprobe budget
Segmentation fault
ambre:/home/corwin/work/sv/alcyone/kernel/v4l-dvb# dmesg
saa7146: register extension 'budget dvb'.
ACPI: PCI Interrupt 0000:03:0c.0[A] -> GSI 53 (level, low) -> IRQ 225
saa7146: found saa7146 @ mem f8976e00 (revision 1, irq 225)
DVB: registering new adapter (TT-Budget/WinTV-NOVA-S PCI (rev AL/alps
bsbe1 lnbp21 frontend)).
adapter has MAC addr = 00:d0:5c:04:70:3a
Unable to handle kernel NULL pointer dereference at virtual address
 printing eip:
*pde = 00000000
Oops: 0000 [#1]
Modules linked in: budget s5h1420 l64781 ves1820 budget_core saa7146
ttpci_eeprom stv0299 tda8083 ves1x93 dvb_core i2c_core nls_cp437 nvidia
CPU:    1
EIP:    0060:[<f8948596>]    Tainted: P      VLI
EFLAGS: 00010292   (2.6.15) 
EIP is at lnbp21_enable_high_lnb_voltage+0xc/0x9a [budget]
eax: 00000000   ebx: ea101000   ecx: 00000001   edx: 00000001
esi: 00000000   edi: f7e71d80   ebp: f894a900   esp: d81afdf4
ds: 007b   es: 007b   ss: 0068
Process modprobe (pid: 14690, threadinfo=d81ae000 task=e7619030)
Stack: ea101000 f894866a ea101088 d81afe08 00000001 00000008 00000001
       00000000 f8948ff2 f7455b04 00000001 00000001 ea101000 fffffff4
       00000000 f89490c6 ea101000 f7e71d80 f894a900 f894ac00 f894aa80
Call Trace:
 [<f894866a>] lnbp21_init+0x46/0x57 [budget]
 [<f8948ff2>] frontend_init+0x2c8/0x335 [budget]
 [<f89490c6>] budget_attach+0x67/0xc8 [budget]
 [<f8950a1f>] saa7146_init_one+0x558/0x69a [saa7146]
 [<c021ba6b>] __pci_device_probe+0x4a/0x55
 [<c021ba9f>] pci_device_probe+0x29/0x3f
 [<c027d0ae>] driver_probe_device+0x3d/0xa7
 [<c027d185>] __driver_attach+0x0/0x45
 [<c027d1c8>] __driver_attach+0x43/0x45
 [<c027c77d>] bus_for_each_dev+0x58/0x78
 [<c027d1f0>] driver_attach+0x26/0x2a
 [<c027d185>] __driver_attach+0x0/0x45
 [<c027cc0a>] bus_add_driver+0x6b/0xc8
 [<c021bcdf>] __pci_register_driver+0x96/0xba
 [<c011d0e4>] printk+0x1b/0x1f
 [<f8950d4f>] saa7146_register_extension+0x7a/0x7f [saa7146]
 [<f895d00f>] budget_init+0xf/0x13 [budget]
 [<c01386b6>] sys_init_module+0xce/0x22a
 [<c0102e85>] syscall_call+0x7/0xb
Code: 5f c3 0f b6 44 24 1b 24 f3 0c 04 88 44 24 1b eb c6 80 4c 24 1b 0c
eb bf 80 64 24 1b f3 eb b8 56 53 83 ec 1c 8b 44 24 28 8b 40 04 <8b> 50
20 66 c7 44 24 0c 08 00 66 c7 44 24 0e 01 00 66 c7 44 24 

Sob ! :(

There is one more thing to do with this TT 1500 S card : move the code
handling it in budget-ci -> it indeed has the CI part :)

Thanks for reading me so far !! :)


More information about the linux-dvb mailing list