
Gunther Mayer's bttv card gallery (graphical version of this text file :-)
is available at: http://www.bttv-gallery.de/


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 ...


Unsupported Cards:
------------------

Cards with Zoran (ZR) or Philips (SAA) or ISA are not supported by
this driver.


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 crytal 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:
  1) 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)
  1) The cards have a sticker with "CPH"-model on the back.
  2) 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:
  1) 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)
  2) There is a print on the PCB:
      LR25       = Flyvideo (Zoran ZR36120, SAA7110A)
      LR26 Rev.N = Flyvideo II (Bt848)
	   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)
	   Rev.W = Flyvideo 98 (no eeprom)
      LR51 Rev.E = Flyvideo 98 EZ (capture only)
      LR90       = Flyvideo 2000 (Bt878)
		   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)
		or Flyvideo 3000 (SAA7134) w/Stereo TV
		   These exist in variations w/FM and w/Remote sometimes denoted
		   by suffixes "FM" and "R".
  3) 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 contries(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


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
---------
  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

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

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

Provideo
--------
  PV951 or PV-951 (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
  ) now named PV-951T

  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
----------
   TV Karte = LR50 Rev.S
   TV-Boostar = Terratec Terra TV+ Version 1.0 (Bt848, tda9821) "ceb105.pcb"

Zoltrix
-------
   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   (2),(3)
   M1A8-A      Bt848    AVer TV-Phone           FM1216  --
   M168-T   1461:0003   AVerTV Studio   48:17   FM1216 TDA9840T  D    (1) 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

   (1) Daughterboard MB68-A with TDA9820T and TDA9840T
   (2) Sony NE41S soldered (stereo sound?)
   (3) 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
-------
   Video Highway or "Video Highway TR200" (ISA)
   Video Highway Xtreme (aka "VHX") (Bt848, FM w/ TEA5757)

IXMicro (former: IMS=Integrated Micro Solutions)
-------
   IXTV BT848 (=TurboTV)
   IXTV BT878
   IMS TurboTV (Bt848)

Lifetec/Medion/Tevion/Aldi
--------------------------
   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
---------------------------------------------
   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
--------
   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
---------
   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)

Stradis
-------
   SDM275,SDM250,SDM026,SDM025 (SAA7146, IBMMPEG2): MPEG2 decoder only

Powercolor
----------
   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
--------
   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:
   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
-----
   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
--------
   Grand Video Capture (Bt848)
   Multi Capture Card  (Bt878)

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

IODATA (jp)
------
   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
------
   iProTV (Card for iMac Mezzanine slot, Bt848+SCSI)
   ProTV (Bt848)
   ProTV II = ProTV Stereo (Bt878) ["stereo" means FM stereo, tv is still mono]

ATI
---
   TV-Wonder
   TV-Wonder VE

Diamond Multimedia
------------------
   DTV2000 (Bt848, tda9875)

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

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

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

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

Technotrend
------------
   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
------
   PC ChatCam (Model 68252) (Bt848 capture only)
   Tv/Fm Capture Card  (Model 68404) = PV951

Media-Surfer  (esc-kathrein.de)
-------------------------------
   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)
--------------------------
   JW-TV 878M
   JW-TV 878  = KWorld KW-TV878RF

Galaxis
-------
   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
---------
   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
-------------
   MATRIX-Vision MV-Delta
   MATRIX-Vision MV-Delta 2
   MVsigma-SLC (Bt848)

Conceptronic (.net)
------------
   TVCON FM,  TV card w/ FM = CPH05x
   TVCON = CPH06x

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

Gallant  (www.gallantcom.com) www.minton.com.tw
-----------------------------------------------
   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)
-----------------------------
   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.justy.co.jp/ (www.jtt.com.jp website down)
---------------------------------------------------------------------
   JTT-02 (JTT TV) "TV watchmate pro" (bt848)

ADS www.adstech.com
-------------------
   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/
-----
   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 http://www.spiritmodems.com.au/
------
   Spirit TV Tuner/Video Capture Card (bt848)

Boser www.boser.com.tw
-----
   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
-------
   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
--------
   Sensoray 311 (PC/104 bus)
   Sensoray 611 (PCI)

CEI (Chartered Electronics Industries Pte Ltd [CEI] [FCC ID HBY])
---
  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
------
   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
------------------
   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
-------------
   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
-------
   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
---
    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/
-------
    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)
    LR50
    LR138RBG-Rx  == LR138

TEC sound (package and manuals don't have any other manufacturer info) TecSound
    Though educated googling found: www.techmakers.com
    TV-Mate = Zoltrix VP-8482

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
   Asus TV Tuner Card 880 NTSC (low profile, cx23880)
   Asus TV (saa7134)

Hoontech
--------
http://www.hoontech.com/korean/download/down_driver_list03.html
   HART Vision 848 (H-ART Vision 848)
   HART Vision 878 (H-Art Vision 878)
