code:
RAID arrays
===========

Boot time assembly of RAID arrays
---------------------------------

Tools that manage md devices can be found at
   https://www.kernel.org/pub/linux/utils/raid/

You can boot with your md device with the following kernel command
lines:

for old raid arrays without persistent superblocks::

  md=<md device no.>,<raid level>,<chunk size factor>,<fault level>,dev0,dev1,...,devn

for raid arrays with persistent superblocks::

  md=<md device no.>,dev0,dev1,...,devn

or, to assemble a partitionable array::

  md=d<md device no.>,dev0,dev1,...,devn

``md device no.``
+++++++++++++++++

The number of the md device

================= =========
``md device no.`` device
================= =========
              0		md0
	      1		md1
	      2		md2
	      3		md3
	      4		md4
================= =========

``raid level``
++++++++++++++

level of the RAID array

=============== =============
``raid level``  level
=============== =============
-1		linear mode
0		striped mode
=============== =============

other modes are only supported with persistent super blocks

``chunk size factor``
+++++++++++++++++++++

(raid-0 and raid-1 only)

Set  the chunk size as 4k << n.

``fault level``
+++++++++++++++

Totally ignored

``dev0`` to ``devn``
++++++++++++++++++++

e.g. ``/dev/hda1``, ``/dev/hdc1``, ``/dev/sda1``, ``/dev/sdb1``

A possible loadlin line (Harald Hoyer <HarryH@Royal.Net>)  looks like this::

	e:\loadlin\loadlin e:\zimage root=/dev/md0 md=0,0,4,0,/dev/hdb2,/dev/hdc3 ro

Boot time autodetection of RAID arrays
--------------------------------------

When md is compiled into the kernel (not as module), partitions of
type 0xfd are scanned and automatically assembled into RAID arrays.
This autodetection may be suppressed with the kernel parameter
``raid=noautodetect``.  As of kernel 2.6.9, only drives with a type 0
superblock can be autodetected and run at boot time.

The kernel parameter ``raid=partitionable`` (or ``raid=part``) means
that all auto-detected arrays are assembled as partitionable.

Boot time assembly of degraded/dirty arrays
-------------------------------------------

If a raid5 or raid6 array is both dirty and degraded, it could have
undetectable data corruption.  This is because the fact that it is
``dirty`` means that the parity cannot be trusted, and the fact that it
is degraded means that some datablocks are missing and cannot reliably
be reconstructed (due to no parity).

For this reason, md will normally refuse to start such an array.  This
requires the sysadmin to take action to explicitly start the array
despite possible corruption.  This is normally done with::

   mdadm --assemble --force ....

This option is not really available if the array has the root
filesystem on it.  In order to support this booting from such an
array, md supports a module parameter ``start_dirty_degraded`` which,
when set to 1, bypassed the checks and will allows dirty degraded
arrays to be started.

So, to boot with a root filesystem of a dirty degraded raid 5 or 6, use::

   md-mod.start_dirty_degraded=1

Superblock formats
------------------

The md driver can support a variety of different superblock formats.
Currently, it supports superblock formats ``0.90.0`` and the ``md-1`` format
introduced in the 2.5 development series.

The kernel will autodetect which format superblock is being used.

Superblock format ``0`` is treated differently to others for legacy
reasons - it is the original superblock format.

General Rules - apply for all superblock formats
------------------------------------------------

An array is ``created`` by writing appropriate superblocks to all
devices.

It is ``assembled`` by associating each of these devices with an
particular md virtual device.  Once it is completely assembled, it can
be accessed.

An array should be created by a user-space tool.  This will write
superblocks to all devices.  It will usually mark the array as
``unclean``, or with some devices missing so that the kernel md driver
can create appropriate redundancy (copying in raid 1, parity
calculation in raid 4/5).

When an array is assembled, it is first initialized with the
SET_ARRAY_INFO ioctl.  This contains, in particular, a major and minor
version number.  The major version number selects which superblock
format is to be used.  The minor number might be used to tune handling
of the format, such as suggesting where on each device to look for the
superblock.

Then each device is added using the ADD_NEW_DISK ioctl.  This
provides, in particular, a major and minor number identifying the
device to add.

The array is started with the RUN_ARRAY ioctl.

Once started, new devices can be added.  They should have an
appropriate superblock written to them, and then be passed in with
ADD_NEW_DISK.

Devices that have failed or are not yet active can be detached from an
array using HOT_REMOVE_DISK.

Specific Rules that apply to format-0 super block arrays, and arrays with no superblock (non-persistent)
--------------------------------------------------------------------------------------------------------

An array can be ``created`` by describing the array (level, chunksize
etc) in a SET_ARRAY_INFO ioctl.  This must have ``major_version==0`` and
``raid_disks != 0``.

Then uninitialized devices can be added with ADD_NEW_DISK.  The
structure passed to ADD_NEW_DISK must specify the state of the device
and its role in the array.

Once started with RUN_ARRAY, uninitialized spares can be added with
HOT_ADD_DISK.

MD devices in sysfs
-------------------

md devices appear in sysfs (``/sys``) as regular block devices,
e.g.::

   /sys/block/md0

Each ``md`` device will contain a subdirectory called ``md`` which
contains further md-specific information about the device.

All md devices contain:

  level
     a text file indicating the ``raid level``. e.g. raid0, raid1,
     raid5, linear, multipath, faulty.
     If no raid level has been set yet (array is still being
     assembled), the value will reflect whatever has been written
     to it, which may be a name like the above, or may be a number
     such as ``0``, ``5``, etc.

  raid_disks
     a text file with a simple number indicating the number of devices
     in a fully functional array.  If this is not yet known, the file
     will be empty.  If an array is being resized this will contain
     the new number of devices.
     Some raid levels allow this value to be set while the array is
     active.  This will reconfigure the array.   Otherwise it can only
     be set while assembling an array.
     A change to this attribute will not be permitted if it would
     reduce the size of the array.  To reduce the number of drives
     in an e.g. raid5, the array size must first be reduced by
     setting the ``array_size`` attribute.

  chunk_size
     This is the size in bytes for ``chunks`` and is only relevant to
     raid levels that involve striping (0,4,5,6,10). The address space
     of the array is conceptually divided into chunks and consecutive
     chunks are striped onto neighbouring devices.
     The size should be at least PAGE_SIZE (4k) and should be a power
     of 2.  This can only be set while assembling an array

  layout
     The ``layout`` for the array for the particular level.  This is
     simply a number that is interpreted differently by different
     levels.  It can be written while assembling an array.

  array_size
     This can be used to artificially constrain the available space in
     the array to be less than is actually available on the combined
     devices.  Writing a number (in Kilobytes) which is less than
     the available size will set the size.  Any reconfiguration of the
     array (e.g. adding devices) will not cause the size to change.
     Writing the word ``default`` will cause the effective size of the
     array to be whatever size is actually available based on
     ``level``, ``chunk_size`` and ``component_size``.

     This can be used to reduce the size of the array before reducing
     the number of devices in a raid4/5/6, or to support external
     metadata formats which mandate such clipping.

  reshape_position
     This is either ``none`` or a sector number within the devices of
     the array where ``reshape`` is up to.  If this is set, the three
     attributes mentioned above (raid_disks, chunk_size, layout) can
     potentially have 2 values, an old and a new value.  If these
     values differ, reading the attribute returns::

        new (old)

     and writing will effect the ``new`` value, leaving the ``old``
     unchanged.

  component_size
     For arrays with data redundancy (i.e. not raid0, linear, faulty,
     multipath), all components must be the same size - or at least
     there must a size that they all provide space for.  This is a key
     part or the geometry of the array.  It is measured in sectors
     and can be read from here.  Writing to this value may resize
     the array if the personality supports it (raid1, raid5, raid6),
     and if the component drives are large enough.

  metadata_version
     This indicates the format that is being used to record metadata
     about the array.  It can be 0.90 (traditional format), 1.0, 1.1,
     1.2 (newer format in varying locations) or ``none`` indicating that
     the kernel isn't managing metadata at all.
     Alternately it can be ``external:`` followed by a string which
     is set by user-space.  This indicates that metadata is managed
     by a user-space program.  Any device failure or other event that
     requires a metadata update will cause array activity to be
     suspended until the event is acknowledged.

  resync_start
     The point at which resync should start.  If no resync is needed,
     this will be a very large number (or ``none`` since 2.6.30-rc1).  At
     array creation it will default to 0, though starting the array as
     ``clean`` will set it much larger.

  new_dev
     This file can be written but not read.  The value written should
     be a block device number as major:minor.  e.g. 8:0
     This will cause that device to be attached to the array, if it is
     available.  It will then appear at md/dev-XXX (depending on the
     name of the device) and further configuration is then possible.

  safe_mode_delay
     When an md array has seen no write requests for a certain period
     of time, it will be marked as ``clean``.  When another write
     request arrives, the array is marked as ``dirty`` before the write
     commences.  This is known as ``safe_mode``.
     The ``certain period`` is controlled by this file which stores the
     period as a number of seconds.  The default is 200msec (0.200).
     Writing a value of 0 disables safemode.

  array_state
     This file contains a single word which describes the current
     state of the array.  In many cases, the state can be set by
     writing the word for the desired state, however some states
     cannot be explicitly set, and some transitions are not allowed.

     Select/poll works on this file.  All changes except between
     Active_idle and active (which can be frequent and are not
     very interesting) are notified.  active->active_idle is
     reported if the metadata is externally managed.

     clear
         No devices, no size, no level

         Writing is equivalent to STOP_ARRAY ioctl

     inactive
         May have some settings, but array is not active
         all IO results in error

         When written, doesn't tear down array, but just stops it

     suspended (not supported yet)
         All IO requests will block. The array can be reconfigured.

         Writing this, if accepted, will block until array is quiessent

     readonly
         no resync can happen.  no superblocks get written.

         Write requests fail

     read-auto
         like readonly, but behaves like ``clean`` on a write request.

     clean
         no pending writes, but otherwise active.

         When written to inactive array, starts without resync

         If a write request arrives then
         if metadata is known, mark ``dirty`` and switch to ``active``.
         if not known, block and switch to write-pending

         If written to an active array that has pending writes, then fails.
     active
         fully active: IO and resync can be happening.
         When written to inactive array, starts with resync

     write-pending
         clean, but writes are blocked waiting for ``active`` to be written.

     active-idle
         like active, but no writes have been seen for a while (safe_mode_delay).

  bitmap/location
     This indicates where the write-intent bitmap for the array is
     stored.

     It can be one of ``none``, ``file`` or ``[+-]N``.
     ``file`` may later be extended to ``file:/file/name``
     ``[+-]N`` means that many sectors from the start of the metadata.

     This is replicated on all devices.  For arrays with externally
     managed metadata, the offset is from the beginning of the
     device.

  bitmap/chunksize
     The size, in bytes, of the chunk which will be represented by a
     single bit.  For RAID456, it is a portion of an individual
     device. For RAID10, it is a portion of the array.  For RAID1, it
     is both (they come to the same thing).

  bitmap/time_base
     The time, in seconds, between looking for bits in the bitmap to
     be cleared. In the current implementation, a bit will be cleared
     between 2 and 3 times ``time_base`` after all the covered blocks
     are known to be in-sync.

  bitmap/backlog
     When write-mostly devices are active in a RAID1, write requests
     to those devices proceed in the background - the filesystem (or
     other user of the device) does not have to wait for them.
     ``backlog`` sets a limit on the number of concurrent background
     writes.  If there are more than this, new writes will by
     synchronous.

  bitmap/metadata
     This can be either ``internal`` or ``external``.

     ``internal``
       is the default and means the metadata for the bitmap
       is stored in the first 256 bytes of the allocated space and is
       managed by the md module.

     ``external``
       means that bitmap metadata is managed externally to
       the kernel (i.e. by some userspace program)

  bitmap/can_clear
     This is either ``true`` or ``false``.  If ``true``, then bits in the
     bitmap will be cleared when the corresponding blocks are thought
     to be in-sync.  If ``false``, bits will never be cleared.
     This is automatically set to ``false`` if a write happens on a
     degraded array, or if the array becomes degraded during a write.
     When metadata is managed externally, it should be set to true
     once the array becomes non-degraded, and this fact has been
     recorded in the metadata.

  consistency_policy
     This indicates how the array maintains consistency in case of unexpected
     shutdown. It can be:

     none
       Array has no redundancy information, e.g. raid0, linear.

     resync
       Full resync is performed and all redundancy is regenerated when the
       array is started after unclean shutdown.

     bitmap
       Resync assisted by a write-intent bitmap.

     journal
       For raid4/5/6, journal device is used to log transactions and replay
       after unclean shutdown.

     ppl
       For raid5 only, Partial Parity Log is used to close the write hole and
       eliminate resync.

     The accepted values when writing to this file are ``ppl`` and ``resync``,
     used to enable and disable PPL.

  uuid
     This indicates the UUID of the array in the following format:
     xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

As component devices are added to an md array, they appear in the ``md``
directory as new directories named::

      dev-XXX

where ``XXX`` is a name that the kernel knows for the device, e.g. hdb1.
Each directory contains:

      block
        a symlink to the block device in /sys/block, e.g.::

	     /sys/block/md0/md/dev-hdb1/block -> ../../../../block/hdb/hdb1

      super
        A file containing an image of the superblock read from, or
        written to, that device.

      state
	A file recording the current state of the device in the array
	which can be a comma separated list of:

	      faulty
			device has been kicked from active use due to
			a detected fault, or it has unacknowledged bad
			blocks

	      in_sync
			device is a fully in-sync member of the array

	      writemostly
			device will only be subject to read
			requests if there are no other options.

			This applies only to raid1 arrays.

	      blocked
			device has failed, and the failure hasn't been
			acknowledged yet by the metadata handler.

			Writes that would write to this device if
			it were not faulty are blocked.

	      spare
			device is working, but not a full member.

			This includes spares that are in the process
			of being recovered to

	      write_error
			device has ever seen a write error.

	      want_replacement
			device is (mostly) working but probably
			should be replaced, either due to errors or
			due to user request.

	      replacement
			device is a replacement for another active
			device with same raid_disk.

	This list may grow in future.

	This can be written to.

	Writing ``faulty``  simulates a failure on the device.

	Writing ``remove`` removes the device from the array.

	Writing ``writemostly`` sets the writemostly flag.

	Writing ``-writemostly`` clears the writemostly flag.

	Writing ``blocked`` sets the ``blocked`` flag.

	Writing ``-blocked`` clears the ``blocked`` flags and allows writes
	to complete and possibly simulates an error.

	Writing ``in_sync`` sets the in_sync flag.

	Writing ``write_error`` sets writeerrorseen flag.

	Writing ``-write_error`` clears writeerrorseen flag.

	Writing ``want_replacement`` is allowed at any time except to a
	replacement device or a spare.  It sets the flag.

	Writing ``-want_replacement`` is allowed at any time.  It clears
	the flag.

	Writing ``replacement`` or ``-replacement`` is only allowed before
	starting the array.  It sets or clears the flag.

	This file responds to select/poll. Any change to ``faulty``
	or ``blocked`` causes an event.

      errors
	An approximate count of read errors that have been detected on
	this device but have not caused the device to be evicted from
	the array (either because they were corrected or because they
	happened while the array was read-only).  When using version-1
	metadata, this value persists across restarts of the array.

	This value can be written while assembling an array thus
	providing an ongoing count for arrays with metadata managed by
	userspace.

      slot
        This gives the role that the device has in the array.  It will
	either be ``none`` if the device is not active in the array
        (i.e. is a spare or has failed) or an integer less than the
	``raid_disks`` number for the array indicating which position
	it currently fills.  This can only be set while assembling an
	array.  A device for which this is set is assumed to be working.

      offset
        This gives the location in the device (in sectors from the
        start) where data from the array will be stored.  Any part of
        the device before this offset is not touched, unless it is
        used for storing metadata (Formats 1.1 and 1.2).

      size
        The amount of the device, after the offset, that can be used
        for storage of data.  This will normally be the same as the
	component_size.  This can be written while assembling an
        array.  If a value less than the current component_size is
        written, it will be rejected.

      recovery_start
        When the device is not ``in_sync``, this records the number of
	sectors from the start of the device which are known to be
	correct.  This is normally zero, but during a recovery
	operation it will steadily increase, and if the recovery is
	interrupted, restoring this value can cause recovery to
	avoid repeating the earlier blocks.  With v1.x metadata, this
	value is saved and restored automatically.

	This can be set whenever the device is not an active member of
	the array, either before the array is activated, or before
	the ``slot`` is set.

	Setting this to ``none`` is equivalent to setting ``in_sync``.
	Setting to any other value also clears the ``in_sync`` flag.

      bad_blocks
	This gives the list of all known bad blocks in the form of
	start address and length (in sectors respectively). If output
	is too big to fit in a page, it will be truncated. Writing
	``sector length`` to this file adds new acknowledged (i.e.
	recorded to disk safely) bad blocks.

      unacknowledged_bad_blocks
	This gives the list of known-but-not-yet-saved-to-disk bad
	blocks in the same form of ``bad_blocks``. If output is too big
	to fit in a page, it will be truncated. Writing to this file
	adds bad blocks without acknowledging them. This is largely
	for testing.

      ppl_sector, ppl_size
        Location and size (in sectors) of the space used for Partial Parity Log
        on this device.

An active md device will also contain an entry for each active device
in the array.  These are named::

    rdNN

where ``NN`` is the position in the array, starting from 0.
So for a 3 drive array there will be rd0, rd1, rd2.
These are symbolic links to the appropriate ``dev-XXX`` entry.
Thus, for example::

       cat /sys/block/md*/md/rd*/state

will show ``in_sync`` on every line.

Active md devices for levels that support data redundancy (1,4,5,6,10)
also have

   sync_action
     a text file that can be used to monitor and control the rebuild
     process.  It contains one word which can be one of:

       resync
		redundancy is being recalculated after unclean
                shutdown or creation

       recover
		a hot spare is being built to replace a
		failed/missing device

       idle
		nothing is happening
       check
		A full check of redundancy was requested and is
                happening.  This reads all blocks and checks
                them. A repair may also happen for some raid
                levels.

       repair
		A full check and repair is happening.  This is
		similar to ``resync``, but was requested by the
                user, and the write-intent bitmap is NOT used to
		optimise the process.

      This file is writable, and each of the strings that could be
      read are meaningful for writing.

	``idle`` will stop an active resync/recovery etc.  There is no
	guarantee that another resync/recovery may not be automatically
	started again, though some event will be needed to trigger
	this.

	``resync`` or ``recovery`` can be used to restart the
        corresponding operation if it was stopped with ``idle``.

	``check`` and ``repair`` will start the appropriate process
	providing the current state is ``idle``.

      This file responds to select/poll.  Any important change in the value
      triggers a poll event.  Sometimes the value will briefly be
      ``recover`` if a recovery seems to be needed, but cannot be
      achieved. In that case, the transition to ``recover`` isn't
      notified, but the transition away is.

   degraded
      This contains a count of the number of devices by which the
      arrays is degraded.  So an optimal array will show ``0``.  A
      single failed/missing drive will show ``1``, etc.

      This file responds to select/poll, any increase or decrease
      in the count of missing devices will trigger an event.

   mismatch_count
      When performing ``check`` and ``repair``, and possibly when
      performing ``resync``, md will count the number of errors that are
      found.  The count in ``mismatch_cnt`` is the number of sectors
      that were re-written, or (for ``check``) would have been
      re-written.  As most raid levels work in units of pages rather
      than sectors, this may be larger than the number of actual errors
      by a factor of the number of sectors in a page.

   bitmap_set_bits
      If the array has a write-intent bitmap, then writing to this
      attribute can set bits in the bitmap, indicating that a resync
      would need to check the corresponding blocks. Either individual
      numbers or start-end pairs can be written.  Multiple numbers
      can be separated by a space.

      Note that the numbers are ``bit`` numbers, not ``block`` numbers.
      They should be scaled by the bitmap_chunksize.

   sync_speed_min, sync_speed_max
     This are similar to ``/proc/sys/dev/raid/speed_limit_{min,max}``
     however they only apply to the particular array.

     If no value has been written to these, or if the word ``system``
     is written, then the system-wide value is used.  If a value,
     in kibibytes-per-second is written, then it is used.

     When the files are read, they show the currently active value
     followed by ``(local)`` or ``(system)`` depending on whether it is
     a locally set or system-wide value.

   sync_completed
     This shows the number of sectors that have been completed of
     whatever the current sync_action is, followed by the number of
     sectors in total that could need to be processed.  The two
     numbers are separated by a ``/``  thus effectively showing one
     value, a fraction of the process that is complete.

     A ``select`` on this attribute will return when resync completes,
     when it reaches the current sync_max (below) and possibly at
     other times.

   sync_speed
     This shows the current actual speed, in K/sec, of the current
     sync_action.  It is averaged over the last 30 seconds.

   suspend_lo, suspend_hi
     The two values, given as numbers of sectors, indicate a range
     within the array where IO will be blocked.  This is currently
     only supported for raid4/5/6.

   sync_min, sync_max
     The two values, given as numbers of sectors, indicate a range
     within the array where ``check``/``repair`` will operate. Must be
     a multiple of chunk_size. When it reaches ``sync_max`` it will
     pause, rather than complete.
     You can use ``select`` or ``poll`` on ``sync_completed`` to wait for
     that number to reach sync_max.  Then you can either increase
     ``sync_max``, or can write ``idle`` to ``sync_action``.

     The value of ``max`` for ``sync_max`` effectively disables the limit.
     When a resync is active, the value can only ever be increased,
     never decreased.
     The value of ``0`` is the minimum for ``sync_min``.

Each active md device may also have attributes specific to the
personality module that manages it.
These are specific to the implementation of the module and could
change substantially if the implementation changes.

These currently include:

  stripe_cache_size  (currently raid5 only)
      number of entries in the stripe cache.  This is writable, but
      there are upper and lower limits (32768, 17).  Default is 256.

  strip_cache_active (currently raid5 only)
      number of active entries in the stripe cache

  preread_bypass_threshold (currently raid5 only)
      number of times a stripe requiring preread will be bypassed by
      a stripe that does not require preread.  For fairness defaults
      to 1.  Setting this to 0 disables bypass accounting and
      requires preread stripes to wait until all full-width stripe-
      writes are complete.  Valid values are 0 to stripe_cache_size.

  journal_mode (currently raid5 only)
      The cache mode for raid5. raid5 could include an extra disk for
      caching. The mode can be "write-throuth" and "write-back". The
      default is "write-through".

  ppl_write_hint
      NVMe stream ID to be set for each PPL write request.


code:
.. SPDX-License-Identifier: GPL-2.0

======================================
Avermedia DVB-T on BT878 Release Notes
======================================

February 14th 2006

.. note::

   Several other Avermedia devices are supported. For a more
   broader and updated content about that, please check:

   https://linuxtv.org/wiki/index.php/AVerMedia

The Avermedia DVB-T
~~~~~~~~~~~~~~~~~~~

The Avermedia DVB-T is a budget PCI DVB card. It has 3 inputs:

* RF Tuner Input
* Composite Video Input (RCA Jack)
* SVIDEO Input (Mini-DIN)

The  RF  Tuner  Input  is the input to the tuner module of the
card.  The  Tuner  is  otherwise known as the "Frontend" . The
Frontend of the Avermedia DVB-T is a Microtune 7202D. A timely
post  to  the  linux-dvb  mailing  list  ascertained  that the
Microtune  7202D  is  supported  by the sp887x driver which is
found in the dvb-hw CVS module.

The  DVB-T card is based around the BT878 chip which is a very
common multimedia bridge and often found on Analogue TV cards.
There is no on-board MPEG2 decoder, which means that all MPEG2
decoding  must  be done in software, or if you have one, on an
MPEG2 hardware decoding card or chipset.

Getting the card going
~~~~~~~~~~~~~~~~~~~~~~

At  this  stage,  it  has  not  been  able  to  ascertain  the
functionality  of the remaining device nodes in respect of the
Avermedia  DVBT.  However,  full  functionality  in respect of
tuning,  receiving  and  supplying  the  MPEG2  data stream is
possible  with the currently available versions of the driver.
It  may be possible that additional functionality is available
from  the  card  (i.e.  viewing the additional analogue inputs
that  the card presents), but this has not been tested yet. If
I get around to this, I'll update the document with whatever I
find.

To  power  up  the  card,  load  the  following modules in the
following order:

* modprobe bttv (normally loaded automatically)
* modprobe dvb-bt8xx (or place dvb-bt8xx in /etc/modules)

Insertion  of  these  modules  into  the  running  kernel will
activate the appropriate DVB device nodes. It is then possible
to start accessing the card with utilities such as scan, tzap,
dvbstream etc.

The frontend module sp887x.o, requires an external   firmware.
Please use  the  command "get_dvb_firmware sp887x" to download
it. Then copy it to /usr/lib/hotplug/firmware or /lib/firmware/
(depending on configuration of firmware hotplug).

Known Limitations
~~~~~~~~~~~~~~~~~

At  present  I can say with confidence that the frontend tunes
via /dev/dvb/adapter{x}/frontend0 and supplies an MPEG2 stream
via   /dev/dvb/adapter{x}/dvr0.   I   have   not   tested  the
functionality  of any other part of the card yet. I will do so
over time and update this document.

There  are some limitations in the i2c layer due to a returned
error message inconsistency. Although this generates errors in
dmesg  and  the  system logs, it does not appear to affect the
ability of the frontend to function correctly.

Further Update
~~~~~~~~~~~~~~

dvbstream  and  VideoLAN  Client on windows works a treat with
DVB,  in  fact  this  is  currently  serving as my main way of
viewing  DVB-T  at  the  moment.  Additionally, VLC is happily
decoding  HDTV  signals,  although  the PC is dropping the odd
frame here and there - I assume due to processing capability -
as all the decoding is being done under windows in software.

Many  thanks to Nigel Pearson for the updates to this document
since the recent revision of the driver.

repo_name: angery/linux


code:
.. SPDX-License-Identifier: GPL-2.0

==================================
How to get the bt8xx cards working
==================================

Authors:
	 Richard Walker,
	 Jamie Honan,
	 Michael Hunold,
	 Manu Abraham,
	 Uwe Bugla,
	 Michael Krufky

General information
-------------------

This class of cards has a bt878a as the PCI interface, and require the bttv
driver for accessing the i2c bus and the gpio pins of the bt8xx chipset.

Please see Documentation/admin-guide/media/bttv-cardlist.rst for a complete
list of Cards based on the Conexant Bt8xx PCI bridge supported by the
Linux Kernel.

In order to be able to compile the kernel, some config options should be
enabled::

    ./scripts/config -e PCI
    ./scripts/config -e INPUT
    ./scripts/config -m I2C
    ./scripts/config -m MEDIA_SUPPORT
    ./scripts/config -e MEDIA_PCI_SUPPORT
    ./scripts/config -e MEDIA_ANALOG_TV_SUPPORT
    ./scripts/config -e MEDIA_DIGITAL_TV_SUPPORT
    ./scripts/config -e MEDIA_RADIO_SUPPORT
    ./scripts/config -e RC_CORE
    ./scripts/config -m VIDEO_BT848
    ./scripts/config -m DVB_BT8XX

If you want to automatically support all possible variants of the Bt8xx
cards, you should also do::

    ./scripts/config -e MEDIA_SUBDRV_AUTOSELECT

.. note::

   Please use the following options with care as deselection of drivers which
   are in fact necessary may result in DVB devices that cannot be tuned due
   to lack of driver support.

If your goal is to just support an specific board, you may, instead,
disable MEDIA_SUBDRV_AUTOSELECT and manually select the frontend drivers
required by your board. With that, you can save some RAM.

You can do that by calling make xconfig/qconfig/menuconfig and look at
the options on those menu options (only enabled if
``Autoselect ancillary drivers`` is disabled:

#) ``Device drivers`` => ``Multimedia support`` => ``Customize TV tuners``
#) ``Device drivers`` => ``Multimedia support`` => ``Customize DVB frontends``

Then, on each of the above menu, please select your card-specific
frontend and tuner modules.

Loading Modules
---------------

Regular case: If the bttv driver detects a bt8xx-based DVB card, all
frontend and backend modules will be loaded automatically.

Exceptions are:

- Old TV cards without EEPROMs, sharing a common PCI subsystem ID;
- Old TwinHan DST cards or clones with or without CA slot and not
  containing an Eeprom.

In the following cases overriding the PCI type detection for bttv and
for dvb-bt8xx drivers by passing modprobe parameters may be necessary.

Running TwinHan and Clones
~~~~~~~~~~~~~~~~~~~~~~~~~~

As shown at Documentation/admin-guide/media/bttv-cardlist.rst, TwinHan and
clones use ``card=113`` modprobe parameter. So, in order to properly
detect it for devices without EEPROM, you should use::

	$ modprobe bttv card=113
	$ modprobe dst

Useful parameters for verbosity level and debugging the dst module::

	verbose=0:		messages are disabled
		1:		only error messages are displayed
		2:		notifications are displayed
		3:		other useful messages are displayed
		4:		debug setting
	dst_addons=0:		card is a free to air (FTA) card only
		0x20:	card has a conditional access slot for scrambled channels
	dst_algo=0:		(default) Software tuning algorithm
	         1:		Hardware tuning algorithm

The autodetected values are determined by the cards' "response string".

In your logs see f. ex.: dst_get_device_id: Recognize [DSTMCI].

For bug reports please send in a complete log with verbose=4 activated.
Please also see Documentation/admin-guide/media/ci.rst.

Running multiple cards
~~~~~~~~~~~~~~~~~~~~~~

See Documentation/admin-guide/media/bttv-cardlist.rst for a complete list of
Card ID. Some examples:

	===========================	===
	Brand name			ID
	===========================	===
	Pinnacle PCTV Sat		 94
	Nebula Electronics Digi TV	104
	pcHDTV HD-2000 TV		112
	Twinhan DST and clones		113
	Avermedia AverTV DVB-T 77:	123
	Avermedia AverTV DVB-T 761	124
	DViCO FusionHDTV DVB-T Lite	128
	DViCO FusionHDTV 5 Lite		135
	===========================	===

.. note::

   When you have multiple cards, the order of the card ID should
   match the order where they're detected by the system. Please notice
   that removing/inserting other PCI cards may change the detection
   order.

Example::

	$ modprobe bttv card=113 card=135

In case of further problems please subscribe and send questions to
the mailing list: linux-media@vger.kernel.org.

Probing the cards with broken PCI subsystem ID
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

There are some TwinHan cards whose EEPROM has become corrupted for some
reason. The cards do not have a correct PCI subsystem ID.
Still, it is possible to force probing the cards with::

	$ echo 109e 0878 $subvendor $subdevice > \
		/sys/bus/pci/drivers/bt878/new_id

The two numbers there are::

	109e: PCI_VENDOR_ID_BROOKTREE
	0878: PCI_DEVICE_ID_BROOKTREE_878


code:
.. SPDX-License-Identifier: GPL-2.0

BTTV cards list
===============

.. tabularcolumns:: |p{1.4cm}|p{11.1cm}|p{4.2cm}|

.. flat-table::
   :header-rows: 1
   :widths: 2 19 18
   :stub-columns: 0

   * - Card number
     - Card name
     - PCI subsystem IDs

   * - 0
     -  *** UNKNOWN/GENERIC ***
     -

   * - 1
     - MIRO PCTV
     -

   * - 2
     - Hauppauge (bt848)
     -

   * - 3
     - STB, Gateway P/N 6000699 (bt848)
     -

   * - 4
     - Intel Create and Share PCI/ Smart Video Recorder III
     -

   * - 5
     - Diamond DTV2000
     -

   * - 6
     - AVerMedia TVPhone
     -

   * - 7
     - MATRIX-Vision MV-Delta
     -

   * - 8
     - Lifeview FlyVideo II (Bt848) LR26 / MAXI TV Video PCI2 LR26
     -

   * - 9
     - IMS/IXmicro TurboTV
     -

   * - 10
     - Hauppauge (bt878)
     - 0070:13eb, 0070:3900, 2636:10b4

   * - 11
     - MIRO PCTV pro
     -

   * - 12
     - ADS Technologies Channel Surfer TV (bt848)
     -

   * - 13
     - AVerMedia TVCapture 98
     - 1461:0002, 1461:0004, 1461:0300

   * - 14
     - Aimslab Video Highway Xtreme (VHX)
     -

   * - 15
     - Zoltrix TV-Max
     - a1a0:a0fc

   * - 16
     - Prolink Pixelview PlayTV (bt878)
     -

   * - 17
     - Leadtek WinView 601
     -

   * - 18
     - AVEC Intercapture
     -

   * - 19
     - Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)
     -

   * - 20
     - CEI Raffles Card
     -

   * - 21
     - Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50
     -

   * - 22
     - Askey CPH050/ Phoebe Tv Master + FM
     - 14ff:3002

   * - 23
     - Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV, bt878
     - 14c7:0101

   * - 24
     - Askey CPH05X/06X (bt878) [many vendors]
     - 144f:3002, 144f:3005, 144f:5000, 14ff:3000

   * - 25
     - Terratec TerraTV+ Version 1.0 (Bt848)/ Terra TValue Version 1.0/ Vobis TV-Boostar
     -

   * - 26
     - Hauppauge WinCam newer (bt878)
     -

   * - 27
     - Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50
     -

   * - 28
     - Terratec TerraTV+ Version 1.1 (bt878)
     - 153b:1127, 1852:1852

   * - 29
     - Imagenation PXC200
     - 1295:200a

   * - 30
     - Lifeview FlyVideo 98 LR50
     - 1f7f:1850

   * - 31
     - Formac iProTV, Formac ProTV I (bt848)
     -

   * - 32
     - Intel Create and Share PCI/ Smart Video Recorder III
     -

   * - 33
     - Terratec TerraTValue Version Bt878
     - 153b:1117, 153b:1118, 153b:1119, 153b:111a, 153b:1134, 153b:5018

   * - 34
     - Leadtek WinFast 2000/ WinFast 2000 XP
     - 107d:6606, 107d:6609, 6606:217d, f6ff:fff6

   * - 35
     - Lifeview FlyVideo 98 LR50 / Chronos Video Shuttle II
     - 1851:1850, 1851:a050

   * - 36
     - Lifeview FlyVideo 98FM LR50 / Typhoon TView TV/FM Tuner
     - 1852:1852

   * - 37
     - Prolink PixelView PlayTV pro
     -

   * - 38
     - Askey CPH06X TView99
     - 144f:3000, 144f:a005, a04f:a0fc

   * - 39
     - Pinnacle PCTV Studio/Rave
     - 11bd:0012, bd11:1200, bd11:ff00, 11bd:ff12

   * - 40
     - STB TV PCI FM, Gateway P/N 6000704 (bt878), 3Dfx VoodooTV 100
     - 10b4:2636, 10b4:2645, 121a:3060

   * - 41
     - AVerMedia TVPhone 98
     - 1461:0001, 1461:0003

   * - 42
     - ProVideo PV951
     - aa0c:146c

   * - 43
     - Little OnAir TV
     -

   * - 44
     - Sigma TVII-FM
     -

   * - 45
     - MATRIX-Vision MV-Delta 2
     -

   * - 46
     - Zoltrix Genie TV/FM
     - 15b0:4000, 15b0:400a, 15b0:400d, 15b0:4010, 15b0:4016

   * - 47
     - Terratec TV/Radio+
     - 153b:1123

   * - 48
     - Askey CPH03x/ Dynalink Magic TView
     -

   * - 49
     - IODATA GV-BCTV3/PCI
     - 10fc:4020

   * - 50
     - Prolink PV-BT878P+4E / PixelView PlayTV PAK / Lenco MXTV-9578 CP
     -

   * - 51
     - Eagle Wireless Capricorn2 (bt878A)
     -

   * - 52
     - Pinnacle PCTV Studio Pro
     -

   * - 53
     - Typhoon TView RDS + FM Stereo / KNC1 TV Station RDS
     -

   * - 54
     - Lifeview FlyVideo 2000 /FlyVideo A2/ Lifetec LT 9415 TV [LR90]
     -

   * - 55
     - Askey CPH031/ BESTBUY Easy TV
     -

   * - 56
     - Lifeview FlyVideo 98FM LR50
     - a051:41a0

   * - 57
     - GrandTec 'Grand Video Capture' (Bt848)
     - 4344:4142

   * - 58
     - Askey CPH060/ Phoebe TV Master Only (No FM)
     -

   * - 59
     - Askey CPH03x TV Capturer
     -

   * - 60
     - Modular Technology MM100PCTV
     -

   * - 61
     - AG Electronics GMV1
     - 15cb:0101

   * - 62
     - Askey CPH061/ BESTBUY Easy TV (bt878)
     -

   * - 63
     - ATI TV-Wonder
     - 1002:0001

   * - 64
     - ATI TV-Wonder VE
     - 1002:0003

   * - 65
     - Lifeview FlyVideo 2000S LR90
     -

   * - 66
     - Terratec TValueRadio
     - 153b:1135, 153b:ff3b

   * - 67
     - IODATA GV-BCTV4/PCI
     - 10fc:4050

   * - 68
     - 3Dfx VoodooTV FM (Euro)
     - 10b4:2637

   * - 69
     - Active Imaging AIMMS
     -

   * - 70
     - Prolink Pixelview PV-BT878P+ (Rev.4C,8E)
     -

   * - 71
     - Lifeview FlyVideo 98EZ (capture only) LR51
     - 1851:1851

   * - 72
     - Prolink Pixelview PV-BT878P+9B (PlayTV Pro rev.9B FM+NICAM)
     - 1554:4011

   * - 73
     - Sensoray 311/611
     - 6000:0311, 6000:0611

   * - 74
     - RemoteVision MX (RV605)
     -

   * - 75
     - Powercolor MTV878/ MTV878R/ MTV878F
     -

   * - 76
     - Canopus WinDVR PCI (COMPAQ Presario 3524JP, 5112JP)
     - 0e11:0079

   * - 77
     - GrandTec Multi Capture Card (Bt878)
     -

   * - 78
     - Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF
     - 0a01:17de

   * - 79
     - DSP Design TCVIDEO
     -

   * - 80
     - Hauppauge WinTV PVR
     - 0070:4500

   * - 81
     - IODATA GV-BCTV5/PCI
     - 10fc:4070, 10fc:d018

   * - 82
     - Osprey 100/150 (878)
     - 0070:ff00

   * - 83
     - Osprey 100/150 (848)
     -

   * - 84
     - Osprey 101 (848)
     -

   * - 85
     - Osprey 101/151
     -

   * - 86
     - Osprey 101/151 w/ svid
     -

   * - 87
     - Osprey 200/201/250/251
     -

   * - 88
     - Osprey 200/250
     - 0070:ff01

   * - 89
     - Osprey 210/220/230
     -

   * - 90
     - Osprey 500
     - 0070:ff02

   * - 91
     - Osprey 540
     - 0070:ff04

   * - 92
     - Osprey 2000
     - 0070:ff03

   * - 93
     - IDS Eagle
     -

   * - 94
     - Pinnacle PCTV Sat
     - 11bd:001c

   * - 95
     - Formac ProTV II (bt878)
     -

   * - 96
     - MachTV
     -

   * - 97
     - Euresys Picolo
     -

   * - 98
     - ProVideo PV150
     - aa00:1460, aa01:1461, aa02:1462, aa03:1463, aa04:1464, aa05:1465, aa06:1466, aa07:1467

   * - 99
     - AD-TVK503
     -

   * - 100
     - Hercules Smart TV Stereo
     -

   * - 101
     - Pace TV & Radio Card
     -

   * - 102
     - IVC-200
     - 0000:a155, 0001:a155, 0002:a155, 0003:a155, 0100:a155, 0101:a155, 0102:a155, 0103:a155, 0800:a155, 0801:a155, 0802:a155, 0803:a155

   * - 103
     - Grand X-Guard / Trust 814PCI
     - 0304:0102

   * - 104
     - Nebula Electronics DigiTV
     - 0071:0101

   * - 105
     - ProVideo PV143
     - aa00:1430, aa00:1431, aa00:1432, aa00:1433, aa03:1433

   * - 106
     - PHYTEC VD-009-X1 VD-011 MiniDIN (bt878)
     -

   * - 107
     - PHYTEC VD-009-X1 VD-011 Combi (bt878)
     -

   * - 108
     - PHYTEC VD-009 MiniDIN (bt878)
     -

   * - 109
     - PHYTEC VD-009 Combi (bt878)
     -

   * - 110
     - IVC-100
     - ff00:a132

   * - 111
     - IVC-120G
     - ff00:a182, ff01:a182, ff02:a182, ff03:a182, ff04:a182, ff05:a182, ff06:a182, ff07:a182, ff08:a182, ff09:a182, ff0a:a182, ff0b:a182, ff0c:a182, ff0d:a182, ff0e:a182, ff0f:a182

   * - 112
     - pcHDTV HD-2000 TV
     - 7063:2000

   * - 113
     - Twinhan DST + clones
     - 11bd:0026, 1822:0001, 270f:fc00, 1822:0026

   * - 114
     - Winfast VC100
     - 107d:6607

   * - 115
     - Teppro TEV-560/InterVision IV-560
     -

   * - 116
     - SIMUS GVC1100
     - aa6a:82b2

   * - 117
     - NGS NGSTV+
     -

   * - 118
     - LMLBT4
     -

   * - 119
     - Tekram M205 PRO
     -

   * - 120
     - Conceptronic CONTVFMi
     -

   * - 121
     - Euresys Picolo Tetra
     - 1805:0105, 1805:0106, 1805:0107, 1805:0108

   * - 122
     - Spirit TV Tuner
     -

   * - 123
     - AVerMedia AVerTV DVB-T 771
     - 1461:0771

   * - 124
     - AverMedia AverTV DVB-T 761
     - 1461:0761

   * - 125
     - MATRIX Vision Sigma-SQ
     -

   * - 126
     - MATRIX Vision Sigma-SLC
     -

   * - 127
     - APAC Viewcomp 878(AMAX)
     -

   * - 128
     - DViCO FusionHDTV DVB-T Lite
     - 18ac:db10, 18ac:db11

   * - 129
     - V-Gear MyVCD
     -

   * - 130
     - Super TV Tuner
     -

   * - 131
     - Tibet Systems 'Progress DVR' CS16
     -

   * - 132
     - Kodicom 4400R (master)
     -

   * - 133
     - Kodicom 4400R (slave)
     -

   * - 134
     - Adlink RTV24
     -

   * - 135
     - DViCO FusionHDTV 5 Lite
     - 18ac:d500

   * - 136
     - Acorp Y878F
     - 9511:1540

   * - 137
     - Conceptronic CTVFMi v2
     - 036e:109e

   * - 138
     - Prolink Pixelview PV-BT878P+ (Rev.2E)
     -

   * - 139
     - Prolink PixelView PlayTV MPEG2 PV-M4900
     -

   * - 140
     - Osprey 440
     - 0070:ff07

   * - 141
     - Asound Skyeye PCTV
     -

   * - 142
     - Sabrent TV-FM (bttv version)
     -

   * - 143
     - Hauppauge ImpactVCB (bt878)
     - 0070:13eb

   * - 144
     - MagicTV
     -

   * - 145
     - SSAI Security Video Interface
     - 4149:5353

   * - 146
     - SSAI Ultrasound Video Interface
     - 414a:5353

   * - 147
     - VoodooTV 200 (USA)
     - 121a:3000

   * - 148
     - DViCO FusionHDTV 2
     - dbc0:d200

   * - 149
     - Typhoon TV-Tuner PCI (50684)
     -

   * - 150
     - Geovision GV-600
     - 008a:763c

   * - 151
     - Kozumi KTV-01C
     -

   * - 152
     - Encore ENL TV-FM-2
     - 1000:1801

   * - 153
     - PHYTEC VD-012 (bt878)
     -

   * - 154
     - PHYTEC VD-012-X1 (bt878)
     -

   * - 155
     - PHYTEC VD-012-X2 (bt878)
     -

   * - 156
     - IVCE-8784
     - 0000:f050, 0001:f050, 0002:f050, 0003:f050

   * - 157
     - Geovision GV-800(S) (master)
     - 800a:763d

   * - 158
     - Geovision GV-800(S) (slave)
     - 800b:763d, 800c:763d, 800d:763d

   * - 159
     - ProVideo PV183
     - 1830:1540, 1831:1540, 1832:1540, 1833:1540, 1834:1540, 1835:1540, 1836:1540, 1837:1540

   * - 160
     - Tongwei Video Technology TD-3116
     - f200:3116

   * - 161
     - Aposonic W-DVR
     - 0279:0228

   * - 162
     - Adlink MPG24
     -

   * - 163
     - Bt848 Capture 14MHz
     -

   * - 164
     - CyberVision CV06 (SV)
     -

   * - 165
     - Kworld V-Stream Xpert TV PVR878
     -

   * - 166
     - PCI-8604PW
     -


code:
.. SPDX-License-Identifier: GPL-2.0

===============
The bttv driver
===============

Release notes for bttv
----------------------

You'll need at least these config options for bttv::

    ./scripts/config -e PCI
    ./scripts/config -m I2C
    ./scripts/config -m INPUT
    ./scripts/config -m MEDIA_SUPPORT
    ./scripts/config -e MEDIA_PCI_SUPPORT
    ./scripts/config -e MEDIA_ANALOG_TV_SUPPORT
    ./scripts/config -e MEDIA_DIGITAL_TV_SUPPORT
    ./scripts/config -e MEDIA_RADIO_SUPPORT
    ./scripts/config -e RC_CORE
    ./scripts/config -m VIDEO_BT848

If your board has digital TV, you'll also need::

    ./scripts/config -m DVB_BT8XX

In this case, please see Documentation/admin-guide/media/bt8xx.rst
for additional notes.

Make bttv work with your card
-----------------------------

If you have bttv compiled and installed, just booting the Kernel
should be enough for it to try probing it. However, depending
on the model, the Kernel may require additional information about
the hardware, as the device may not be able to provide such info
directly to the Kernel.

If it doesn't bttv likely could not autodetect your card and needs some
insmod options.  The most important insmod option for bttv is "card=n"
to select the correct card type.  If you get video but no sound you've
very likely specified the wrong (or no) card type.  A list of supported
cards is in Documentation/admin-guide/media/bttv-cardlist.rst.

If bttv takes very long to load (happens sometimes with the cheap
cards which have no tuner), try adding this to your modules configuration
file (usually, it is either ``/etc/modules.conf`` or some file at
``/etc/modules-load.d/``, but the actual place depends on your
distribution)::

	options i2c-algo-bit bit_test=1

Some cards may require an extra firmware file to work. For example,
for the WinTV/PVR you need one firmware file from its driver CD,
called: ``hcwamc.rbf``. It is inside a self-extracting zip file
called ``pvr45xxx.exe``.  Just placing it at the ``/etc/firmware``
directory should be enough for it to be autoload during the driver's
probing mode (e. g. when the Kernel boots or when the driver is
manually loaded via ``modprobe`` command).

If your card isn't listed in Documentation/admin-guide/media/bttv-cardlist.rst
or if you have trouble making audio work, please read :ref:`still_doesnt_work`.

Autodetecting cards
-------------------

bttv uses the PCI Subsystem ID to autodetect the card type.  lspci lists
the Subsystem ID in the second line, looks like this:

.. code-block:: none

	00:0a.0 Multimedia video controller: Brooktree Corporation Bt878 (rev 02)
		Subsystem: Hauppauge computer works Inc. WinTV/GO
		Flags: bus master, medium devsel, latency 32, IRQ 5
		Memory at e2000000 (32-bit, prefetchable) [size=4K]

only bt878-based cards can have a subsystem ID (which does not mean
that every card really has one).  bt848 cards can't have a Subsystem
ID and therefore can't be autodetected.  There is a list with the ID's
at Documentation/admin-guide/media/bttv-cardlist.rst
(in case you are interested or want to mail patches with updates).

.. _still_doesnt_work:

Still doesn't work?
-------------------

I do NOT have a lab with 30+ different grabber boards and a
PAL/NTSC/SECAM test signal generator at home, so I often can't
reproduce your problems.  This makes debugging very difficult for me.

If you have some knowledge and spare time, please try to fix this
yourself (patches very welcome of course...)  You know: The linux
slogan is "Do it yourself".

There is a mailing list at
http://vger.kernel.org/vger-lists.html#linux-media

If you have trouble with some specific TV card, try to ask there
instead of mailing me directly.  The chance that someone with the
same card listens there is much higher...

For problems with sound:  There are a lot of different systems used
for TV sound all over the world.  And there are also different chips
which decode the audio signal.  Reports about sound problems ("stereo
doesn't work") are pretty useless unless you include some details
about your hardware and the TV sound scheme used in your country (or
at least the country you are living in).

Modprobe options
----------------

.. note::

   The following argument list can be outdated, as we might add more
   options if ever needed. In case of doubt, please check with
   ``modinfo <module>``.

   This command prints various information about a kernel
   module, among them a complete and up-to-date list of insmod options.

bttv
	The bt848/878 (grabber chip) driver

    insmod args::

	    card=n		card type, see CARDLIST for a list.
	    tuner=n		tuner type, see CARDLIST for a list.
	    radio=0/1	card supports radio
	    pll=0/1/2	pll settings

			    0: don't use PLL
			    1: 28 MHz crystal installed
			    2: 35 MHz crystal installed

	    triton1=0/1     for Triton1 (+others) compatibility
	    vsfx=0/1	yet another chipset bug compatibility bit
			    see README.quirks for details on these two.

	    bigendian=n	Set the endianness of the gfx framebuffer.
			    Default is native endian.
	    fieldnr=0/1	Count fields.  Some TV descrambling software
			    needs this, for others it only generates
			    50 useless IRQs/sec.  default is 0 (off).
	    autoload=0/1	autoload helper modules (tuner, audio).
			    default is 1 (on).
	    bttv_verbose=0/1/2  verbose level (at insmod time, while
			    looking at the hardware).  default is 1.
	    bttv_debug=0/1	debug messages (for capture).
			    default is 0 (off).
	    irq_debug=0/1	irq handler debug messages.
			    default is 0 (off).
	    gbuffers=2-32	number of capture buffers for mmap'ed capture.
			    default is 4.
	    gbufsize=	size of capture buffers. default and
			    maximum value is 0x208000 (~2MB)
	    no_overlay=0	Enable overlay on broken hardware.  There
			    are some chipsets (SIS for example) which
			    are known to have problems with the PCI DMA
			    push used by bttv.  bttv will disable overlay
			    by default on this hardware to avoid crashes.
			    With this insmod option you can override this.
	    no_overlay=1	Disable overlay. It should be used by broken
			    hardware that doesn't support PCI2PCI direct
			    transfers.
	    automute=0/1	Automatically mutes the sound if there is
			    no TV signal, on by default.  You might try
			    to disable this if you have bad input signal
			    quality which leading to unwanted sound
			    dropouts.
	    chroma_agc=0/1	AGC of chroma signal, off by default.
	    adc_crush=0/1	Luminance ADC crush, on by default.
	    i2c_udelay=     Allow reduce I2C speed. Default is 5 usecs
			    (meaning 66,67 Kbps). The default is the
			    maximum supported speed by kernel bitbang
			    algorithm. You may use lower numbers, if I2C
			    messages are lost (16 is known to work on
			    all supported cards).

	    bttv_gpio=0/1
	    gpiomask=
	    audioall=
	    audiomux=
			    See Sound-FAQ for a detailed description.

	remap, card, radio and pll accept up to four comma-separated arguments
	(for multiple boards).

tuner
	The tuner driver.  You need this unless you want to use only
	with a camera or the board doesn't provide analog TV tuning.

	insmod args::

		debug=1		print some debug info to the syslog
		type=n		type of the tuner chip. n as follows:
				see CARDLIST for a complete list.
		pal=[bdgil]	select PAL variant (used for some tuners
				only, important for the audio carrier).

tvaudio
	Provide a single driver for all simple i2c audio control
	chips (tda/tea*).

	insmod args::

		tda8425  = 1	enable/disable the support for the
		tda9840  = 1	various chips.
		tda9850  = 1	The tea6300 can't be autodetected and is
		tda9855  = 1	therefore off by default, if you have
		tda9873  = 1	this one on your card (STB uses these)
		tda9874a = 1	you have to enable it explicitly.
		tea6300  = 0	The two tda985x chips use the same i2c
		tea6420  = 1	address and can't be disturgished from
		pic16c54 = 1	each other, you might have to disable
				the wrong one.
		debug = 1	print debug messages

msp3400
	The driver for the msp34xx sound processor chips. If you have a
	stereo card, you probably want to insmod this one.

	insmod args::

		debug=1/2	print some debug info to the syslog,
				2 is more verbose.
		simple=1	Use the "short programming" method.  Newer
				msp34xx versions support this.  You need this
				for dbx stereo.  Default is on if supported by
				the chip.
		once=1		Don't check the TV-stations Audio mode
				every few seconds, but only once after
				channel switches.
		amsound=1	Audio carrier is AM/NICAM at 6.5 Mhz.  This
				should improve things for french people, the
				carrier autoscan seems to work with FM only...

If the box freezes hard with bttv
---------------------------------

It might be a bttv driver bug.  It also might be bad hardware.  It also
might be something else ...

Just mailing me "bttv freezes" isn't going to help much.  This README
has a few hints how you can help to pin down the problem.

bttv bugs
~~~~~~~~~

If some version works and another doesn't it is likely to be a driver
bug.  It is very helpful if you can tell where exactly it broke
(i.e. the last working and the first broken version).

With a hard freeze you probably doesn't find anything in the logfiles.
The only way to capture any kernel messages is to hook up a serial
console and let some terminal application log the messages.  /me uses
screen.  See Documentation/admin-guide/serial-console.rst for details on
setting up a serial console.

Read Documentation/admin-guide/bug-hunting.rst to learn how to get any useful
information out of a register+stack dump printed by the kernel on
protection faults (so-called "kernel oops").

If you run into some kind of deadlock, you can try to dump a call trace
for each process using sysrq-t (see Documentation/admin-guide/sysrq.rst).
This way it is possible to figure where *exactly* some process in "D"
state is stuck.

I've seen reports that bttv 0.7.x crashes whereas 0.8.x works rock solid
for some people.  Thus probably a small buglet left somewhere in bttv
0.7.x.  I have no idea where exactly, it works stable for me and a lot of
other people.  But in case you have problems with the 0.7.x versions you
can give 0.8.x a try ...

hardware bugs
~~~~~~~~~~~~~

Some hardware can't deal with PCI-PCI transfers (i.e. grabber => vga).
Sometimes problems show up with bttv just because of the high load on
the PCI bus. The bt848/878 chips have a few workarounds for known
incompatibilities, see README.quirks.

Some folks report that increasing the pci latency helps too,
althrought I'm not sure whenever this really fixes the problems or
only makes it less likely to happen.  Both bttv and btaudio have a
insmod option to set the PCI latency of the device.

Some mainboard have problems to deal correctly with multiple devices
doing DMA at the same time.  bttv + ide seems to cause this sometimes,
if this is the case you likely see freezes only with video and hard disk
access at the same time.  Updating the IDE driver to get the latest and
greatest workarounds for hardware bugs might fix these problems.

other
~~~~~

If you use some binary-only yunk (like nvidia module) try to reproduce
the problem without.

IRQ sharing is known to cause problems in some cases.  It works just
fine in theory and many configurations.  Neverless it might be worth a
try to shuffle around the PCI cards to give bttv another IRQ or make
it share the IRQ with some other piece of hardware.  IRQ sharing with
VGA cards seems to cause trouble sometimes.  I've also seen funny
effects with bttv sharing the IRQ with the ACPI bridge (and
apci-enabled kernel).

Bttv quirks
-----------

Below is what the bt878 data book says about the PCI bug compatibility
modes of the bt878 chip.

The triton1 insmod option sets the EN_TBFX bit in the control register.
The vsfx insmod option does the same for EN_VSFX bit.  If you have
stability problems you can try if one of these options makes your box
work solid.

drivers/pci/quirks.c knows about these issues, this way these bits are
enabled automagically for known-buggy chipsets (look at the kernel
messages, bttv tells you).

Normal PCI Mode
~~~~~~~~~~~~~~~

The PCI REQ signal is the logical-or of the incoming function requests.
The inter-nal GNT[0:1] signals are gated asynchronously with GNT and
demultiplexed by the audio request signal. Thus the arbiter defaults to
the video function at power-up and parks there during no requests for
bus access. This is desirable since the video will request the bus more
often. However, the audio will have highest bus access priority. Thus
the audio will have first access to the bus even when issuing a request
after the video request but before the PCI external arbiter has granted
access to the Bt879. Neither function can preempt the other once on the
bus. The duration to empty the entire video PCI FIFO onto the PCI bus is
very short compared to the bus access latency the audio PCI FIFO can
tolerate.

430FX Compatibility Mode
~~~~~~~~~~~~~~~~~~~~~~~~

When using the 430FX PCI, the following rules will ensure
compatibility:

 (1) Deassert REQ at the same time as asserting FRAME.
 (2) Do not reassert REQ to request another bus transaction until after
     finish-ing the previous transaction.

Since the individual bus masters do not have direct control of REQ, a
simple logical-or of video and audio requests would violate the rules.
Thus, both the arbiter and the initiator contain 430FX compatibility
mode logic. To enable 430FX mode, set the EN_TBFX bit as indicated in
Device Control Register on page 104.

When EN_TBFX is enabled, the arbiter ensures that the two compatibility
rules are satisfied. Before GNT is asserted by the PCI arbiter, this
internal arbiter may still logical-or the two requests. However, once
the GNT is issued, this arbiter must lock in its decision and now route
only the granted request to the REQ pin. The arbiter decision lock
happens regardless of the state of FRAME because it does not know when
FRAME will be asserted (typically - each initiator will assert FRAME on
the cycle following GNT). When FRAME is asserted, it is the initiator s
responsibility to remove its request at the same time. It is the
arbiters responsibility to allow this request to flow through to REQ and
not allow the other request to hold REQ asserted. The decision lock may
be removed at the end of the transaction: for example, when the bus is
idle (FRAME and IRDY). The arbiter decision may then continue
asynchronously until GNT is again asserted.

Interfacing with Non-PCI 2.1 Compliant Core Logic
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

A small percentage of core logic devices may start a bus transaction
during the same cycle that GNT is de-asserted. This is non PCI 2.1
compliant. To ensure compatibility when using PCs with these PCI
controllers, the EN_VSFX bit must be enabled (refer to Device Control
Register on page 104). When in this mode, the arbiter does not pass GNT
to the internal functions unless REQ is asserted. This prevents a bus
transaction from starting the same cycle as GNT is de-asserted. This
also has the side effect of not being able to take advantage of bus
parking, thus lowering arbitration performance. The Bt879 drivers must
query for these non-compliant devices, and set the EN_VSFX bit only if
required.

Other elements of the tvcards array
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

If you are trying to make a new card work you might find it useful to
know what the other elements in the tvcards array are good for::

	video_inputs    - # of video inputs the card has
	audio_inputs    - historical cruft, not used any more.
	tuner           - which input is the tuner
	svhs            - which input is svhs (all others are labeled composite)
	muxsel          - video mux, input->registervalue mapping
	pll             - same as pll= insmod option
	tuner_type      - same as tuner= insmod option
	*_modulename    - hint whenever some card needs this or that audio
			module loaded to work properly.
	has_radio	- whenever this TV card has a radio tuner.
	no_msp34xx	- "1" disables loading of msp3400.o module
	no_tda9875	- "1" disables loading of tda9875.o module
	needs_tvaudio	- set to "1" to load tvaudio.o module

If some config item is specified both from the tvcards array and as
insmod option, the insmod option takes precedence.

Cards
-----

.. note::

   For a more updated list, please check
   https://linuxtv.org/wiki/index.php/Hardware_Device_Information

Supported cards: Bt848/Bt848a/Bt849/Bt878/Bt879 cards
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

All cards with Bt848/Bt848a/Bt849/Bt878/Bt879 and normal
Composite/S-VHS inputs are supported.  Teletext and Intercast support
(PAL only) for ALL cards via VBI sample decoding in software.

Some cards with additional multiplexing of inputs or other additional
fancy chips are only partially supported (unless specifications by the
card manufacturer are given).  When a card is listed here it isn't
necessarily fully supported.

All other cards only differ by additional components as tuners, sound
decoders, EEPROMs, teletext decoders ...

MATRIX Vision
~~~~~~~~~~~~~

MV-Delta
- Bt848A
- 4 Composite inputs, 1 S-VHS input (shared with 4th composite)
- EEPROM

http://www.matrix-vision.de/

This card has no tuner but supports all 4 composite (1 shared with an
S-VHS input) of the Bt848A.
Very nice card if you only have satellite TV but several tuners connected
to the card via composite.

Many thanks to Matrix-Vision for giving us 2 cards for free which made
Bt848a/Bt849 single crystal operation support possible!!!

Miro/Pinnacle PCTV
~~~~~~~~~~~~~~~~~~

- Bt848
  some (all??) come with 2 crystals for PAL/SECAM and NTSC
- PAL, SECAM or NTSC TV tuner (Philips or TEMIC)
- MSP34xx sound decoder on add on board
  decoder is supported but AFAIK does not yet work
  (other sound MUX setting in GPIO port needed??? somebody who fixed this???)
- 1 tuner, 1 composite and 1 S-VHS input
- tuner type is autodetected

http://www.miro.de/
http://www.miro.com/

Many thanks for the free card which made first NTSC support possible back
in 1997!

Hauppauge Win/TV pci
~~~~~~~~~~~~~~~~~~~~

There are many different versions of the Hauppauge cards with different
tuners (TV+Radio ...), teletext decoders.
Note that even cards with same model numbers have (depending on the revision)
different chips on it.

- Bt848 (and others but always in 2 crystal operation???)
  newer cards have a Bt878

- PAL, SECAM, NTSC or tuner with or without Radio support

e.g.:

- PAL:

  - TDA5737: VHF, hyperband and UHF mixer/oscillator for TV and VCR 3-band tuners
  - TSA5522: 1.4 GHz I2C-bus controlled synthesizer, I2C 0xc2-0xc3

- NTSC:

  - TDA5731: VHF, hyperband and UHF mixer/oscillator for TV and VCR 3-band tuners
  - TSA5518: no datasheet available on Philips site

- Philips SAA5246 or SAA5284 ( or no) Teletext decoder chip
  with buffer RAM (e.g. Winbond W24257AS-35: 32Kx8 CMOS static RAM)
  SAA5246 (I2C 0x22) is supported

- 256 bytes EEPROM: Microchip 24LC02B or Philips 8582E2Y
  with configuration information
  I2C address 0xa0 (24LC02B also responds to 0xa2-0xaf)

- 1 tuner, 1 composite and (depending on model) 1 S-VHS input

- 14052B: mux for selection of sound source

- sound decoder: TDA9800, MSP34xx (stereo cards)

Askey CPH-Series
~~~~~~~~~~~~~~~~
Developed by TelSignal(?), OEMed by many vendors (Typhoon, Anubis, Dynalink)

- Card series:
  - CPH01x: BT848 capture only
  - CPH03x: BT848
  - CPH05x: BT878 with FM
  - CPH06x: BT878 (w/o FM)
  - CPH07x: BT878 capture only

- TV standards:
  - CPH0x0: NTSC-M/M
  - CPH0x1: PAL-B/G
  - CPH0x2: PAL-I/I
  - CPH0x3: PAL-D/K
  - CPH0x4: SECAM-L/L
  - CPH0x5: SECAM-B/G
  - CPH0x6: SECAM-D/K
  - CPH0x7: PAL-N/N
  - CPH0x8: PAL-B/H
  - CPH0x9: PAL-M/M

- CPH03x was often sold as "TV capturer".

Identifying:

  #) 878 cards can be identified by PCI Subsystem-ID:
     - 144f:3000 = CPH06x
     - 144F:3002 = CPH05x w/ FM
     - 144F:3005 = CPH06x_LC (w/o remote control)
  #) The cards have a sticker with "CPH"-model on the back.
  #) These cards have a number printed on the PCB just above the tuner metal box:
     - "80-CP2000300-x" = CPH03X
     - "80-CP2000500-x" = CPH05X
     - "80-CP2000600-x" = CPH06X / CPH06x_LC

  Askey sells these cards as "Magic TView series", Brand "MagicXpress".
  Other OEM often call these "Tview", "TView99" or else.

Lifeview Flyvideo Series:
~~~~~~~~~~~~~~~~~~~~~~~~~

The naming of these series differs in time and space.

Identifying:
  #) Some models can be identified by PCI subsystem ID:

     - 1852:1852 = Flyvideo 98 FM
     - 1851:1850 = Flyvideo 98
     - 1851:1851 = Flyvideo 98 EZ (capture only)

  #) There is a print on the PCB:

     - LR25       = Flyvideo (Zoran ZR36120, SAA7110A)
     - LR26 Rev.N = Flyvideo II (Bt848)
     - LR26 Rev.O = Flyvideo II (Bt878)
     - LR37 Rev.C = Flyvideo EZ (Capture only, ZR36120 + SAA7110)
     - LR38 Rev.A1= Flyvideo II EZ (Bt848 capture only)
     - LR50 Rev.Q = Flyvideo 98 (w/eeprom and PCI subsystem ID)
     - LR50 Rev.W = Flyvideo 98 (no eeprom)
     - LR51 Rev.E = Flyvideo 98 EZ (capture only)
     - LR90       = Flyvideo 2000 (Bt878)
     - LR90 Flyvideo 2000S (Bt878) w/Stereo TV (Package incl. LR91 daughterboard)
     - LR91       = Stereo daughter card for LR90
     - LR97       = Flyvideo DVBS
     - LR99 Rev.E = Low profile card for OEM integration (only internal audio!) bt878
     - LR136	 = Flyvideo 2100/3100 (Low profile, SAA7130/SAA7134)
     - LR137      = Flyvideo DV2000/DV3000 (SAA7130/SAA7134 + IEEE1394)
     - LR138 Rev.C= Flyvideo 2000 (SAA7130)
     - LR138 Flyvideo 3000 (SAA7134) w/Stereo TV

	- These exist in variations w/FM and w/Remote sometimes denoted
	  by suffixes "FM" and "R".

  #) You have a laptop (miniPCI card):

      - Product    = FlyTV Platinum Mini
      - Model/Chip = LR212/saa7135

      - Lifeview.com.tw states (Feb. 2002):
        "The FlyVideo2000 and FlyVideo2000s product name have renamed to FlyVideo98."
        Their Bt8x8 cards are listed as discontinued.
      - Flyvideo 2000S was probably sold as Flyvideo 3000 in some countries(Europe?).
        The new Flyvideo 2000/3000 are SAA7130/SAA7134 based.

"Flyvideo II" had been the name for the 848 cards, nowadays (in Germany)
this name is re-used for LR50 Rev.W.

The Lifeview website mentioned Flyvideo III at some time, but such a card
has not yet been seen (perhaps it was the german name for LR90 [stereo]).
These cards are sold by many OEMs too.

FlyVideo A2 (Elta 8680)= LR90 Rev.F (w/Remote, w/o FM, stereo TV by tda9821) {Germany}

Lifeview 3000 (Elta 8681) as sold by Plus(April 2002), Germany = LR138 w/ saa7134

lifeview config coding on gpio pins 0-9
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- LR50 rev. Q ("PARTS: 7031505116), Tuner wurde als Nr. 5 erkannt, Eingänge
  SVideo, TV, Composite, Audio, Remote:

 - CP9..1=100001001 (1: 0-Ohm-Widerstand gegen GND unbestückt; 0: bestückt)

Typhoon TV card series:
~~~~~~~~~~~~~~~~~~~~~~~

These can be CPH, Flyvideo, Pixelview or KNC1 series.

Typhoon is the brand of Anubis.

Model 50680 got re-used, some model no. had different contents over time.

Models:

  - 50680 "TV Tuner PCI Pal BG"(old,red package)=can be CPH03x(bt848) or CPH06x(bt878)
  - 50680 "TV Tuner Pal BG" (blue package)= Pixelview PV-BT878P+ (Rev 9B)
  - 50681 "TV Tuner PCI Pal I" (variant of 50680)
  - 50682 "TView TV/FM Tuner Pal BG"       = Flyvideo 98FM (LR50 Rev.Q)

  .. note::

	 The package has a picture of CPH05x (which would be a real TView)

  - 50683 "TV Tuner PCI SECAM" (variant of 50680)
  - 50684 "TV Tuner Pal BG"                = Pixelview 878TV(Rev.3D)
  - 50686 "TV Tuner"                       = KNC1 TV Station
  - 50687 "TV Tuner stereo"                = KNC1 TV Station pro
  - 50688 "TV Tuner RDS" (black package)   = KNC1 TV Station RDS
  - 50689  TV SAT DVB-S CARD CI PCI (SAA7146AH, SU1278?) = "KNC1 TV Station DVB-S"
  - 50692 "TV/FM Tuner" (small PCB)
  - 50694  TV TUNER CARD RDS (PHILIPS CHIPSET SAA7134HL)
  - 50696  TV TUNER STEREO (PHILIPS CHIPSET SAA7134HL, MK3ME Tuner)
  - 50804  PC-SAT TV/Audio Karte = Techni-PC-Sat (ZORAN 36120PQC, Tuner:Alps)
  - 50866  TVIEW SAT RECEIVER+ADR
  - 50868 "TV/FM Tuner Pal I" (variant of 50682)
  - 50999 "TV/FM Tuner Secam" (variant of 50682)

Guillemot
~~~~~~~~~

Models:

- Maxi-TV PCI (ZR36120)
- Maxi TV Video 2 = LR50 Rev.Q (FI1216MF, PAL BG+SECAM)
- Maxi TV Video 3 = CPH064 (PAL BG + SECAM)

Mentor
~~~~~~

Mentor TV card ("55-878TV-U1") = Pixelview 878TV(Rev.3F) (w/FM w/Remote)

Prolink
~~~~~~~

- TV cards:

  - PixelView Play TV pro - (Model: PV-BT878P+ REV 8E)
  - PixelView Play TV pro - (Model: PV-BT878P+ REV 9D)
  - PixelView Play TV pro - (Model: PV-BT878P+ REV 4C / 8D / 10A )
  - PixelView Play TV - (Model: PV-BT848P+)
  - 878TV - (Model: PV-BT878TV)

- Multimedia TV packages (card + software pack):

  - PixelView Play TV Theater - (Model: PV-M4200) =  PixelView Play TV pro + Software
  - PixelView Play TV PAK -     (Model: PV-BT878P+ REV 4E)
  - PixelView Play TV/VCR -     (Model: PV-M3200 REV 4C / 8D / 10A )
  - PixelView Studio PAK -      (Model:    M2200 REV 4C / 8D / 10A )
  - PixelView PowerStudio PAK - (Model: PV-M3600 REV 4E)
  - PixelView DigitalVCR PAK -  (Model: PV-M2400 REV 4C / 8D / 10A )
  - PixelView PlayTV PAK II (TV/FM card + usb camera)  PV-M3800
  - PixelView PlayTV XP PV-M4700,PV-M4700(w/FM)
  - PixelView PlayTV DVR PV-M4600  package contents:PixelView PlayTV pro, windvr & videoMail s/w

- Further Cards:

  - PV-BT878P+rev.9B (Play TV Pro, opt. w/FM w/NICAM)
  - PV-BT878P+rev.2F
  - PV-BT878P Rev.1D (bt878, capture only)

  - XCapture PV-CX881P (cx23881)
  - PlayTV HD PV-CX881PL+, PV-CX881PL+(w/FM) (cx23881)

  - DTV3000 PV-DTV3000P+ DVB-S CI = Twinhan VP-1030
  - DTV2000 DVB-S = Twinhan VP-1020

- Video Conferencing:

  - PixelView Meeting PAK - (Model: PV-BT878P)
  - PixelView Meeting PAK Lite - (Model: PV-BT878P)
  - PixelView Meeting PAK plus - (Model: PV-BT878P+rev 4C/8D/10A)
  - PixelView Capture - (Model: PV-BT848P)
  - PixelView PlayTV USB pro
  - Model No. PV-NT1004+, PV-NT1004+ (w/FM) = NT1004 USB decoder chip + SAA7113 video decoder chip

Dynalink
~~~~~~~~

These are CPH series.

Phoebemicro
~~~~~~~~~~~

- TV Master    = CPH030 or CPH060
- TV Master FM = CPH050

Genius/Kye
~~~~~~~~~~

- Video Wonder/Genius Internet Video Kit = LR37 Rev.C
- Video Wonder Pro II (848 or 878) = LR26

Tekram
~~~~~~

- VideoCap C205 (Bt848)
- VideoCap C210 (zr36120 +Philips)
- CaptureTV M200 (ISA)
- CaptureTV M205 (Bt848)

Lucky Star
~~~~~~~~~~

- Image World Conference TV = LR50 Rev. Q

Leadtek
~~~~~~~

- WinView 601 (Bt848)
- WinView 610 (Zoran)
- WinFast2000
- WinFast2000 XP

Support for the Leadtek WinView 601 TV/FM
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Author of this section: Jon Tombs <jon@gte.esi.us.es>

This card is basically the same as all the rest (Bt484A, Philips tuner),
the main difference is that they have attached a programmable attenuator to 3
GPIO lines in order to give some volume control. They have also stuck an
infra-red remote control decoded on the board, I will add support for this
when I get time (it simple generates an interrupt for each key press, with
the key code is placed in the GPIO port).

I don't yet have any application to test the radio support. The tuner
frequency setting should work but it is possible that the audio multiplexer
is wrong. If it doesn't work, send me email.

- No Thanks to Leadtek they refused to answer any questions about their
  hardware. The driver was written by visual inspection of the card. If you
  use this driver, send an email insult to them, and tell them you won't
  continue buying their hardware unless they support Linux.

- Little thanks to Princeton Technology Corp (http://www.princeton.com.tw)
  who make the audio attenuator. Their publicly available data-sheet available
  on their web site doesn't include the chip programming information! Hidden
  on their server are the full data-sheets, but don't ask how I found it.

To use the driver I use the following options, the tuner and pll settings might
be different in your country. You can force it via modprobe parameters.
For example::

    modprobe bttv  tuner=1 pll=28 radio=1 card=17

Sets tuner type 1 (Philips PAL_I), PLL with a 28 MHz crystal, enables
FM radio and selects bttv card ID 17 (Leadtek WinView 601).

KNC One
~~~~~~~

- TV-Station
- TV-Station SE (+Software Bundle)
- TV-Station pro (+TV stereo)
- TV-Station FM (+Radio)
- TV-Station RDS (+RDS)
- TV Station SAT (analog satellite)
- TV-Station DVB-S

.. note:: newer Cards have saa7134, but model name stayed the same?

Provideo
~~~~~~~~

-  PV951 or PV-951, now named PV-951T
   (also are sold as:
   Boeder TV-FM Video Capture Card,
   Titanmedia Supervision TV-2400,
   Provideo PV951 TF,
   3DeMon PV951,
   MediaForte TV-Vision PV951,
   Yoko PV951,
   Vivanco Tuner Card PCI Art.-Nr.: 68404
   )

- Surveillance Series:

 - PV-141
 - PV-143
 - PV-147
 - PV-148 (capture only)
 - PV-150
 - PV-151

- TV-FM Tuner Series:

 - PV-951TDV (tv tuner + 1394)
 - PV-951T/TF
 - PV-951PT/TF
 - PV-956T/TF Low Profile
 - PV-911

Highscreen
~~~~~~~~~~

Models:

- TV Karte = LR50 Rev.S
- TV-Boostar = Terratec Terra TV+ Version 1.0 (Bt848, tda9821) "ceb105.pcb"

Zoltrix
~~~~~~~

Models:

- Face to Face Capture (Bt848 capture only) (PCB "VP-2848")
- Face To Face TV MAX (Bt848) (PCB "VP-8482 Rev1.3")
- Genie TV (Bt878) (PCB "VP-8790 Rev 2.1")
- Genie Wonder Pro

AVerMedia
~~~~~~~~~

- AVer FunTV Lite (ISA, AV3001 chipset)  "M101.C"
- AVerTV
- AVerTV Stereo
- AVerTV Studio (w/FM)
- AVerMedia TV98 with Remote
- AVerMedia TV/FM98 Stereo
- AVerMedia TVCAM98
- TVCapture (Bt848)
- TVPhone (Bt848)
- TVCapture98 (="AVerMedia TV98" in USA) (Bt878)
- TVPhone98 (Bt878, w/FM)

======== =========== =============== ======= ====== ======== =======================
PCB      PCI-ID      Model-Name      Eeprom  Tuner  Sound    Country
======== =========== =============== ======= ====== ======== =======================
M101.C   ISA !
M108-B      Bt848                     --     FR1236		 US   [#f2]_, [#f3]_
M1A8-A      Bt848    AVer TV-Phone           FM1216  --
M168-T   1461:0003   AVerTV Studio   48:17   FM1216 TDA9840T  D    [#f1]_ w/FM w/Remote
M168-U   1461:0004   TVCapture98     40:11   FI1216   --      D    w/Remote
M168II-B 1461:0003   Medion MD9592   48:16   FM1216 TDA9873H  D    w/FM
======== =========== =============== ======= ====== ======== =======================

.. [#f1] Daughterboard MB68-A with TDA9820T and TDA9840T
.. [#f2] Sony NE41S soldered (stereo sound?)
.. [#f3] Daughterboard M118-A w/ pic 16c54 and 4 MHz quartz

- US site has different drivers for (as of 09/2002):

  - EZ Capture/InterCam PCI (BT-848 chip)
  - EZ Capture/InterCam PCI (BT-878 chip)
  - TV-Phone (BT-848 chip)
  - TV98 (BT-848 chip)
  - TV98 With Remote (BT-848 chip)
  - TV98 (BT-878 chip)
  - TV98 With Remote (BT-878)
  - TV/FM98 (BT-878 chip)
  - AVerTV
  - AverTV Stereo
  - AVerTV Studio

DE hat diverse Treiber fuer diese Modelle (Stand 09/2002):

  - TVPhone (848) mit Philips tuner FR12X6 (w/ FM radio)
  - TVPhone (848) mit Philips tuner FM12X6 (w/ FM radio)
  - TVCapture (848) w/Philips tuner FI12X6
  - TVCapture (848) non-Philips tuner
  - TVCapture98 (Bt878)
  - TVPhone98 (Bt878)
  - AVerTV und TVCapture98 w/VCR (Bt 878)
  - AVerTVStudio und TVPhone98 w/VCR (Bt878)
  - AVerTV GO Serie (Kein SVideo Input)
  - AVerTV98 (BT-878 chip)
  - AVerTV98 mit Fernbedienung (BT-878 chip)
  - AVerTV/FM98 (BT-878 chip)

  - VDOmate (www.averm.com.cn) = M168U ?

Aimslab
~~~~~~~

Models:

- Video Highway or "Video Highway TR200" (ISA)
- Video Highway Xtreme (aka "VHX") (Bt848, FM w/ TEA5757)

IXMicro (former: IMS=Integrated Micro Solutions)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Models:

- IXTV BT848 (=TurboTV)
- IXTV BT878
- IMS TurboTV (Bt848)

Lifetec/Medion/Tevion/Aldi
~~~~~~~~~~~~~~~~~~~~~~~~~~

Models:

- LT9306/MD9306 = CPH061
- LT9415/MD9415 = LR90 Rev.F or Rev.G
- MD9592 = Avermedia TVphone98 (PCI_ID=1461:0003), PCB-Rev=M168II-B (w/TDA9873H)
- MD9717 = KNC One (Rev D4, saa7134, FM1216 MK2 tuner)
- MD5044 = KNC One (Rev D4, saa7134, FM1216ME MK3 tuner)

Modular Technologies (www.modulartech.com) UK
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Models:

- MM100 PCTV (Bt848)
- MM201 PCTV (Bt878, Bt832) w/ Quartzsight camera
- MM202 PCTV (Bt878, Bt832, tda9874)
- MM205 PCTV (Bt878)
- MM210 PCTV (Bt878) (Galaxy TV, Galaxymedia ?)

Terratec
~~~~~~~~

Models:

- Terra TV+ Version 1.0 (Bt848), "ceb105.PCB" printed on the PCB, TDA9821
- Terra TV+ Version 1.1 (Bt878), "LR74 Rev.E" printed on the PCB, TDA9821
- Terra TValueRadio,             "LR102 Rev.C" printed on the PCB
- Terra TV/Radio+ Version 1.0,   "80-CP2830100-0" TTTV3 printed on the PCB,
  "CPH010-E83" on the back, SAA6588T, TDA9873H
- Terra TValue Version BT878,    "80-CP2830110-0 TTTV4" printed on the PCB,
  "CPH011-D83" on back
- Terra TValue Version 1.0       "ceb105.PCB" (really identical to Terra TV+ Version 1.0)
- Terra TValue New Revision	  "LR102 Rec.C"
- Terra Active Radio Upgrade (tea5757h, saa6588t)

- LR74 is a newer PCB revision of ceb105 (both incl. connector for Active Radio Upgrade)

- Cinergy 400 (saa7134), "E877 11(S)", "PM820092D" printed on PCB
- Cinergy 600 (saa7134)

Technisat
~~~~~~~~~

Models:

- Discos ADR PC-Karte ISA (no TV!)
- Discos ADR PC-Karte PCI (probably no TV?)
- Techni-PC-Sat (Sat. analog)
  Rev 1.2 (zr36120, vpx3220, stv0030, saa5246, BSJE3-494A)
- Mediafocus I (zr36120/zr36125, drp3510, Sat. analog + ADR Radio)
- Mediafocus II (saa7146, Sat. analog)
- SatADR Rev 2.1 (saa7146a, saa7113h, stv0056a, msp3400c, drp3510a, BSKE3-307A)
- SkyStar 1 DVB  (AV7110) = Technotrend Premium
- SkyStar 2 DVB  (B2C2) (=Sky2PC)

Siemens
~~~~~~~

Multimedia eXtension Board (MXB) (SAA7146, SAA7111)

Powercolor
~~~~~~~~~~

Models:

- MTV878
       Package comes with different contents:

           a) pcb "MTV878" (CARD=75)
           b) Pixelview Rev. 4\_

- MTV878R w/Remote Control
- MTV878F w/Remote Control w/FM radio

Pinnacle
~~~~~~~~

PCTV models:

- Mirovideo PCTV (Bt848)
- Mirovideo PCTV SE (Bt848)
- Mirovideo PCTV Pro (Bt848 + Daughterboard for TV Stereo and FM)
- Studio PCTV Rave (Bt848 Version = Mirovideo PCTV)
- Studio PCTV Rave (Bt878 package w/o infrared)
- Studio PCTV      (Bt878)
- Studio PCTV Pro  (Bt878 stereo w/ FM)
- Pinnacle PCTV    (Bt878, MT2032)
- Pinnacle PCTV Pro (Bt878, MT2032)
- Pinncale PCTV Sat (bt878a, HM1821/1221) ["Conexant CX24110 with CX24108 tuner, aka HM1221/HM1811"]
- Pinnacle PCTV Sat XE

M(J)PEG capture and playback models:

- DC1+ (ISA)
- DC10  (zr36057,     zr36060,      saa7110, adv7176)
- DC10+ (zr36067,     zr36060,      saa7110, adv7176)
- DC20  (ql16x24b,zr36050, zr36016, saa7110, saa7187 ...)
- DC30  (zr36057, zr36050, zr36016, vpx3220, adv7176, ad1843, tea6415, miro FST97A1)
- DC30+ (zr36067, zr36050, zr36016, vpx3220, adv7176)
- DC50  (zr36067, zr36050, zr36016, saa7112, adv7176 (2 pcs.?), ad1843, miro FST97A1, Lattice ???)

Lenco
~~~~~

Models:

- MXR-9565 (=Technisat Mediafocus?)
- MXR-9571 (Bt848) (=CPH031?)
- MXR-9575
- MXR-9577 (Bt878) (=Prolink 878TV Rev.3x)
- MXTV-9578CP (Bt878) (= Prolink PV-BT878P+4E)

Iomega
~~~~~~

Buz (zr36067, zr36060, saa7111, saa7185)

LML
~~~
   LML33 (zr36067, zr36060, bt819, bt856)

Grandtec
~~~~~~~~

Models:

- Grand Video Capture (Bt848)
- Multi Capture Card  (Bt878)

Koutech
~~~~~~~

Models:

- KW-606 (Bt848)
- KW-607 (Bt848 capture only)
- KW-606RSF
- KW-607A (capture only)
- KW-608 (Zoran capture only)

IODATA (jp)
~~~~~~~~~~~

Models:

- GV-BCTV/PCI
- GV-BCTV2/PCI
- GV-BCTV3/PCI
- GV-BCTV4/PCI
- GV-VCP/PCI (capture only)
- GV-VCP2/PCI (capture only)

Canopus (jp)
~~~~~~~~~~~~

WinDVR	= Kworld "KW-TVL878RF"

www.sigmacom.co.kr
~~~~~~~~~~~~~~~~~~

Sigma Cyber TV II

www.sasem.co.kr
~~~~~~~~~~~~~~~

Litte OnAir TV

hama
~~~~

TV/Radio-Tuner Card, PCI (Model 44677) = CPH051

Sigma Designs
~~~~~~~~~~~~~

Hollywood plus (em8300, em9010, adv7175), (PCB "M340-10") MPEG DVD decoder

Formac
~~~~~~

Models:

- iProTV (Card for iMac Mezzanine slot, Bt848+SCSI)
- ProTV (Bt848)
- ProTV II = ProTV Stereo (Bt878) ["stereo" means FM stereo, tv is still mono]

ATI
~~~

Models:

- TV-Wonder
- TV-Wonder VE

Diamond Multimedia
~~~~~~~~~~~~~~~~~~

DTV2000 (Bt848, tda9875)

Aopen
~~~~~

- VA1000 Plus (w/ Stereo)
- VA1000 Lite
- VA1000 (=LR90)

Intel
~~~~~

Models:

- Smart Video Recorder (ISA full-length)
- Smart Video Recorder pro (ISA half-length)
- Smart Video Recorder III (Bt848)

STB
~~~

Models:

- STB Gateway 6000704 (bt878)
- STB Gateway 6000699 (bt848)
- STB Gateway 6000402 (bt848)
- STB TV130 PCI

Videologic
~~~~~~~~~~

Models:

- Captivator Pro/TV (ISA?)
- Captivator PCI/VC (Bt848 bundled with camera) (capture only)

Technotrend
~~~~~~~~~~~~

Models:

- TT-SAT PCI (PCB "Sat-PCI Rev.:1.3.1"; zr36125, vpx3225d, stc0056a, Tuner:BSKE6-155A
- TT-DVB-Sat
   - revisions 1.1, 1.3, 1.5, 1.6 and 2.1
   - This card is sold as OEM from:

	- Siemens DVB-s Card
	- Hauppauge WinTV DVB-S
	- Technisat SkyStar 1 DVB
	- Galaxis DVB Sat

   - Now this card is called TT-PCline Premium Family
   - TT-Budget (saa7146, bsru6-701a)
     This card is sold as OEM from:

	- Hauppauge WinTV Nova
	- Satelco Standard PCI (DVB-S)
   - TT-DVB-C PCI

Teles
~~~~~

 DVB-s (Rev. 2.2, BSRV2-301A, data only?)

Remote Vision
~~~~~~~~~~~~~

MX RV605 (Bt848 capture only)

Boeder
~~~~~~

Models:

- PC ChatCam (Model 68252) (Bt848 capture only)
- Tv/Fm Capture Card  (Model 68404) = PV951

Media-Surfer  (esc-kathrein.de)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Models:

- Sat-Surfer (ISA)
- Sat-Surfer PCI = Techni-PC-Sat
- Cable-Surfer 1
- Cable-Surfer 2
- Cable-Surfer PCI (zr36120)
- Audio-Surfer (ISA Radio card)

Jetway (www.jetway.com.tw)
~~~~~~~~~~~~~~~~~~~~~~~~~~

Models:

- JW-TV 878M
- JW-TV 878  = KWorld KW-TV878RF

Galaxis
~~~~~~~

Models:

- Galaxis DVB Card S CI
- Galaxis DVB Card C CI
- Galaxis DVB Card S
- Galaxis DVB Card C
- Galaxis plug.in S [neuer Name: Galaxis DVB Card S CI

Hauppauge
~~~~~~~~~

Models:

- many many WinTV models ...
- WinTV DVBs = Technotrend Premium 1.3
- WinTV NOVA = Technotrend Budget 1.1 "S-DVB DATA"
- WinTV NOVA-CI "SDVBACI"
- WinTV Nova USB (=Technotrend USB 1.0)
- WinTV-Nexus-s (=Technotrend Premium 2.1 or 2.2)
- WinTV PVR
- WinTV PVR 250
- WinTV PVR 450

US models

-990 WinTV-PVR-350 (249USD) (iTVC15 chipset + radio)
-980 WinTV-PVR-250 (149USD) (iTVC15 chipset)
-880 WinTV-PVR-PCI (199USD) (KFIR chipset + bt878)
-881 WinTV-PVR-USB
-190 WinTV-GO
-191 WinTV-GO-FM
-404 WinTV
-401 WinTV-radio
-495 WinTV-Theater
-602 WinTV-USB
-621 WinTV-USB-FM
-600 USB-Live
-698 WinTV-HD
-697 WinTV-D
-564 WinTV-Nexus-S

Deutsche Modelle:

-603 WinTV GO
-719 WinTV Primio-FM
-718 WinTV PCI-FM
-497 WinTV Theater
-569 WinTV USB
-568 WinTV USB-FM
-882 WinTV PVR
-981 WinTV PVR 250
-891 WinTV-PVR-USB
-541 WinTV Nova
-488 WinTV Nova-Ci
-564 WinTV-Nexus-s
-727 WinTV-DVB-c
-545 Common Interface
-898 WinTV-Nova-USB

UK models:

-607 WinTV Go
-693,793 WinTV Primio FM
-647,747 WinTV PCI FM
-498 WinTV Theater
-883 WinTV PVR
-893 WinTV PVR USB  (Duplicate entry)
-566 WinTV USB (UK)
-573 WinTV USB FM
-429 Impact VCB (bt848)
-600 USB Live (Video-In 1x Comp, 1xSVHS)
-542 WinTV Nova
-717 WinTV DVB-S
-909 Nova-t PCI
-893 Nova-t USB   (Duplicate entry)
-802 MyTV
-804 MyView
-809 MyVideo
-872 MyTV2Go FM
-546 WinTV Nova-S CI
-543 WinTV Nova
-907 Nova-S USB
-908 Nova-T USB
-717 WinTV Nexus-S
-157 DEC3000-s Standalone + USB

Spain:

-685 WinTV-Go
-690 WinTV-PrimioFM
-416 WinTV-PCI Nicam Estereo
-677 WinTV-PCI-FM
-699 WinTV-Theater
-683 WinTV-USB
-678 WinTV-USB-FM
-983 WinTV-PVR-250
-883 WinTV-PVR-PCI
-993 WinTV-PVR-350
-893 WinTV-PVR-USB
-728 WinTV-DVB-C PCI
-832 MyTV2Go
-869 MyTV2Go-FM
-805 MyVideo (USB)

Matrix-Vision
~~~~~~~~~~~~~

Models:

- MATRIX-Vision MV-Delta
- MATRIX-Vision MV-Delta 2
- MVsigma-SLC (Bt848)

Conceptronic (.net)
~~~~~~~~~~~~~~~~~~~

Models:

- TVCON FM,  TV card w/ FM = CPH05x
- TVCON = CPH06x

BestData
~~~~~~~~

Models:

- HCC100 = VCC100rev1 + camera
- VCC100 rev1 (bt848)
- VCC100 rev2 (bt878)

Gallant  (www.gallantcom.com) www.minton.com.tw
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Models:

- Intervision IV-510 (capture only bt8x8)
- Intervision IV-550 (bt8x8)
- Intervision IV-100 (zoran)
- Intervision IV-1000 (bt8x8)

Asonic (www.asonic.com.cn) (website down)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SkyEye tv 878

Hoontech
~~~~~~~~

878TV/FM

Teppro (www.itcteppro.com.tw)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Models:

- ITC PCITV (Card Ver 1.0) "Teppro TV1/TVFM1 Card"
- ITC PCITV (Card Ver 2.0)
- ITC PCITV (Card Ver 3.0) = "PV-BT878P+ (REV.9D)"
- ITC PCITV (Card Ver 4.0)
- TEPPRO IV-550 (For BT848 Main Chip)
- ITC DSTTV (bt878, satellite)
- ITC VideoMaker (saa7146, StreamMachine sm2110, tvtuner) "PV-SM2210P+ (REV:1C)"

Kworld (www.kworld.com.tw)
~~~~~~~~~~~~~~~~~~~~~~~~~~

PC TV Station:

- KWORLD KW-TV878R  TV (no radio)
- KWORLD KW-TV878RF TV (w/ radio)
- KWORLD KW-TVL878RF (low profile)
- KWORLD KW-TV713XRF (saa7134)

 MPEG TV Station (same cards as above plus WinDVR Software MPEG en/decoder)

- KWORLD KW-TV878R -Pro   TV (no Radio)
- KWORLD KW-TV878RF-Pro   TV (w/ Radio)
- KWORLD KW-TV878R -Ultra TV (no Radio)
- KWORLD KW-TV878RF-Ultra TV (w/ Radio)

JTT/ Justy Corp.(http://www.jtt.ne.jp/)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

JTT-02 (JTT TV) "TV watchmate pro" (bt848)

ADS www.adstech.com
~~~~~~~~~~~~~~~~~~~

Models:

- Channel Surfer TV ( CHX-950 )
- Channel Surfer TV+FM ( CHX-960FM )

AVEC www.prochips.com
~~~~~~~~~~~~~~~~~~~~~

AVEC Intercapture (bt848, tea6320)

NoBrand
~~~~~~~

TV Excel = Australian Name for "PV-BT878P+ 8E" or "878TV Rev.3\_"

Mach www.machspeed.com
~~~~~~~~~~~~~~~~~~~~~~

Mach TV 878

Eline www.eline-net.com/
~~~~~~~~~~~~~~~~~~~~~~~~

Models:

- Eline Vision TVMaster / TVMaster FM (ELV-TVM/ ELV-TVM-FM) = LR26  (bt878)
- Eline Vision TVMaster-2000 (ELV-TVM-2000, ELV-TVM-2000-FM)= LR138 (saa713x)

Spirit
~~~~~~

- Spirit TV Tuner/Video Capture Card (bt848)

Boser www.boser.com.tw
~~~~~~~~~~~~~~~~~~~~~~

Models:

- HS-878 Mini PCI Capture Add-on Card
- HS-879 Mini PCI 3D Audio and Capture Add-on Card (w/ ES1938 Solo-1)

Satelco www.citycom-gmbh.de, www.satelco.de
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Models:

- TV-FM =KNC1 saa7134
- Standard PCI (DVB-S) = Technotrend Budget
- Standard PCI (DVB-S) w/ CI
- Satelco Highend PCI (DVB-S) = Technotrend Premium

Sensoray www.sensoray.com
~~~~~~~~~~~~~~~~~~~~~~~~~

Models:

- Sensoray 311 (PC/104 bus)
- Sensoray 611 (PCI)

CEI (Chartered Electronics Industries Pte Ltd [CEI] [FCC ID HBY])
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Models:

- TV Tuner  -  HBY-33A-RAFFLES  Brooktree Bt848KPF + Philips
- TV Tuner MG9910  -  HBY33A-TVO  CEI + Philips SAA7110 + OKI M548262 + ST STV8438CV
- Primetime TV (ISA)

  - acquired by Singapore Technologies
  - now operating as Chartered Semiconductor Manufacturing
  - Manufacturer of video cards is listed as:

    - Cogent Electronics Industries [CEI]

AITech
~~~~~~

Models:

- Wavewatcher TV (ISA)
- AITech WaveWatcher TV-PCI = can be LR26 (Bt848) or LR50 (BT878)
- WaveWatcher TVR-202 TV/FM Radio Card (ISA)

MAXRON
~~~~~~

Maxron MaxTV/FM Radio (KW-TV878-FNT) = Kworld or JW-TV878-FBK

www.ids-imaging.de
~~~~~~~~~~~~~~~~~~

Models:

- Falcon Series (capture only)

In USA: http://www.theimagingsource.com/
- DFG/LC1

www.sknet-web.co.jp
~~~~~~~~~~~~~~~~~~~

SKnet Monster TV (saa7134)

A-Max www.amaxhk.com (Colormax, Amax, Napa)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

APAC Viewcomp 878

Cybertainment
~~~~~~~~~~~~~

Models:

- CyberMail AV Video Email Kit w/ PCI Capture Card (capture only)
- CyberMail Xtreme

These are Flyvideo

VCR (http://www.vcrinc.com/)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Video Catcher 16

Twinhan
~~~~~~~

Models:

- DST Card/DST-IP (bt878, twinhan asic) VP-1020
  - Sold as:

    - KWorld DVBS Satellite TV-Card
    - Powercolor DSTV Satellite Tuner Card
    - Prolink Pixelview DTV2000
    - Provideo PV-911 Digital Satellite TV Tuner Card With Common Interface ?

- DST-CI Card (DVB Satellite) VP-1030
- DCT Card (DVB cable)

MSI
~~~

Models:

- MSI TV@nywhere Tuner Card (MS-8876) (CX23881/883) Not Bt878 compatible.
- MS-8401 DVB-S

Focus www.focusinfo.com
~~~~~~~~~~~~~~~~~~~~~~~

InVideo PCI (bt878)

Sdisilk www.sdisilk.com/
~~~~~~~~~~~~~~~~~~~~~~~~

Models:

- SDI Silk 100
- SDI Silk 200 SDI Input Card

www.euresys.com
~~~~~~~~~~~~~~~

PICOLO series

PMC/Pace
~~~~~~~~

www.pacecom.co.uk website closed

Mercury www.kobian.com (UK and FR)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Models:

- LR50
- LR138RBG-Rx  == LR138

TEC sound
~~~~~~~~~

TV-Mate = Zoltrix VP-8482

Though educated googling found: www.techmakers.com

(package and manuals don't have any other manufacturer info) TecSound

Lorenzen www.lorenzen.de
~~~~~~~~~~~~~~~~~~~~~~~~

SL DVB-S PCI = Technotrend Budget PCI (su1278 or bsru version)

Origo (.uk) www.origo2000.com
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

PC TV Card = LR50

I/O Magic www.iomagic.com
~~~~~~~~~~~~~~~~~~~~~~~~~

PC PVR - Desktop TV Personal Video Recorder DR-PCTV100 = Pinnacle ROB2D-51009464 4.0 + Cyberlink PowerVCR II

Arowana
~~~~~~~

TV-Karte / Poso Power TV (?) = Zoltrix VP-8482 (?)

iTVC15 boards
~~~~~~~~~~~~~

kuroutoshikou.com ITVC15
yuan.com MPG160 PCI TV (Internal PCI MPEG2 encoder card plus TV-tuner)

Asus www.asuscom.com
~~~~~~~~~~~~~~~~~~~~

Models:

- Asus TV Tuner Card 880 NTSC (low profile, cx23880)
- Asus TV (saa7134)

Hoontech
~~~~~~~~

http://www.hoontech.de/

- HART Vision 848 (H-ART Vision 848)
- HART Vision 878 (H-Art Vision 878)

Chips used at bttv devices
--------------------------

- all boards:

  - Brooktree Bt848/848A/849/878/879: video capture chip

- Board specific

  - Miro PCTV:

    - Philips or Temic Tuner

  - Hauppauge Win/TV pci (version 405):

    - Microchip 24LC02B or Philips 8582E2Y:

       - 256 Byte EEPROM with configuration information
       - I2C 0xa0-0xa1, (24LC02B also responds to 0xa2-0xaf)

    - Philips SAA5246AGP/E: Videotext decoder chip, I2C 0x22-0x23

    - TDA9800: sound decoder

    - Winbond W24257AS-35: 32Kx8 CMOS static RAM (Videotext buffer mem)

    - 14052B: analog switch for selection of sound source

- PAL:

  - TDA5737: VHF, hyperband and UHF mixer/oscillator for TV and VCR 3-band tuners
  - TSA5522: 1.4 GHz I2C-bus controlled synthesizer, I2C 0xc2-0xc3

- NTSC:

  - TDA5731: VHF, hyperband and UHF mixer/oscillator for TV and VCR 3-band tuners
  - TSA5518: no datasheet available on Philips site

- STB TV pci:

  - ???
  - if you want better support for STB cards send me info!
    Look at the board! What chips are on it?

Specs
-----

Philips		http://www.Semiconductors.COM/pip/

Conexant	http://www.conexant.com/

Micronas	http://www.micronas.com/en/home/index.html

Thanks
------

Many thanks to:

- Markus Schroeder <schroedm@uni-duesseldorf.de> for information on the Bt848
  and tuner programming and his control program xtvc.

- Martin Buck <martin-2.buck@student.uni-ulm.de> for his great Videotext
  package.

- Gerd Hoffmann for the MSP3400 support and the modular
  I2C, tuner, ... support.

- MATRIX Vision for giving us 2 cards for free, which made support of
  single crystal operation possible.

- MIRO for providing a free PCTV card and detailed information about the
  components on their cards. (E.g. how the tuner type is detected)
  Without their card I could not have debugged the NTSC mode.

- Hauppauge for telling how the sound input is selected and what components
  they do and will use on their radio cards.
  Also many thanks for faxing me the FM1216 data sheet.

Contributors
------------

Michael Chu <mmchu@pobox.com>
  AverMedia fix and more flexible card recognition

Alan Cox <alan@lxorguk.ukuu.org.uk>
  Video4Linux interface and 2.1.x kernel adaptation

Chris Kleitsch
  Hardware I2C

Gerd Hoffmann
  Radio card (ITT sound processor)

bigfoot <bigfoot@net-way.net>

Ragnar Hojland Espinosa <ragnar@macula.net>
  ConferenceTV card

+ many more (please mail me if you are missing in this list and would
	     like to be mentioned)