Friday, May 12, 2006

Costruire un Media Center con Linux e Freevo (prima parte)

Un Media Center (MC) e' un nuovo tipo di computer pensato per il vostro soggiorno piuttosto che per il vostro ufficio. Ci sono vari modelli di MC disponibili sul mercato e la maggiorparte di questi sono basati su una versione ad-hoc di Windows XP chiamata perlappunto Windows Media Center Edition.

Diversamente da un classico personal computer, l'interazione con un MC avviene principalmente attraverso il telecomando e lo schermo televisivo. Naturalmente e' possibile aggiungere al MC una tastiera senza fili per effettuare la scrittura di testi qualora fosse necessario.

Il tipico caso d'uso di un MC coinvolge uno o piu' utenti che nel soggiorno (o dovunque sia stato installato l'impiato radio-televisivo domestico) vogliono fruire di contenuti multimediali che possono arrivare da fonti disparate quali DVD, Video CD, fotocamere e videocamere digitali, radio, TV analogiga o digitale terrestre e/o satellitare, rete, disco rigido etc. A tutto questo si affianca la possibilita' di sfruttare la rete ed il processore per svolgere altre attivita' come ad esempio navigare sul Web o leggere la posta elettronica. Naturalmente tutte le applicazioni dovranno avere un'interfaccia utente che permette il controllo tramite telecomando e che sia ben visualizzata su uno schermo TV

Gli ingredienti del nostro MC sono di 3 tipi: hardware, software e connessione. La connessione alla rete Internet dovra' essere preferibilmente a banda larga e con tariffa flat. Utilizzare il modem a 56K non garantisce una banda sufficiente per la fruizione di contenuti multimedia mentre una ADSL a consumo sarebbe troppo costosa. ADSL flat 2Mb e' una scelta ragionevole.

Per quanto riguarda l'hardware di base abbiamo bisogno di: scheda madre, CPU, RAM, disco, scheda video con TV/OUT, scheda audio, scheda sinto TV/FM, scheda di rete, lettore CD/DVD e telecomando con apposito sensore. Naturalmente come componenti opzionali possiamo prevedere un masterizzatore DVD, un lettore di memorie per macchine fotografiche digitali, una catena amplificatore/diffusori all'uscita della scheda audio etc. etc.



Per realizzare un MC veramente performante sarebbe ideale utilizzare componenti nuovi come ad esempio un Pentium4 con 1GB di RAM. In realta' in questo caso voglio risparmiare denaro utilizzando vecchi componenti ricavati da PC della generazione precedente. Questo mi permette di dimostrare che il nostro vecchio hardware che magari ci sembra obsoleto puo' trovora una nuova collocazione spostandosi dall'ufficio al salotto. La configurazione che propongo qui prevede:

* Scheda Madre Microstar xxyy con audio on-board
* CPU PIII a 800MHz
* 320 MB RAM

* Disco rigido da 20GB (si', e' piccolo ma voi potete comprarne uno da 100GB se volete)
* Scheda Video Matrox Millenium G400 Dual Head
* DVD/CD Combo Pionieer
* Scheda di rete PCI 10/100MB
* Telecomando Technisat TS35 con apposito sensore per porta seriale
* Scheda Hauppauge WinTV GO



All'interno della galassia delle distro Linux ho scelto la Fedora Core 3. Perche'? Le ragioni sono assolutamente opinabili. Ho conosciuto Linux distribuito come RedHat 4 o qualcosa del genere e non mi sono mai allontanato troppo.

A meno che non vogliate comprare uno schermo VGA LCD da 26'' sarete costretti ad utilizzare il vostro televisore come 'terminale' per il media center. Questo puo' essere fonte di problemi dato che avrete bisogno di una scheda video con il TV-out (facilmente reperibile) e avrete bisogno di attivare da Linux la funzione TV-out (cosa non banale).

Dopo qualche indagine in rete ho scoperto che fra le vecchie schede supportate da Linux una delle piu' quotate e' la Matrox Millenium G400 Dual Head. A questo scopo me ne sono procurata una usata. Il fatto che ci sia una certa documentazione su questa scheda non significa che sia facile ottenere il TV-out, anzi.

La documentazione di riferimento per l'uso di freevo con questa scheda la trovate qui. Fondamentalmente, avete bisogno di 3 strumenti:

* i sorgenti del kernel da ricompilare
* il tool fbset
* il tool matroxset

Dovete ricompilare il kernel in modo da usare il device framebuffer. Non sto qui a spiegare come ricompilare il kernel perche' e' un argomento abbastanza complesso. Inoltre, sappiate che in caso di errori potreste causare il blocco del vostro sistema al reboot. Quindi questo passo e' solo per gli esperti o per chi se la sente di rischiare. Il blocco eventuale non e' irrimediabile, e' sempre possibile fare il boot con un vecchio kernel e ripartire da li, ma la cosa richiede una minima esperienza. Nel caso di Fedora potete trovare utili indicazioni riguardo la compilazione del kernel su questo sito. Come settaggi per il make del kernel avete bisogno di:

Code maturity level options > Prompt for development...
Processor type and features > MTRR support
Character Devices > I2C support > I2C support
Character Devices > I2C support > I2C bit-banging interfaces
Character Devices > I2C support > I2C device interface
Character Devices > Matrox g200/g400
Console drivers > Frame-buffer support > Support for frame buffer devices
Console drivers > Frame-buffer support > Matrox acceleration
Console drivers > Frame-buffer support > G100/G200/G400/G450 support
Console drivers > Frame-buffer support > Matrox I2C support
Console drivers > Frame-buffer support > G400 second head support

In realtà alcuni di questi settaggi per il kernel 2.6 sono in posizioni diverse rispetto a quelle riportate qui che sono valide per il kernel 2.4. Comunque con la funzione 'search' di menuconfig dovreste localizzarli tutti. Personalmente ho compilato in modo 'statico' ogni cosa riguardante la matrox e funziona. Probabilmente anche l'opzione 'modulo' funziona ma non ho provato.

Dopo il reboot con il nuovo kernel

matroxset -f /dev/fb1 -m 0 # this disconnects fb1 from outputs
matroxset -f /dev/fb0 -m 3 # this connects fb0 to both outputs
matroxset -f /dev/fb0 -o 1 1 # this sets fb0 to PAL output

A questo punto la dual head manda il segnale al TV. Con fbset aggiustate la risoluzione:

fbset -fb /dev/fb0 -xres 800 -yres 600






No comments: