  BTTV Mini-HOWTO
  di Eric Sandeen, eric_sandeen@bigfoot.com
  v0.3, Febbraio 2000

  Questo documento descrive l'hardware, il software e le procedure nec
  essarie per utilizzare sotto Linux una scheda di cattura video o una
  scheda TV basata su chipset bt8x8.  Traduzione di Andrea Nicolini,
  andrea@teamsw.it, Aprile 2000
  ______________________________________________________________________

  Indice Generale


  1. Introduzione
     1.1 Copyright di questo documento (in inglese).
     1.2 Dove trovare questo documento
     1.3 Riconoscimenti
     1.4 Liberatoria

  2. Requisiti hardware
  3. Requisiti Software
  4. Configurazione di sistema
     4.1 Installazione Hardware
     4.2 Configurazione del kernel
     4.3 Come usare i pacchetti versione 0.6.x
     4.4 File speciali sotto /dev
     4.5 Caricare i moduli
     4.6 Automatizzare il caricamentio dei moduli

  5. Applicazioni
  6. Appendice - Argomenti per i moduli


  ______________________________________________________________________

  11..  IInnttrroodduuzziioonnee


  La capacit di catturare e visualizzare sorgenti video  una delle pi
  interessanti caratteristiche multimediali di Linux. Sono supportati
  molti tipi di dispositivi attraverso le API video4linux (
  <http://roadrunner.swansea.uk.linux.org/v4l.shtml>), incluse diverse
  schede TV basate sui chipset Conexant bt848 e bt878.  Questo documento
  spiega come utilizzare tali schede su di un sistema Linux.


  11..11..  CCooppyyrriigghhtt ddii qquueessttoo ddooccuummeennttoo ((iinn iinngglleessee))..


  This HOWTO is copyrighted 1999 Eric Sandeen.

  Unless otherwise stated, Linux HOWTO documents are copyrighted by
  their respective authors. Linux HOWTO documents may be reproduced and
  distributed in whole or in part, in any medium physical or electronic,
  as long as this copyright notice is retained on all copies. Commercial
  redistribution is allowed and encouraged; however, the author would
  like to be notified of any such distributions.

  All translations, derivative works, or aggregate works incorporating
  any Linux HOWTO documents must be covered under this copyright notice.
  That is, you may not produce a derivative work from a HOWTO and impose
  additional restrictions on its distribution. Exceptions to these rules
  may be granted under certain conditions; please contact the Linux
  HOWTO co-ordinator at the address given below.  In short, we wish to
  promote dissemination of this information through as many channels as
  possible. However, we do wish to retain copyright on the HOWTO
  documents, and would like to be notified of any plans to redistribute
  the HOWTOs.

  If you have questions, please contact Tim Bynum, the Linux HOWTO
  coordinator, at _l_i_n_u_x_-_h_o_w_t_o_@_m_e_t_a_l_a_b_._u_n_c_._e_d_u via email.


  11..22..  DDoovvee ttrroovvaarree qquueessttoo ddooccuummeennttoo


  La versione ufficiale pi recente di questo documento pu essere
  scaricata dal sito del Linux Documentation Project
  <http://metalab.unc.edu/LDP/>.


  11..33..  RRiiccoonnoosscciimmeennttii


  Grazie a Ralph Metzler e Marcus Metzler per aver scritto il driver
  originale bttv. Grazie anche ad Alan Cox per aver creato le API
  Video4Linux, Gerd Knorr per il suo lavoro sulle schede radio, per le
  versioni successive bttv e per xawtv. Grazie a chiunque abbia
  contribuito al supporto Linux per queste schede. Grazie a William
  Burrow che scrisse un HOWTO su BTTV, che ho utilizzato per migliorare
  questa guida.

  Nello scrivere questo HOWTO ho utilizzato pesantemente la
  documentazione su bttv e xawtv.


  11..44..  LLiibbeerraattoorriiaa


  Usate le informazioni in questo documento a vostro rischio e pericolo.
  Mi dissocio da qualsiasi problema legale che nasca dal contenuto di
  questo documento. Usate i concetti, esempi, e/o gli altri contenuti di
  questo documento a vostro rischio.

  Tutti i diritti d'autore sono, se non diversamente specificato,
  detenuti dai rispettivi autori. L'uso di un termine in questo
  documento non deve essere considerato come violazione di un marchio
  depositato.

  Nominare prodotti particolari o marche non deve essere visto come una
  forma pubblicit. Vi raccomando fortemente di fare i backup del vostro
  sistema prima dell'installazione e di continuare a farne ad intervalli
  regolari.



  22..  RReeqquuiissiittii hhaarrddwwaarree


  Dal README del pacchetto bttv:

  Bttv  un driver per schede di acquisizione video basate su chip della
  famiglia Bt848 di Conexant ( <http://www.conexant.com>).  Questa
  famiglia comprende Bt484, Bt484A, Bt849 e Bt879.  Le uniche differenze
  che esistono fra le varie schede dei vari produttori consistono nei
  sintonizzatori e nei componenti aggiuntivi adottati.  Per esempio,
  alcune schede della Hauppauge hanno dei chip addizionali per il
  televideo e per la decodifica del suono. Solo alcuni di questi
  componenti sono supportati da bttv. Anche il tipo ed il numero degli
  ingressi pu variare.


  Sono supportate le seguenti schede:


    AAvveerrMMeeddiiaa TTVV9988

       <http://www.aver.com/products.html>



    AAVVeerrMMeeddiiaa TTVV--PPhhoonnee

       <http://www.aver.com/lite/products/avertvphone.html>



    DDiiaammoonndd DDTTVV22000000

       <http://www.diamondmm.com/products/current/dtv-2000.cfm>



    HHaauuppppaauuggee WWiinn//TTVV ppccii (e altre schede Hauppauge)

       <http://www.hauppauge.com/>



    IIDDSS IImmaaggiinngg FFAALLCCOONN

       <http://www.ids-imaging.de/>



    LLiiffeevviieeww FFllyyvviiddeeoo IIII

       <http://www.lifeview.de/lifeview/html/produkte.htm#karte>



    MMaattrriixx VViissiioonn MMVV--DDeellttaa

       <http://www.matrix-vision.de/>



    mmiirrooVVIIDDEEOO PPCCTTVV

       <http://www.pinnaclesys.com/>



    OOsspprreeyy--110000

       <http://www.mmac.com/products/osprey/osprey100.html>



    SSTTBB TTVV PPCCII

       <http://www.stb.com/products/multimedia/tvpci/tvpci.html>



    TTeerrrraatteecc TTEERRRRAA TTVV++


       <http://www.terratec.de/produkte/terratv/terratv_info.htm>



    VViiddeeoollooggiicc CCaappttiivvaattoorr PPCCII

       <http://www.videologic.com/Productinfo/capt_pci.htm>



  Se conoscete altre schede che funzionano, scrivetemi cosicch io possa
  aggiungerle nella prossima revisione di questo documento.


  33..  RReeqquuiissiittii SSooffttwwaarree


  Per utilizzare queste schede TV sotto Linux, avrete bisogno
  dell'appropriato driver. I driver bttv sono parte del kernel dalla
  versione 2.2.0.


  In alternativa, potete utilizzare l'ultima versione del pacchetto bttv
  insieme ad un kernel 2.0.35 o superiori. Questa soluzione per non
  sempre funziona correttamente. Le versioni pi aggiornate di questo
  pacchetto sono rese disponibili da Gerd Knorr  <http://www.in-
  berlin.de/User/kraxel/xawtv.html>, il quale ha aggiunto anche il
  supporto per diversi chip audio tra cui il TEA6300, TDA8425 e il
  DPL3518.

  Se siete nuovi nel mondo dei driver bttv, vi suggerisco di cominciare
  ad utilizzare i driver compresi nell'ultimo kernel. Se avete problemi,
  oppure se la vostra scheda non  supportata, provate con la
  distribuzione di bttv versione 0.6 oppure con la versione 0.7 di Gerd
  Knorr.


  Questo documento si basa principalmente sui driver del kernel versione
  2.2.14, con qualche cenno alle caratteristiche disponibili nel
  pacchetto bttv versione 0.6.  La versione 0.7 non  trattata siccome
  si trova attualmente in fase di sviluppo.


  44..  CCoonnffiigguurraazziioonnee ddii ssiisstteemmaa


  44..11..  IInnssttaallllaazziioonnee HHaarrddwwaarree

  _(_G_r_a_z_i_e _a _W_i_l_l_i_a_m _B_u_r_r_o_w _p_e_r _q_u_e_s_t_a _s_e_z_i_o_n_e_._)


  Se non ve la sentite di aprire il vostro computer, assicuratevi di
  aver letto questo HOWTO per intero e di aver preso nota delle
  caratteristiche tecniche della vostra scheda, come il tipo di
  sintonizzatore ed il modello dei chip.  Successivamente potrete
  affidarvi ad una persona in grado di installare la vostra scheda per
  voi.


  Altrimenti aprite il vostro computer ed installate la scheda in uno
  slot libero. Possibilmente lo slot dovrebbe supportare il PCI bus
  transfer ed il PCI bus mastering. Consultate il manuale della scheda
  madre per ulteriori informazioni.


  Per quanto riguarda il suono, esistono diversi modi per collegare la
  vostra scheda di acquisizione video alla vostra scheda sonora.  Un
  metodo consiste nel collegare internamente i due dispositivi
  attraverso il cavetto audio del CD-ROM, che dovr essere inserito
  nell'ingresso della scheda video, la quale dovr essere a sua volta
  collegata alla scheda sonora o ad un sintonizzatore.  Un altro modo
  consiste nel connettere esternamente i due dispositivi, utilizzando un
  cavetto dotato di due jack da 1/8 di pollice.  Questo cavo andr
  inserito nell'uscita esterna della vostra scheda TV e nell'ingresso
  esterno della vostra scheda audio.  Se non vi interessano questi tipi
  di collegamento potrete sempre collegare delle casse all'uscita della
  vostra scheda TV.  Alcune schede basate su chip bt878 non sono dotate
  di connettori audio, in quanto utilizzano il bus PCI per trasferire i
  dati audio.  Attualmente non vi sono supporti per questa tecnologia.

  Per verificare se la scheda funziona correttamente sar necessaria una
  sorgente video. Molte schede supportano ingressi Composite Video, S-
  Video e RF. Normalmente esiste un connettore per ogni tipo di
  ingresso.



  44..22..  CCoonnffiigguurraazziioonnee ddeell kkeerrnneell



  Il vostro kernel deve essere configurato correttamente per supportare
  la vostra scheda. Molte distribuzioni recenti sono gi dotate di tutti
  i moduli necessari precompilati, cos se trovate i moduli videodev.o,
  bttv.o e tuner.o sotto /lib/modules/2.x.x/misc, dovreste essere pronti
  per provare.

  Se non li trovate, dovrete ricompilare il kernel con

  CONFIG_VIDEO_DEV


  e

  CONFIG_VIDEO_BT848



  abilitati, meglio se come moduli. Se avete dubbi per quanto riguarda
  la compilazione del kernel date un'occhiata al Linux Kernel HOWTO (
  <http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html>).



  44..33..  CCoommee uussaarree ii ppaacccchheettttii vveerrssiioonnee 00..66..xx


  Se intendete utilizzare i pacchetti della serie 0.6.x, dovrete prima
  scaricare il file in formato tar da Internet.  Per scomprimerlo
  eseguite il seguente comando

  tar -xvzf bttv-0.6.x.tar.gz

  poi entrate nella directory appena creata. Se non siete root dovrete
  lanciare 'su' poi potrete digitare

  make

  nella directory principale per creare i driver. Dopo aver compilato i
  moduli potrete lanciare


  make install

  per installarli. In fine, digitate

  /sbin/depmod -a

  per aggiornare le dipendenze dei moduli.



  44..44..  FFiillee ssppeecciiaallii ssoottttoo //ddeevv


  La prossima cosa da verificare  l'esistenza dei file di dispositivo
  sotto /dev. Digitate ls /dev/video*; ls /dev/radio* per vedere se i
  file esistano gi. Se non  cos dovrete crearli.  Tutti i file di
  dispositivo di cui abbiamo bisogno hanno 81 come major number, mentre
  il minor number dipende dal dispositivo specifico (video, radio,
  ecc.). Per informazioni relative alla programmazione consultate le
  Video4Linux API (
  <http://roadrunner.swansea.uk.linux.org/v4lapi.shtml>).


  Nella directory dei driver del pacchetto bttv esiste uno script
  chiamato MAKEDEV che creer i dispositivi automaticamente.  Se
  possedete solo una scheda TV potrete creare i dispositivi anche a
  mano.  Entrate come root e digitate:

  mknod /dev/video0 c 81 0

  chmod 666 /dev/video0

  ln -s /dev/video0 /dev/video


  mknod /dev/radio0 c 81 64

  chmod 666 /dev/radio0

  ln -s /dev/radio0 /dev/radio


  Esistono anche dispositivi videotext e VBI che hanno bisogno di un
  device file (attualmente sono ancora molto pochi).  Digitate:

  mknod /dev/vtx0 c 81 192

  chmod 666 /dev/vtx0

  ln -s /dev/vtx0 /dev/vtx


  mknod /dev/vbi0 c 81 224

  chmod 666 /dev/vbi0

  ln -s /dev/vbi0 /dev/vbi


  44..55..  CCaarriiccaarree ii mmoodduullii


  Il driver bttv offre molti moduli diversi, ognuno dei quali  dotato
  di molte opzioni differenti. Per far funzionare correttamente il
  driver sar quindi necessario provare i moduli con le relative opzioni
  finch tutto non funzioner a dovere.  Siccome esiste una remota
  possibilit di mandare in crash il vostro sistema vi consiglio di
  digitare

  sync; sleep 1; sync

  per scaricare i buffer sul disco prima di procedere. Successivamente
  potrete lanciare insmod come root per provare a caricare i moduli.  I
  primi due moduli solitamente non danno problemi, in quanto non
  necessitano di opzioni:

  insmod videodev

  insmod i2c

  Ora siete pronti per caricare il driver bttv:

  modprobe bttv

  Di default, il modulo bttv tenter di rilevare il modello della vostra
  scheda. Date un'occhiata a /var/log/messages per vedere se  stata
  rilevata.  Se il modulo non ha rilevato automaticamente la vostra
  scheda, potrete aggiungere l'opzione card=n all'ultimo comando, dove n
  sta per il tipo di scheda elencato di seguito (i tipi dal 0 al 19 sono
  quelli supportati dai driver del kernel, quelli dal 20 al 27
  appartengono invece al pacchetto bttv-0.6.4h). Se la vostra scheda 
  dotata di funzionalit radio potrete aggiungere l'opzione radio=1 per
  attivarle.

  ______________________________________________________________________
     card=n      tipo di scheda
                    0:  Auto-Detect
                    1:  Miro
                    2:  Hauppauge (old bt848 boards)
                    3:  STB
                    4:  Intel
                    5:  Diamond
                    6:  AVerMedia
                    7:  MATRIX Vision MV-Delta
                    8:  FlyVideo
                    9:  TurboTV
                    10: Hauppauge (new bt878 boards)
                    11: MIRO PCTV pro
                    12: Terratec/Vobis TV-Boostar
                    13: Newer Hauppauge WinCam (bt878)
                    14: MAXI TV Video PCI2
                    15: Terratec TerraTV+
                    16: Aimslab VHX
                    17: PXC200
                    18: AVermedia98
                    19: FlyVideo98 (newer FlyVideo cards)
                    20: Zoltrix TV-Max
                    21: iProTV
                    22: ADS Technologies Channel Surfer TV
                    23: Pixelview PlayTV (bt878)
                    24: Leadtek WinView 601
                    25: AVEC Intercapture
                    26: LifeView FlyKit w/o Tuner
                    27: Intel Create and Share PCI
  ______________________________________________________________________



  Poi caricate il modulo del sintonizzatore, con

  modprobe tuner type=n

  Probabilmente dovrete guardare direttamente sulla vostra scheda TV per
  scoprire il tipo di sintonizzatore di cui  dotata.  Alcune schede
  (Miro e Hauppauge) permettono il rilevamento automatico del
  sintonizzatore, ma a volte sar necessario specificarlo ugualmente.
  Il sintonizzatore dovrebbe riportare la marca, inoltre potrete
  osservare sui cristalli (piccoli cilindretti di alluminio) sei si
  tratta di un sintonizzatore PAL o NTSC. Per i PAL i cristalli sono
  marchiati 28.xxxMHz (dove xxx sono 3 numeri), gli NTSC invece
  riportano 35.xxxMHz.  Una volta identificato il sintonizzatore potrete
  scegliere il valore appropriato dalla seguente tabella (i tipi 8 e 9
  sono inclusi solo nel pacchetto bttv-0.6.4h):


  ______________________________________________________________________

    type=n          Tipi di sintonizzatore:
                    0: Temic PAL tuner
                    1: Philips PAL_I tuner
                    2: Philips NTSC tuner
                    3: Philips SECAM tuner
                    4: no tuner
                    5: Philips PAL tuner
                    6: Temic NTSC tuner
                    7: Temic PAL tuner
                    8: Alps TSBH1 NTSC tuner
                    9: Alps TSBE1 PAL tuner
  ______________________________________________________________________



  Infine, inserite i moduli per il sonoro. Probabilmente dovrete
  verificare nuovamente il tipo di chip sonoro della vostra scheda.
  Ricordate che i driver per TEA6300, TDA8425, TDA9855 e DPL3518 sono
  inclusi solo nel pacchetto 0.6.4h e mancano dalla distribuzione del
  kernel versione 2.2.14.


  modprobe msp3400 o tea3600 o tda8425 o tda9855 o dpl3518 (guardate
  l'appendice per i dettagli)

  Finalmente potrete lanciare la vostra applicazione preferita per
  vedere se tutto funziona correttamente. Se non riuscite a cambiare
  canale probabilmente non avete caricato il modulo del sintonizzatore
  (tuner).  Se invece non sentite alcun suono probabilmente ci sono dei
  problemi con il modulo audio, oppure avete il canale audio settato su
  mute.


  44..66..  AAuuttoommaattiizzzzaarree iill ccaarriiccaammeennttiioo ddeeii mmoodduullii


  Una volta che avete imparato quali moduli e quali opzioni vi servono,
  potrete automatizzare il loro caricamento editando il file
  /etc/conf.modules.  Cos facendo i moduli verranno caricati
  automaticamente ogniqualvolta un programma ne abbia bisogno.  La mia
  configurazione  la seguente:



  ______________________________________________________________________
    # TV
    alias   char-major-81   bttv
    pre-install bttv        modprobe -k tuner; modprobe -k msp3400
    options bttv            radio=1 card=3
    options tuner           type=2
  ______________________________________________________________________



  Assicuratevi di modificare questa configurazione in base ai moduli e
  alle opzioni della vostra scheda (ricordate anche di rilanciare
  /sbin/depmod -a per aggiornare le dipendenze dei moduli).


  55..  AApppplliiccaazziioonnii


  Ora che il vostro kernel, i vostri dispositivi e i vostri moduli sono
  configurati, avrete bisogno di un'applicazione per visualizzare e
  catturare le immagini dalla vostra scheda.  Ce ne sono diverse
  disponibili:


    bbttttvvggrraabb - Applicazione di cattura video

       <http://moes.pmnet.uni-oldenburg.de/bttvgrab/>



    GGnnoommee--oo--VViissiioonn - Visualizzatore per Gnome

       <http://cvs.gnome.org/lxr/source/gnomovision/>


    kkwwiinnttvv - Applicazione TV per KDE

       <http://www.mathematik.uni-kl.de/~wenk/kwintv/>



    wwmmttuunnee - Sintonizzatore radio per Window Maker

       <http://home.pages.de/~fionn/archive/wmtune-1.0_bttv.tar.bz2>



    wwmmttvv - Dock Application per Window Maker

       <http://www.student.uwa.edu.au/~wliang/>



    XXaawwTTVV - Applicazione TV ed utilit varie

       <http://www.in-berlin.de/User/kraxel/xawtv.html>



    XXttTTVV - Semplice programma TV/Video per Linux/X Windows

       <http://home.pages.de/~rasca/xttv/>



  Assicuratevi di leggere tutta la documentazione per ogni applicazione
  che intendete usare. Molte di queste, infatti, prima che possano
  funzionare necessitano di file di configurazione adeguatamente
  modificati!  A causa dei diversi tipi di schede presenti in commercio,
  dovrete trovare il tempo per leggere la documentazione. Molto spesso i
  valori di default di queste applicazioni non funzioneranno per le
  vostre schede.



  66..  AAppppeennddiiccee -- AArrggoommeennttii ppeerr ii mmoodduullii


  Gli elementi preceduti da "*" sono disponibili solo nel pacchetto
  0.6.4h



  ______________________________________________________________________


    videodev.o
            questo  il modulo base di video4linux, tutti
            i driver video si registrano qui.

    i2c.o
            questo  il modulo generico i2c. Serve per gestire
            il bus i2c, tutti i moduli a parte videodev.o lo usano.

            insmod args:
                    scan=1          ricerca dispositivi i2c sul bus
                    verbose=0       zittisce i2c
                    i2c_debug=1     serve per il debugging attraverso syslogd

    bttv.o
            il driver per bt848

            insmod args:
                    remap=adr       rimappa la memoria del Bt848 a adr<<20
                    vidmem=base     indirizzo del frame buffer >>20
                    triton1=0/1     per compatibilit con Triton1
                    pll=0/1/2       impostazione del pll
                                    0: non usa PLL
                                    1: cristalli a 28 MHz
                                    2: cristalli a 35 MHz
                    radio=0/1       supporto radio
                    card=n          tipo di scheda
                                    0:  Auto-Detect
                                    1:  Miro
                                    2:  Hauppauge (schede bt848 pi vecchie)
                                    3:  STB
                                    4:  Intel
                                    5:  Diamond
                                    6:  AVerMedia
                                    7:  MATRIX Vision MV-Delta
                                    8:  FlyVideo
                                    9:  TurboTV
                                    10: Hauppauge (schede bt878 pi nuove)
                                    11: MIRO PCTV pro
                                    12: Terratec/Vobis TV-Boostar
                                    13: Newer Hauppauge WinCam (bt878)
                                    14: MAXI TV Video PCI2
                                    15: Terratec TerraTV+
                                    16: Aimslab VHX
                                    17: PXC200
                                    18: AVermedia98
                                    19: FlyVideo98 (schede FlyVideo pi nuove)
                                    *20: Zoltrix TV-Max
                                    *21: iProTV
                                    *22: ADS Technologies Channel Surfer TV
                                    *23: Pixelview PlayTV (bt878)
                                    *24: Leadtek WinView 601
                                    *25: AVEC Intercapture
                                    *26: LifeView FlyKit w/o Tuner
                                    *27: Intel Create and Share PCI

            remap, card, radio e pll accettano fino a 4 argomenti separati da
            virgola (per schede multiple). I default della scheda e del pll
            sono definiti nel Makefile.

    msp3400.o
            Questo  il driver per il chip sonoro msp34xx. Se avete una scheda
            stereo probabilmente avrete bisogno di questo modulo.

            insmod args:
                    debug=1/2       server per il debugging tramite syslogd.


    *tea6300.o
            Questo  il driver per il chip tea6300. Se avete una scheda stereo
            ma il msp3400 non funziona, provate questo.

            insmod args:
                    debug=1         server per il debugging tramite syslogd.

    *tda8425.o
            Questo  il driver per il chip tda8425. Questo driver fa solitamente
            parte di bttv.o, quindi sei il vostro sonoro funzionava ma ora non
            funziona pi, provate a caricare questo modulo.

            insmod args:
                    debug=1         server per il debugging tramite syslogd.

    *tda9855.o
            Questo  il driver per il chip audio tda9855.

            insmod args:
                    debug=1         server per il debugging tramite syslogd.

    *dpl3518.o
            Questo  il driver per il chip dpl3518a per il Dolby processing.

            insmod args:
                    debug=1         server per il debugging tramite syslogd.

    tuner.o
            Questo  il driver per il sintonizzatore. Avrete bisogno di questo
            a meno che non utilizziate una telecamera o un sintonizzatore esterno.

            insmod args:
                    debug=1         server per il debugging tramite syslogd.
                    type=n          tipo di sintonizzatore:
                                    0: Temic PAL tuner
                                    1: Philips PAL_I tuner
                                    2: Philips NTSC tuner
                                    3: Philips SECAM tuner
                                    4: no tuner
                                    5: Philips PAL tuner
                                    6: Temic NTSC tuner
                                    7: Temic PAL tuner
                                    *8: Alps TSBH1 NTSC tuner
                                    *9: Alps TSBE1 PAL tuner

    i2c_chardev.o
            Definisce un device a caratteri per l'accesso al bus i2c.
            Funziona solo con i kernel 2.1.x, non  compilato di default.
  ______________________________________________________________________



