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

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.jtt.ne.jp/)
---------------------------------------------------------------------
   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 
------
   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.de/
   HART Vision 848 (H-ART Vision 848)
   HART Vision 878 (H-Art Vision 878)
