Btaudio kernel instructions

From LinuxTVWiki
Revision as of 20:28, 21 January 2012 by CityK (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Intro

People start bugging me about this with questions, looks like I should write up some documentation for this beast. That way I won't have to answer that much mail, I hope. Yes, I'm lazy...


You might have noticed that the bt878 grabber cards have actually _two_ PCI functions:

$ lspci
   ... 
  00:0a.0 Multimedia video controller: Brooktree Corporation Bt878 (rev 02)
  00:0a.1 Multimedia controller: Brooktree Corporation Bt878 (rev 02)
   ...

The first does video, and it is backward compatible to the bt848.
The second does audio. btaudio is a driver for this second function. It's a sound driver which can be used for recording sound (and _only_ recording, no playback). As most TV cards come with a short cable which can be plugged into your sound card's line-in you probably don't need this driver if all you want to do is just watching TV...

Driver status

Still somewhat experimental. The driver should work stable, i.e. it shouldn't crash your box. It might not work as expected, have bugs, not being fully OSS API compilant, ...

The latest versions are in the linux kernel; cf. How to submit patches.

The chip knows two different modes. btaudio registers two dsp devices, one for each mode. They can not be used at the same time.


Digital audio mode

The chip gives you 16 bit stereo sound. The sample rate depends on the external source which feeds the bt878 with digital sound via I2S interface. There is a insmod option (rate) to tell the driver which sample rate the hardware uses (32000 is the default).

One possible source for digital sound is the msp34xx audio processor chip which provides digital sound via I2S with 32 kHz sample rate. My Hauppauge board works this way.

The Osprey-200 reportedly gives you digital sound with 44100 Hz sample rate. It is also possible that you get no sound at all.


Analog mode (A/D)

You can tell the driver to use this mode with the insmod option analog=1. The chip has three analog inputs. Consequently you'll get a mixer device to control these.

The analog mode supports mono only. Both 8 + 16 bit. Both are _signed_ int, which is uncommon for the 8 bit case. Sample rate range is 119 kHz to 448 kHz. Yes, the number of digits is correct. The driver supports downsampling by powers of two, so you can ask for more usual sample rates like 44 kHz too.

With my Hauppauge I get noisy sound on the second input (mapped to line2 by the mixer device). Others get a usable signal on line1.

Some examples

  • read audio data from btaudio (dsp2), send to es1730 (dsp,dsp1):
 $ sox -w -r 32000 -t ossdsp /dev/dsp2 -t ossdsp /dev/dsp
  • read audio data from btaudio, send to esound daemon (which might be running on another host):
 $ sox -c 2 -w -r 32000 -t ossdsp /dev/dsp2 -t sw - | esdcat -r 32000
 $ sox -c 1 -w -r 32000 -t ossdsp /dev/dsp2 -t sw - | esdcat -m -r 32000


Have fun,

Gerd

-- Gerd Knorr <kraxel@bytesex.org>