Hardware supported by the linuxtv.org DVB drivers
=================================================

  Generally, the DVB hardware manufacturers frequently change the
  frontends (i.e. tuner / demodulator units) used, usually without
  changing the product name, revision number or specs. Some cards
  are also available in versions with different frontends for
  DVB-S/DVB-C/DVB-T. Thus the frontend drivers are listed separately.

  Note 1: There is no guarantee that every frontend driver works
  out of the box with every card, because of different wiring.

  Note 2: The demodulator chips can be used with a variety of
  tuner/PLL chips, and not all combinations are supported. Often
  the demodulator and tuner/PLL chip are inside a metal box for
  shielding, and the whole metal box has its own part number.


o Frontends drivers:
  - dvb_dummy_fe: for testing...
  DVB-S:
   - ves1x93		: Alps BSRV2 (ves1893 demodulator) and dbox2 (ves1993)
   - cx24110		: Conexant HM1221/HM1811 (cx24110 or cx24106 demod, cx24108 PLL)
   - grundig_29504-491	: Grundig 29504-491 (Philips TDA8083 demodulator), tsa5522 PLL
   - mt312		: Zarlink mt312 or Mitel vp310 demodulator, sl1935 or tsa5059 PLLi, Technisat Sky2Pc with bios Rev. 2.3
   - stv0299		: Alps BSRU6 (tsa5059 PLL), LG TDQB-S00x (tsa5059 PLL),
			  LG TDQF-S001F (sl1935 PLL), Philips SU1278 (tua6100 PLL),
			  Philips SU1278SH (tsa5059 PLL), Samsung TBMU24112IMB, Technisat Sky2Pc with bios Rev. 2.6
  DVB-C:
   - ves1820		: various (ves1820 demodulator, sp5659c or spXXXX PLL)
   - at76c651		: Atmel AT76c651(B) with DAT7021 PLL
  DVB-T:
   - alps_tdlb7		: Alps TDLB7 (sp8870 demodulator, sp5659 PLL)
   - alps_tdmb7		: Alps TDMB7 (cx22700 demodulator)
   - grundig_29504-401	: Grundig 29504-401 (LSI L64781 demodulator), tsa5060 PLL
   - tda1004x		: Philips tda10045h (td1344 or tdm1316l PLL)
   - nxt6000 		: Alps TDME7 (MITEL SP5659 PLL), Alps TDED4 (TI ALP510 PLL),
			  Comtech DVBT-6k07 (SP5730 PLL)
			  (NxtWave Communications NXT6000 demodulator)
   - sp887x		: Microtune 7202D
   - dib3000mb	: DiBcom 3000-MB demodulator
  DVB-S/C/T:
   - dst		: TwinHan DST Frontend
  ATSC:
   - nxt200x		: Nxtwave NXT2002 & NXT2004
   - or51211		: or51211 based (pcHDTV HD2000 card)
   - or51132		: or51132 based (pcHDTV HD3000 card)
   - bcm3510		: Broadcom BCM3510
   - lgdt330x		: LG Electronics DT3302 & DT3303


o Cards based on the Phillips saa7146 multimedia PCI bridge chip:
  - TI AV7110 based cards (i.e. with hardware MPEG decoder):
    - Siemens/Technotrend/Hauppauge PCI DVB card revision 1.1, 1.3, 1.5, 1.6, 2.1
      (aka Hauppauge Nexus)
  - "budget" cards (i.e. without hardware MPEG decoder):
    - Technotrend Budget / Hauppauge WinTV-Nova PCI Cards
    - SATELCO Multimedia PCI
    - KNC1 DVB-S, Typhoon DVB-S, Terratec Cinergy 1200 DVB-S (no CI support)
    - Typhoon DVB-S budget
    - Fujitsu-Siemens Activy DVB-S budget card

o Cards based on the B2C2 Inc. FlexCopII/IIb/III:
  - Technisat SkyStar2 PCI DVB card revision 2.3, 2.6B, 2.6C

o Cards based on the Conexant Bt8xx PCI bridge:
  - Pinnacle PCTV Sat DVB
  - Nebula Electronics DigiTV
  - TwinHan DST
  - Avermedia DVB-T
  - ChainTech digitop DST-1000 DVB-S
  - pcHDTV HD-2000 TV
  - DViCO FusionHDTV DVB-T Lite
  - DViCO FusionHDTV5 Lite

o Technotrend / Hauppauge DVB USB devices:
  - Nova USB
  - DEC 2000-T, 3000-S, 2540-T

o DiBcom DVB-T USB based devices:
  - Twinhan VisionPlus VisionDTV USB-Ter DVB-T Device
  - HAMA DVB-T USB device
  - CTS Portable (Chinese Television System)
  - KWorld V-Stream XPERT DTV DVB-T USB
  - JetWay DTV DVB-T USB
  - ADSTech Instant TV DVB-T USB
  - Ultima Electronic/Artec T1 USB TVBOX (AN2135 and AN2235)
  - Compro Videomate DVB-U2000 - DVB-T USB
  - Grandtec USB DVB-T
  - Avermedia AverTV DVBT USB
  - DiBcom USB DVB-T reference device (non-public)
  - Yakumo DVB-T mobile USB2.0
  - DiBcom USB2.0 DVB-T reference device (non-public)

o Experimental support for the analog module of the Siemens DVB-C PCI card

o Cards based on the Conexant cx2388x PCI bridge:
  - ADS Tech Instant TV DVB-T PCI
  - ATI HDTV Wonder
  - digitalnow DNTV Live! DVB-T
  - DViCO FusionHDTV DVB-T1
  - DViCO FusionHDTV DVB-T Plus
  - DViCO FusionHDTV3 Gold-Q
  - DViCO FusionHDTV3 Gold-T
  - DViCO FusionHDTV5 Gold
  - Hauppauge Nova-T DVB-T
  - KWorld/VStream XPert DVB-T
  - pcHDTV HD3000 HDTV
  - TerraTec Cinergy 1400 DVB-T
  - WinFast DTV1000-T

o Cards based on the Phillips saa7134 PCI bridge:
  - Medion 7134
  - Pinnacle PCTV 300i DVB-T + PAL
  - LifeView FlyDVB-T DUO
  - Typhoon DVB-T Duo Digital/Analog Cardbus
  - Philips TOUGH DVB-T reference design
  - Philips EUROPA V3 reference design
  - Compro Videomate DVB-T300
  - Compro Videomate DVB-T200
  - AVerMedia AVerTVHD MCE A180

