
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)
