Hauppauge WinTV Nova-T PCI

From MythTV

Jump to: navigation, search
Capture Card Information
Vendors Website http://www.hauppauge.co.uk/pages/products/data_novatpci.html
Support Status Good support at 0.17 and above, with digital radio from 0.20.
Driver http://linuxtv.org/ (included in kernel sources 2.6.12 and above). Linux kernel version 2.6.19 or higher required for the Nova-T 500 card
Sound Driver ?
Chipset Conexant CX chipset



Contents

Description

This card is for receiving DVB-T (terrestrial digital) transmissions.

This is a full-height PCI card. It has input for an RF connector, and output for passthrough (no output on newer cards). It also has a 2.5mm jack plug for the IR remote pickup included with some packages. It comes packed with or without the Hauppauge remote control unit. When powered (even if your motherboard is powered but not switched on) a bright red LED is illuminated on the card (no LED on newer cards).


Note: This card comes in two flavours. The author only has experience with the Conexant CX chipset sold with the newer models.

Nova-T Known Issues and Problems

  1. The passthrough adds significant interference to the signal when the computer is operating, enough to impair analogue picture quality severely, and cause the occasional stream glitch in some other DVB-T units.
  2. The support for this card is broken in kernels 2.6.10 and 2.6.11; it's been marked as such in the kernel config files. It is fixed in 2.6.12 and above.
  3. There is a bug in Ubuntu Feisty Fawn which means the Nova-T module is not automatically detected and loaded (https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/91186). The workaround is to add cx88_dvb to your /etc/modules file.
  4. Some drivers cause the database tables 'capturecard' and 'cardinput' to be wrongly filled in while installing the card. You have to check these tables if you experience problems tuning with these cards.

Associated Software

  • tzap : Channel changer program
  • scan : Tuner config scanner
  • mplayer or Xine: good for testing that the tuning is working

The best method to get the tzap and scan programs is to build them from the cvs at linuxtv.org (see the Dvb Apps wiki page for more info).

Installation Guide

NB: This text refers to the newer cards with the Conexant Chipset. If anyone has the detail for the older cards, feel free to put a page in for that too.

Driver Support

In order to use this card, you'll have to use kernel 2.6.12 and above. It also works for 2.6.9 but not 10 and 11. To check what version of the kernel you are running, type:

uname -a

If you do have an incompatible kernel I recommend updating your Linux distribution.

  • [skip if not applicable] Otherwise, your'll need to re-compile the kernel after patching it's source code. For Fedora you need to build the driver modules as part of a custom kernel build. See http://www.netherwood.me.uk/mythtv details how to setup the Nova-T cards with Fedora Core 4. This guide includes links to kernel build instructions, configuring MythTV with DVB and setting up the remote. For Fedora Core 3 see also http://www.helkit.com/cgi-bin/twiki/bin/view/Main/MythTVDVB-TAndConexantNotes. To patch an old kernel, You'll need the kernel sources (for example, gentoo-dev-sources-2.6.9-r9). Then apply the newest Video4Linux patches against them (see http://dl.bytesex.org/patches/2.6.9-rc4-1/All-2.6.9-rc4.diff.gz). The linked guide above details exactly which kernel options are required. It is recommended that you examine your nova-t card before you put it in your PC and note down all the chip model numbers on the card ; you'll need to enable support for all the ones you can find. The DVB support option is the part that's broken in the newer kernels.

As a reference, running:

lspci -v 

gives this information about my Nova-t card:

00:0e.0 Multimedia video controller: Conexant CX23880/1/2/3 PCI Video and Audio Decoder (rev 05)
        Subsystem: Hauppauge computer works Inc. Hauppauge Nova-T DVB-T
        Flags: bus master, medium devsel, latency 32, IRQ 18
        Memory at e6000000 (32-bit, non-prefetchable) [size=16M]
        Capabilities: <available only to root>

00:0e.2 Multimedia controller: Conexant CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (rev 05)
        Subsystem: Hauppauge computer works Inc.: Unknown device 9002
        Flags: bus master, medium devsel, latency 32, IRQ 18
        Memory at e5000000 (32-bit, non-prefetchable) [size=16M]
        Capabilities: <available only to root>

00:0e.4 Multimedia controller: Conexant CX23880/1/2/3 PCI Video and Audio Decoder [IR Port] (rev 05)
        Subsystem: Hauppauge computer works Inc. Nova-T DVB-T Model 909
        Flags: bus master, medium devsel, latency 32, IRQ 10
        Memory at e4000000 (32-bit, non-prefetchable) [size=16M]
        Capabilities: <available only to root>


The card shows up three times because it has three different addresses on the PCI bus. The purpose of these don't matter as the driver is responsible for selecting the correct address for different functions. For what it's worth, the primary address is at ec000000 on the PCI bus at 000:02:03.0. This is the normal portal for the driver to address the card. The other two addresses allow direct access to the Conexant chip(set).

Your PCI bus address may be (will probably be) different depending on how your motherboard manufacturer has assigned builtin devices to the PCI bus as well as which PCI slot you've insterted the card into.

Testing your Nova-t card

For testing your nova-t card before you fire up mythtv, you'll want the tools from http://linuxtv.org. The tools are called linuxtv-dvb-apps and provide programs that can scan for channels and tune into channels (amongst other things). Follow the installation instructions at the Dvb Apps wiki page and then return here.

Now use dvbscan to create a channel list. In the directory where scan is installed (e.g. ~/linuxtv-dvb-apps-1.1.0/util/scan/), run:

./scan dvb-t/your_transmitter_name > channels.conf

n.b. In the older dvb-apps, the scan program may be called dvbscan rather than just scan. Obviously change your_transmitter_name to your transmitter. For example, I live in Reading (UK) and I type:

./scan dvb-t/uk-Hannington > channels.conf

You can see what transmitters are available by looking in the util/scan/dvb-t directory (hopefully, one will work for you). If not check http://www.bbc.co.uk/reception/transmitters/tv/index.shtml.

Hopefully, if all has worked, you should now start to see some familiar names whizzing up the screen. If not. Check your aerial, then check it again. This is an extract of the scan output:

tf98@hantario:~/linuxtv-dvb-apps-1.1.0/util/scan$ ./scan dvb-t/uk-Hannington > channels.conf
scanning dvb-t/uk-Hannington
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
initial transponder 706000000 0 3 0 1 0 0 0
>>> tune to: 706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
0x0000 0x1043: pmt_pid 0x1043 BBC -- BBC ONE (???)
0x0000 0x1083: pmt_pid 0x1083 BBC -- BBC TWO (???)
0x0000 0x10ff: pmt_pid 0x10ff BBC -- BBC THREE (???)
...

If the scan worked, it will have spat out a channels.conf file. You can copy this file to various things that use the DVB channels. e.g. If you're using mplayer, copy channels.conf to ~/.mplayer (the mplayer config directory). Then you can view channels directly on mplayer:

mplayer dvb://

This will play the first channel in the channels.conf list, or you can select a channel of your choice:

mplayer "dvb://BBC TWO"

If you're using Xine, copy the channels.conf to ~/.xine (the xine config directory). Then start xine, bring up the control pannel, and click the DVB tab and Voila. You can use your mouse wheel to browse the channels list. After a while xine will extract the program guide from the DVB signal and augment the channel list with info about what's currently on. Cool h!

If you've got this far, you know your nova-t card works in Linux and can go to the next step... Installing mythTV. Good luck.

MythTV Support

MythTV support for DVB cards has improved tremendously as of build 0.17, and I wouldn't recommend using an earlier release.

Configure should detect your DVB card. If it did not, force detection with:

./configure --enable-dvb

To compile MythTV with DVB support do the following:

qmake mythtv.pro
mak

Then as root user type:

make install

If your system is based on atrpms.net, then it is already DVB-enabled.

After you set up your General and Hardware settings, you'll need to configure your "Video Source". See User Manual:Initial Installation.

Adjusting the antenna using MythTV and the Nova-T

Press F7 whilst watching a channel to get the signal stats.

Move the antenna back and forward and watch the signal %age.

The lower the signal %age, the better the reception (somewhat confusingly)- 30% and below seems to be the cut off for decent TV.

BE (bit error) should be 0, and the card should lock onto the signal when optimal alignment is achieved

The Nova-t Remote Control

  • Handset: This is the newer Hauppauge grey top / black underside unit. It takes a pair of AAA batteries and has 46 buttons.
  • Receiver: The receiver for this card is a small round IR diode unit that plugs into the tuner card via a small 2.5mm jack. The wire is about a metre long. It's a shame that there isn't an internal connector, which would allow you to mount the diode internally behind a case window.

Setup

The author is presently slowly managing to get this working (this is MythTV, so what's new!).

Newer kernels have support for this card as a keyboard. Button pushes received by the dongle are translated into keyboard events. Alas, the keymap the driver uses does not seem to agree with the sytem keymap ; many of the buttons produce kernel messages about unrecognised keycodes. Currently the keys that appear to work well are the arrow, OK and number keys. OK is mapped to the Enter key which is sensible enough.

N.B. - the following info should be unnecessary soon as patches for full support for this remote are arriving with kernel 2.6.17

Apparently, this remote is fairly new and the kernel support for it is not complete (as of 2.6.16). Some of the keycodes the remote produces are not included in the code. By banging the buttons and watching the kernel messages, I've noted which keycode goes with which button and added some lines to this array....

Please note, that I didn't agree with some of the key assignments that were already present in the kernel source, and others conflicted with remote buttons that made more sense with the code that was already taken. Where this is so, these buttons have been changed ; as a result, there is a distinct keycode that makes internal sense (to me, at least) for every button on the remote. But it's not compatible with configurations based on the original. So you might have to change a few lines in lircd.conf and lircrc files, but that's about as much pain as it will cause.

 /usr/src/linux/drivers/media/common/ir-common.

// I've added some new keycodes to this array
// !!** SOME OF THE EXISTING CODES HAVE CHANGED FROM THE DEFAULT KERNEL SOURCE **!!
IR_KEYTAB_TYPE ir_codes_hauppauge_new[IR_KEYTAB_SIZE] = {
	[ 0x00 ] = KEY_KP0,             // 0
	[ 0x01 ] = KEY_KP1,             // 1
	[ 0x02 ] = KEY_KP2,             // 2
	[ 0x03 ] = KEY_KP3,             // 3
	[ 0x04 ] = KEY_KP4,             // 4
	[ 0x05 ] = KEY_KP5,             // 5
	[ 0x06 ] = KEY_KP6,             // 6
	[ 0x07 ] = KEY_KP7,             // 7
	[ 0x08 ] = KEY_KP8,             // 8
	[ 0x09 ] = KEY_KP9,             // 9
	[ 0x0a ] = KEY_TEXT,      	// keypad asterisk as well
	[ 0x0b ] = KEY_RED,             // red button
	[ 0x0c ] = KEY_RADIO,           // radio
	[ 0x0d ] = KEY_MENU,            // menu
	[ 0x0e ] = KEY_SUBTITLE,	// also the # key
	[ 0x0f ] = KEY_MUTE,            // mute
	[ 0x10 ] = KEY_VOLUMEUP,        // volume +
	[ 0x11 ] = KEY_VOLUMEDOWN,      // volume -
	[ 0x12 ] = KEY_PREVIOUS,        // previous channel
	[ 0x14 ] = KEY_UP,              // up
	[ 0x15 ] = KEY_DOWN,		// down
	[ 0x16 ] = KEY_LEFT,		// left
	[ 0x17 ] = KEY_RIGHT,		// right
	[ 0x18 ] = KEY_VIDEO,		// Videos
	[ 0x19 ] = KEY_AUDIO,		// Music
	[ 0x1a ] = KEY_MHP,		// Pictures - presume this means "Multimedia Home Platform"- no "PICTURES" key in input.h
	[ 0x1b ] = KEY_EPG,		// Guide
	[ 0x1c ] = KEY_TV,		// TV
	[ 0x1e ] = KEY_NEXTSONG,        // skip >|
	[ 0x1f ] = KEY_EXIT,            // back/exit
	[ 0x20 ] = KEY_CHANNELUP,       // channel / program +
	[ 0x21 ] = KEY_CHANNELDOWN,     // channel / program -
	[ 0x22 ] = KEY_CHANNEL,         // source (old black remote)
	[ 0x24 ] = KEY_PREVIOUSSONG,    // replay |<
	[ 0x25 ] = KEY_ENTER,           // OK
	[ 0x26 ] = KEY_SLEEP,           // minimize (old black remote)
	[ 0x29 ] = KEY_BLUE,            // blue key
	[ 0x2e ] = KEY_GREEN,           // green button
	[ 0x30 ] = KEY_PAUSE,           // pause
	[ 0x32 ] = KEY_REWIND,          // backward <<
	[ 0x34 ] = KEY_FASTFORWARD,     // forward >>
	[ 0x35 ] = KEY_PLAY,            // play
	[ 0x36 ] = KEY_STOP,            // stop
	[ 0x37 ] = KEY_RECORD,          // recording
	[ 0x38 ] = KEY_YELLOW,          // yellow key
	[ 0x3b ] = KEY_SELECT,          // top right button
	[ 0x3c ] = KEY_ZOOM,            // full
	[ 0x3d ] = KEY_POWER,           // system power (green button)
};
EXPORT_SYMBOL(ir_codes_hauppauge_new);

This covers all the missing keycodes on my remote ; after a quick kernel rebuild and module install, I no longer see

cx88 IR (Hauppauge Nova-T DVB-T: unknown key: key=0x1a raw=0x379a down=1

and similar in my kernel logs when pushing buttons.

LIRC

If you compile evdev support into your kernel or load the evdev module, the remote is also piped through a device /dev/input/eventX, and not just as an extra keyboard.

You can tell which event device is connected by checking for it's major device number ; the remote uses the "experimental" 250. Which will likely change in future.

ls -an /dev/input/event*

crw-------   1 0   0 13, 64 Oct 24 12:46 event0
crw-------   1 0 250 13, 65 Mar 30 07:21 event1   # <<< it's this one
crw-------   1 0   0 13, 66 Oct 24 12:46 event2
crw-rw----   1 0   0 13, 67 Oct 24 12:46 event3

LIRC above 0.70 supports receiving events through the evdev system through its dev/input driver. You'll have to compile this support into LIRC. Gentoo users can add

LIRC_OPTS="--with-driver=devinput"

to their /etc/make.conf file. Those compiling manually can set this option using the setup.sh script that comes with the source distro, or edit their files manually.

You can record a config file with irrecord

irrecord -H dev/input -d /dev/input/eventN myconfig.conf

I'll post mine later

Once you set up lircd to run with the dev/input driver ...

lircd -H dev/input -d /dev/input/eventX

It is also recommended to add a Udev rule, which will symlink your new device.

KERNEL=="event[0-9]*", ATTRS{name}=="cx88 IR *", SYMLINK+="input/hauppauge"

... this should be as "easy" as setting up any other remote with LIRC.

Keyboard

If you fill in the gaps in the keymap, presumably you could leave out the LIRC support from MythTV and just map the keypresses that the remote uses to the features of Myth, using MythWeb or similar.

Relevant Pages

Personal tools