Bttv devices (bt848, bt878)

From LinuxTVWiki
Jump to navigation Jump to search

Bttv devices are collectively those PCI cards that are based upon either a Bt848, Bt878 or Fusion 878A chip, and which are supported under Linux by the bttv and associated kernel driver modules. These devices can be capture-only cards - which means video is taken directly from a video source without the use of a tuner - or they can be TV cards which make use of RF tuner circuitry to receive television signals and the capture chip is there to decode the extracted video and audio.

Supported bttv devices

An up-to-date list of bttv devices supported by V4L-DVB drivers is found in the CARDLIST.bttv file in the master development repository.

Devices supported by the kernel running on your system are listed in your local <path_to_your_kernel_sources>/Documentation/video4linux/CARDLIST.bttv.

Getting an unlisted card to work

If your card is not listed, see the "How to add support for a device" article.

bttv devices can be challenging to get working with the bttv driver because there are a number of parameters that need to be configured, and these tend to differ for each device. (You can find the configuration settings for already supported devices in /linux/drivers/media/video/bt8xx/bttv-cards.c). Learning what these parameters need to be for your specific device may not be a trivial task. You could try loading the bttv module with the card= parameter set to each one of the cards listed in the CARDLIST.bttv just to see if you'll get lucky and find one that works for your card. Another method used to help discover the hardware settings required for a bttv device is running the device under a Windows OS with video software and the BtSpy ([1] [2]) monitoring.

Also of interest is the note on getting sound to work with a bttv device: http://git.linuxtv.org/media_tree.git/blob/HEAD:/Documentation/video4linux/bttv/Sound-FAQ

Make sure you post the findings of your investigations here and on the Linux-Media Mailing List so that bttv-cards.c can be updated with a new card= entry for your card.

Installation

Details on the installation of specific cards, grouped by vendor; please add your card here.

Note: Some bt878 capture cards have a single chip on board and four inputs on the card's PCI riser. In this case, don't expect multiple input devices. You would have multiple /dev/videoX if you actually had multiple videograbber devices - but you don't. You have one device (the 878A) with multiple inputs, of which only one at a time can be active. This input switching is done by means of the single /dev/videoX API.

General

This is a general howto here. It might work, but if there's a more specific one for your specific card in this wiki, you should use that one. If not, you should try this howto here, and if it works, add this section to your card's article in this wiki. Thanks.

Driver

The Bt878 chip is supported by new kernel versions -- good news! :)

This is what I've done (Debian Sarge testing, kernel version 2.6.16.9). It follows the standard installation of the bttv driver for DVB as it is included in new kernels.

Use lsmod to see if you have all these modules already installed and running.

 bttv
 bt878 
 dvb_core
 dst 
 dvb-bt8xx

If you can't find all of them, try to load them one by one with modprobe, e.g.

 modprobe bt878

Now try lsmod again.

If you can find all of them, you don't have to re-compile your kernel but can use the drivers/modules right away (see below). Otherwise:

Kernel re-compile

In kernel configuration (make menuconfig) make sure to have:

  • Under Device Drivers - Multimedia Devices - Video for Linux
 <M> BT 848
 [*] DVB for bt878

which is equivalent to these entries in the kernel .config file:

 CONFIG_VIDEO_BT848=m
 CONFIG_VIDEO_BT848_DVB=y


  • Under Device Drivers - Multimedia Devices - Digital Video Broadcasting Devices
 <M> DVB for Linux
 <M> DVB Core Support

And there under DVB Core Support - Customise DVB Frontends

 <M> ... something like DVB_BT8XX

which is equivalent to these entries in the kernel .config file:

 CONFIG_DVB=y
 CONFIG_DVB_CORE=m
 CONFIG_DVB_BT8XX=y

And maybe (not sure if necessary) still there under ATSC

 <M> Video BTCX

which is equivalent to this entry in the kernel .config file:

 CONFIG_VIDEO_BTCX = m


  • Under Device Drivers - Sound - ALSA - PCI devices
 <M> BT878

which is equivalent to this entry in the kernel .config file:

 CONFIG_SND=y etc. for sound in general 
 CONFIG_SND_BT87X=m

(I may have missed a couple of options. Please add them.) Save the config file, compile your new kernel, install it and restart.


Modules needed

Required modules and parameters:

 bttv
 bt878 
 dvb_core
 dst 
 dvb-bt8xx

Load them using modprobe.

You should now have some stuff in /dev/dvb/adapter0/

That's it. Depending on your card model (?), you probably don't need any firmware stuff.


Next steps

Testing your DVB device

AVerMedia

Hauppauge

  • Hauppauge WINTV DBX TV Stereo 125CHNL TV Tuner w/FM Stereo Radio PCI --
  • Hauppauge WINTV PAL-B/G 38104 REV.B208

[writeup in Linux Journal]

Hercules

According the Hercules support site (http://ts.hercules.com), there are various Smart TV cards. (I'm not sure they all use BT8xx chips.)

  • Hercules Smart TV
  • Hercules Smart TV Stereo
  • Hercules Smart TV 2
  • Hercules Smart TV 2 Stereo
  • Hercules Smart TV 3
  • Hercules Smart TV DVB-T
  • Hercules Smart TV Satellite
  • Hercules Smart TV On-Screen
  • Hercules Smart TV USB 2.0

Leadtek

  • Leadtek cards including Winfast 2000, Winfast TV2000 XP, Winfast TV2000 XP RM and Winfast TV2000 XP FM

Linux Media Labs

  • LMLBT4x multi-channel video surveillance boards are supported in kernels from 2.6.3

Pinnacle

Kodicom

Kodicom produces capture-only cards for use in Digital Video Recorder (DVR) applications. The Kodicom 4400R and Kodicom 8800R cards and their many clones are supported by the bttv driver from kernel version 2.6.13 onwards

Kozumi

  • KTV-01C ... For this card you only need to set bttv card=142, since this is a clone of the Sabrent card.

Provideo

  • PV981a ... Four BT878 chips on PCIe, 16 inputs.