AVMaster cardFAST AV Master driver per Linux

View this page in English In English


1. Introduzione - Storia
2. Cosa è stato fatto, cosa c'è da fare
3. Hardware di test
4. Sistema operativo e software
5. Installazione
6. Bug
7. Sviluppo in corso...
8. Download
9. Licenza
10. Documentazione per lo sviluppo
11. Contatti
12. Ringraziamenti

1. Introduzione - Storia

Sto cercardo di fare un driver per la AVMaster che funzioni con il kernel Linux.
Fast Multimedia
(che è diventata Dazzle e adesso è Pinnacle) non ha mai voluto fornire alcuna documentazione riguardo questa - a mio giudizio ottima - scheda di acquisizione video.
Michel Stickel (che desidero ringraziare moltissimo per il supporto che mi ha fornito) ha scritto nel 2000 un driver alfa per l'AVMaster, che però era limitato a "giocare" con il bus I2C e quindi con i soli decoder/encoder video. Il driver non ha avuto più nessuna evoluzione.
Allora ho preso il driver unificato del chipset PCI Zoran 36057 ed ho fatto un fork per l'AVMaster. La scelta di questo driver si è basata principalmente su due aspetti:
  1. Il driver include alcuni moduli che si possono riutilizzare (videocodec, saa7110, saa7185/87, zr36016/15, zr36050)
  2. Il driver ha il supporto sia per V4L che per V4L2.
L'idea è quella di sostituire le parti specifiche del chipset originario PCI zr36057 con quelle del chipset PCI della AVMaster saa7145.
Nel 2008 ho ricevuto da un caro amico le informazioni necessarie di tutti i chipset: a sviluppo ultimato, sarà finalmente possibile avere il driver funzionante al 100%!!

2. Cosa è stato fatto, cosa c'è da fare

Ad oggi (28 ottobre 2008) l'unica cosa che "quasi" funziona è l'overlay video. Il "quasi" è d'obbligo: per vedere qualcosa occorre prima avviare Windows (scarica il driver per Win95b/98: AVMaster_driver_Win98.zip) e poi resettare il PC senza spegnere. Questo perché all'avvio è abilitato il bus video che proviene dall'FPGA, e questo va in conflitto con il chipset di ingresso video SAA7110.
Non ho testato l'output video (SAA7187), ma credo che dovrebbe funzionare.
Da fare rimane quindi tutta la gestione della parte di codifica/decodifica JPEG e la parte audio (vedi più avanti la documentazione per una descrizione dettagliata). Adesso come adesso si può usare solo come televisore...

3. Hardware di test

Il sistema con cui sto sviluppando e facendo i test è il seguente:
Non credo che le altre informazioni siano influenti (se però vuoi sapere qualcos'altro, contattami).

4. Sistema operativo e software

Il sistema operativo utilizzato è GNU/Linux x86, distribuzione Slackware 12.1. Il driver è stato testato con il kernel Linux 2.6.24 (V4L2); dovrebbe essere compatibile anche con il vecchio kernel 2.4, ma non è stato più provato dal 2004.
Il software utilizzato per i test di overlay è xawtv. Per farlo funzionare ho dovuto commentare la riga Option "omit xfree86-dga" in /etc/X11/XF86Config (credo però che questa opzione sia specifica della Slackware).
Purtroppo lavvideo degli mjpeg-tools non funziona: sembra che non riesca a recuperare le informazioni necessarie da X per il frame buffer, e quindi il driver dell'AVMaster non può fare l'overlay.
Le risoluzione video testate sono: RGB15, RGB16, RGB32. RGB24 e YUV422 non le ho testate, il primo perchè la mia scheda grafica non lo supporta, il secondo perchè non ho il software che faccia l'overlay in YUV422 (o meglio, xawtv -xv non usa XVideo per l'overlay, probabilmente sbaglio qualcosa io).

5. Installazione

Devi avere installato i sorgenti del kernel e devi avere abilitato nel kernel almeno le seguenti opzioni (puoi accedere alle opzioni del kernel andando nella directory sorgente - solitamente /usr/src/linux o /usr/src/linux-<versione_del_kernel> - e digitando da root "make menuconfig" or "make xconfig"):
Solitamente queste opzioni sono già abilitate nei kernel standard delle distribuzioni più comuni.
Poi occorre scompattare il codice sorgente e compilarlo:
	# tar xzvf avmaster-0.0.3.tar.gz
# cd avmaster-0.0.3
# make
Infine devi entrare come root e installare i moduli appena compilati:
	# su
Password:
# make install
Se hai abilitato anche l'opzione "PCI hotplug" e la tua distribuzione ha gli script per supportarla (Slackware li ha), il modulo avmaster i quelli relativi (saa7110, saa7187, zr36015, zr36050, videodev, videocodec, i2c-core) saranno caricati automaticamente al prossimo riavvio.
Se vuoi caricarli manualmente senza riavviare, puoi semplicemente digitare il comando (da root):
	# modprobe avmaster
Poi puoi avviare da utente normale l'applicazione TV (io uso xawtv) e puoi vedere l'overlay video sul tuo PC (dopo aver ribostrappato da Windows).

6. Bug

Ce ne saranno un vagonata! Però, dai test che ho fatto, ne ho trovato solo uno che non sono riuscito a correggere: se si passa velocemente da modalità full-screen a modalità normale, il sistema operativo si impalla completamente. Generalmente l'overlay continua a funzionare, ma credo che usare un computer solo come televisore non sia una grande idea...
Prima di fare qualsiasi prova, date sempre il comando sync in modo da non perdere eventuali dati  (cosa che invece è capitata a me: ed erano due file sorgenti del driver). Se è possibile usate un file system journaled, in modo che anche se vi dimenticate di fare il sync almeno il file system rimane integro e al massimo perdete le ultime modifiche fatte. Con tune2fs potete convertire in modo molto semplice un ext2 con un ext3.

7. Sviluppo in corso...

Attualmente sto sviluppando il codice per controllare l'FPGA e il DSP. Visto che lo faccio a tempo perso, occorre un po' di pazienza...

8. Download

Qui trovi i sorgenti: avmaster-0.0.3.tar.gz. Non ci sono i moduli precompilati, sarebbe troppo oneroso per me prepararli per le varie distribuzioni e le varie versioni del kernel. Se però vuoi prepararli tu, spediscimeli che li inserisco in questa sezione. Preferibilmente spediscimi solo i binari relativi al kernel standard della distribuzione con la quale hai testato i moduli.

9. Licenza

Questo programma è software libero; puoi ridistribuirlo e/o modificarlo secondo i termini della GNU General Public Licence (Licenza Pubblica Generica) come è pubblicata dalla Free Software Foundation; o la versione 2 della Licenza, o (a tua scelta) una versione successiva.

Questo programma è ditribuito nella  speranza che sia  utile, ma SENZA ALCUNA GARANZIA; senza neppure la garanzia implicita di NEGOZIABILITÀ o di APPLICABILITÀ PER UN PARTICOLARE SCOPO. Si veda la GNU General Public Licence per avere maggiori dettagli.

10. Documentazione

Ho analizzato la scheda dell'AVMaster cercando di rifare uno schema dei collegamenti fisici. Non fateci troppo affidamento, è solamente uno schema indicativo. Quello che ne è venuto fuori è il seguente (scarica in formato sxd):
Schema a blocchi della FAST AV Master


Di seguito invece ci sono i link per i vari datasheet (in formato pdf):
Chipset
Produttore
Descrizione
Altro
SAA7145
Philips
PCI Multimedia Bridge
formato sxw
SAA7110A
Philips
Video decoder (input)

SAA7187
Philips
Video encoder (output)

ZR35015
Zoran
Color space/raster to block converter

ZR36050
Zoran
JPEG image compression processor

AD1843
Analog Devices
Audio input/output
Engineer note
ADSP2105
Analog Devices
DSP (Digital Signal Processor)
Application note
A1280XL
Actel
FPGA (Field Programmable Gate Array)
High-Reliability
Programming

Altri datasheet che possono essere utili come comparazione con i driver esistenti:
Chipset
Produttore
Descrizione
Altro
SAA7146
Philips
PCI Multimedia Bridge with HPS
driver
SAA7185
Philips
Video encoder (output)
driver zoran
ZR35016
Zoran
Color space/raster to block converter
driver zoran
ZR36057
Zoran
PCI Multimedia Controller
driver zoran


Qui puoi scaricare il setup completo per installare il driver su Windows 95b e 98 (versione 2.5 build 0017): AVMaster_driver_Win98.zip

11. Contatti

Io sono Luca Bonissi, sono un programmatore, appassionato da GNU/Linux (e il software libero in generale) e ai montaggi audio/video. Per qualsiasi cosa relativa all'AVMaster, GNU/Linux e affini, contattami senza problemi

12. Ringraziamenti

Desidero ringraziare prima di tutti Michael Stickel, senza il quale la stesura di questo driver non avrebbe avuto nemmeno inizio. Mi ha fornito il preziosissimo manuale del chipset SAA7145 e soprattutto mi ha dato lo "speranza" che l'AVMaster poteva funzionare sotto GNU/Linux. Grazie infinite anche a M. che mi ha fornito informazioni preziose sulla gestione dei chipset.
Inoltre i miei ringraziamenti vanno al team che cura il driver unificato Zoran, al team degli mjpeg-tools, ad Alessandro Rubini per la sua preziosa documentazione riguardo ai Linux Device Driver e a tutti quelli che hanno sviluppato qualche parte che da me utilizzata.



Ultima modifica: 28 ottobre 2008