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:
Il driver include alcuni moduli che si possono riutilizzare (videocodec, saa7110, saa7185/87, zr36016/15, zr36050)
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:
Processore: PIII Celeron 900Mhz
Scheda madre: Siemens D1107 (chipset Intel 440BX)
Scheda grafica: Matrox MGA G200 AGP
Altre schede PCI/ISA: Rete Realtek 8139, Audio SBLive, Audio SB64Gold
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"):
Per il kernel 2.4.x:
General setup ---> [*] PCI support
Character devices ---> I2C support ---> <M> I2C support
Multimedia devices ---> <M> Video For Linux
Per il kernel 2.6.x:
Bus options (PCI, PCMCIA, EISA, MCA, ISA) ---> [*] PCI support
Devices drivers ---> I2C support --> <M> I2C support
Multimedia devices ---> <M> Video For Linux
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.
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):
Di seguito invece ci sono i link per i vari datasheet (in formato pdf):
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.