ADS Tech InstantTV Deluxe PCI-MCE (Whitebox "MCE-306") in Linux

The card is marked "PTV-306" on the label on the back, but looks like the label used to say "PTV-305" but the 5 was changed into a 6.
I bought this ADS Tech InstantTV Deluxe PCI-MCE "For Windows XP/XP Media Center Edition/Vista" from Micro Center as an impulse buy. Bad move I was thinking, I wanted to get rid of my old unknown BT878 card whose tuner had issues in Linux. As far as I could tell, it's a Askey Skyeye 878TV Rev 3E, with a PAL tuner - somewhat unuseable in North America as all signals are NTSC (the card works best with Linux card type 0x8d, tuner 0x5).

At least this card can still be used as an NTSC video capture - the bt878 will happily decode NTSC signals, just cannot use the tuner to decode NTSC.

But anyway, when I stuck this card in and booted Linux, I tried the cx8800 driver. Card was detected...somewhat. It was an unknown card to the driver but did detect the Connexant CX23880 chip on it.

However that's as far as it got(!)

Uhoh! Maybe MCE really meant Windows XP Media Center Edition :-(

So I started hacking away and see if I could force a particular driver to work with yet another troublesome expansion card. For some reason I always get expansion cards that don't work.
This board uses a CX23880-19 broadcast decoder, CX23416-12 MPEG encoder, and TDA8275 tuner. It seemed to match "ADS Tech Instant TV DVB-T PCI" card 29 in the Linux supported driver list. And it looked like tuner 54 should match the tuner. So I tried

ouka:~# modprobe cx88xx card=29 tuner=54
ouka:~# modprobe cx8800

and crossed my fingers. Oops, no xawtv, quickly emerged it.

uhoh! NO TV! Composite and S-video appeared on the inputs list but no TV or tuner!

Maybe this really IS specially designed for Windows Media Center :-(

However I decided to hack the sourcecode to cx88-cards.c to see what it could do:

        [CX88_BOARD_ADSTECH_DVB_T_PCI] = {
                .name           = "ADS Tech Instant TV DVB-T PCI",
                .tuner_type     = TUNER_PHILIPS_TDA8290,
                .radio_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .input          = {{
                        .type   = CX88_VMUX_TELEVISION,
                        .vmux   = 0,
                        .gpio0  = 0x0700,
                        .gpio2  = 0x0101,
                },{
                        .type   = CX88_VMUX_COMPOSITE1,
                        .vmux   = 1,
                        .gpio0  = 0x0700,
                        .gpio2  = 0x0101,
                },{
                        .type   = CX88_VMUX_SVIDEO,
                        .vmux   = 2,
                        .gpio0  = 0x0700,
                        .gpio2  = 0x0101,
                }},
                .dvb            = 1,
        },
I rebuilt cx8800.ko and cx88xx.ko and crossed my fingers. ouka:~# modprobe cx88xx card=29 was still necessary till I figure out how to write a correct entry for the PCI identity.

Black screen

Oh, the horrors! At least the TV input showed up, I selected it ... still nothing. Then I noticed I had my frequencies list set to US-BROADCAST...set it to US-CABLE... and there we have it, a InstantTV Deluxe PCI-MCE Whitebox running in Linux. Works fine with mencoder (modprobe cx88_alsa too, and set it to record off of that). Haven't figured out how to mplayer it with sound though. Seems easy enough, since alsa has it as hw:1 (hw.1) it *should* be able to copy through from that to hw:0 which is the usual sound hardware.

Beware that for some reason the cx88_alsa driver puts the left channel at 100% and the right channel at 0%, will need to fix this to make them the same.

Todo:

  • FM Radio hardware
  • Is this a cx88-blackbird and can we use its onboard MPEG encoding? Would be nice if we could use something less than a P4 to encode MPEG.