
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)
