Utilizzare webcam V4L2 con Flash su Linux

Introduzione

Il supporto per le webcam su Linux non è mai stata una cosa molto semplice. I motivi principali per cui le webcam non sono ben supportate sono principalmente due: la scarsa collaborazione dei produttori di hardware, che dovrebbero fornire almeno le specifiche a chi sviluppa i driver per Linux e il quasi completo disinteresse di chi scrive le applicazioni per l’utente finale (in particolare Microsoft con MSN e Skype che utilizzano entrambi un protocollo proprietario e non documentato).

Da diverso tempo si stanno diffondendo applicazioni scritte in Flash che permettono di utilizzare la webcam: dalle videochat, all’applicazione di Youtube che permette di pubblicare un video registrandolo direttamente, fino ai recenti servizi di streaming video come ad esempio JustinTV e UStream.

Il plugin Flash della Adobe, purtroppo ha iniziato a supportare le webcam su Linux utilizzando il protocollo V4L1 quando ormai la maggior parte di esse funzionava solo con il nuovo protocollo V4L2.

A partire dalla versione 10 di Flash, finalmente la Adobe ha iniziato a supportare il protocollo V4L2, anche se il supporto non è ancora completo. Modelli differenti di webcam infatti utilizzano svariati formati di trasmissione video. Fortunatamente lo sviluppatore che lavora per Adobe si è reso disponibile per ricevere il feedback da parte degli utenti e per implementare questi formati in modo da supportare il maggior numero possibile di webcam. Per chi volesse contribuire è possibile seguire le istruzioni su questa pagina: http://blogs.adobe.com/penguin.swf/2008/07/paparazzi_v2_1.html

gstfakevideo: un workaround per emulare V4L1

Visto che il supporto per le webcam che utilizzano V4L1 è molto piu’ stabile, l’ingegno della community Linux non è stato ad aspettare con le mani in mano. Il metodo utilizzato è basato su quello che veniva usato su Skype per supportare un maggior numero di webcam: in pratica viene creato un device virtuale V4L1 sul quale viene redirezionato l’output della webcam V4L2.

Il codice originale purtroppo aveva bisogno di alcuni aggiustamenti, mi sono permesso quindi di modificarlo e di applicarli. Potete trovare la nuova versione a questo indirizzo: http://www.andreagrandi.it/download/gstfakevideo/gstfakevideo.tar.gz

La compilazione non dovrebbe comportare particolari problemi: è sufficiente eseguire make all’interno della cartella dei sorgenti.

Per testare il funzionamento della webcam è sufficiente esegurie lo script che si trova all’interno della cartella. Verrà avviato Firefox con il supporto per le webcam V4L1. Visitando uno dei siti web che hanno un’applicazione Flash che utilizza la webcam citati all’inizio, sara’ possibile verificarne il corretto funzionamento.

Riferimenti: le istruzioni in questo post sono state in parte prese da questo sito web (in inglese): http://www.jtolds.com/newsletter/2008/7/27/how-to-get-v4l2-devices-to-work-with-flash

What I expect in the future of Maemo Development

In these days I was thinking about: what could be done to improve Maemo Development and power user experience? There are some points that would need to be improved. This little list pretends to be just a starting point. I hope to get some feedback so we can discuss further in the maemo-developers mailing list.

Documentation: Maemo developers use different libraries and toolkit (GTK, libui, ecc…). There is not a common place where I can look for documentation. I’ve to visit each library website and get it. It would be great to have a tool just like Qt Assistant, integrating all documentation, including examples and aggregating external articles using a “live RSS aggregator”.

Kinetic scrolling: I really love Mauku application because of its kinetic scrolling, thanks to the Miaouw library. It would be great to have this kind of scrolling to be part of Hildon UI. Of course I’d love to have Python bindings too 🙂

Eclipse Support: I think Eclipse support should be improved. I’d like to have a tool that makes .deb creation easier so developers can spend more time coding and not packaging applications. I’d like to see a GUI designer integrated into Eclipse (for “integrated” I mean something like Visual Studio GUI designer…. not an external tool like Glade).

Qt Creator: Trolltech (Nokia) just released a preview release of their Qt Creator. A very powerfull IDE to develop Qt/C++ applications. It’s still in alpha release, but… what about integrating Maemo development into it? (Supporting Python development too).

Maemo SAS hosting: sometimes we (well.. me at least 😀 ) need to write an application that uses a server part too and need to expose some API. Maemo.org offers hosting for the project, but what about the server part of the application? It would be fine if developers had the possibility to have the server side hosted by Maemo.org or Nokia.

Better GPS support: the GPS unit shipped with N810 is something unusable yet. I’ve tried using A-GPS too, but position fixing time is still bad, compared to an external GPS/bluetooth receiver. I often have to use my external GPS receiver to use my N810 without problems.

More audio/video codecs: often I’m not able to listen to online radios, streamings ecc… just because of a missing codec for the default Media Player.

These are just some ideas. Please feel free to comment them, I’d like to discuss them together.

Ubuntu 8.10: novità, problemi e soluzioni

Il 30 ottobre 2008 è stata rilasciata la versione 8.10 di Ubuntu. Questa release presenta come al solito moltissime novità per l’utente finale, ma non è esente da alcuni problemi che solitamente riguardano le distribuzioni appena uscite.

Questo articolo vuole essere un riferimento per chi sta utilizzando una versione precedente di Ubuntu Linux o per chi ci si avvicina per la prima volta, in modo che possa essere fatta una scelta in base agli effettivi vantaggi e svantaggi.

Novità per l’utilizzo desktop

Per l’utente desktop di, sono state introdotte alcune caratteristiche che possono facilitarne l’utilizzo in particolare a chi utilizza Ubuntu sui notebook, migliorando anche la sicurezza dei propri dati personali.

Supporto alle connessioni 3G: la versione 0.7 del NetworkManager inclusa in questa release permette di gestire anche le connessioni GPRS/UMTS/HSDPA in maniera piu’ semplice, sia che si utilizzi un modem interno, un dongle USB oppure che ci si connetta utilizzando il proprio cellulare tramite il bluetooth.

Installazione ed avvio da dischi USB: è stato incluso un comodo tool che permette di installare Ubuntu su una chiavetta o un disco USB tramite una semplicissima interfaccia grafica. In questo modo sarà possibile portarsi dietro la propria copia di Ubuntu ovunque si vada e avendo anche la possibilità di salvare le impostazioni ed i propri documenti.

Utente Guest: adesso è possibile lasciare in sospeso la propria sessione utente avviando temporaneamente una seconda sessione ospite per permettere ad esempio ad un nostro amico o collega di controllare la propria posta elettronica o di navigare sul web senza che questo possa curiosare nei nostri documenti o memorizzare file in maniera permanente.

Contenuti BBC: grazie ad un accordo fra la Canonical e la BBC è stato sviluppato un plugin che permette agli utenti di accedere ai contenuti online della BBC tramite Totem Movie Player o Rhythmbox.

Gnome 2.24: questa versione di Gnome incorpora un nuovo client di instant-messaging, migliora il file manger Nautilus introducendo i tab come su Firefox, migliora il supporto ai monitor multipli ed aggiunge alcuni nuovi formati al gestore degli archivi compressi.

Cartella privata cifrata: è possibile creare in maniera molto semplice una cartella privata che viene montata soltanto quando l’utente è loggato nella propria sessione ed il cui contenuto viene cifrato. Questa funzionalità è molto utile per chi ad esempio utilizza Linux in un portatile: in caso di smarrimento del portatile nessuno sarebbe in grado di accedere al contenuto di tale cartella.

X.Org 7.4: questa nuova versione di X.Org consente il riconoscimento di mouse, tastiere e tavolette grafiche a caldo (nel senso che vengono riconosciute non appena si inseriscono, quando il sistema è già avviato).

DKMS: si tratta di un tool sviluppato dalla Dell. Quando una nuova versione del kernel viene rilasciata, tutti moduli vengono automaticamente ricompilati.

Novità per l’utilizzo server

Le novità non mancano anche per chi utilizza Ubuntu come server. Sono stati introdotti sostanziali miglioramenti nel campo della virtualizzazione, per chi sviluppa in Java e nei tool della gestione di sistema.

Virtualizzazione: la versione JeOS di Ubuntu è stata integrata in Ubuntu Server. Si tratta di una versione ridotta di Ubuntu, adatta a girare all’interno delle macchine virtuali. Ubuntu Server è anche ufficialmente supportata come sistema guest su Xen.

Java: Apache Tomcat 6.0 e OpenJDK 6 sono completamente supportati ed incusi nel repository principale di Ubuntu.

Mail Server: sono stati integrati nel repository principale sia ClamAV che SpamAssassin. Questi due programmi permettono di integrare nel server di posta sia il controllo anti-virus che l’anti-spam.

Supporto RAID: dalla versione 8.10 è stato aggiunto il supporto che permette di fare il boot anche da un RAID degradato. Questo significa che se si dovesse rompere uno dei due dischi, verrà chiesto all’utente se si vuole procedere ugualmente al boot, in modo da non dover per forza bloccare quella macchina.

Uncomplicated Firewall: è stato migliorato il supporto al firewall semplificato. Adesso è possibile specificare direttamente il nome del servizio che si vuole aprire o chiudere, senza dover specificare il numero della porta.

I problemi della nuova Ubuntu 8.10

Come ho anticipato all’inizio, puo’ capitare che una nuova release, oltre ad introdurre nuove funzionalità, abbia anche dei problemi sia perchè viene distribuita con versioni piu’ recenti dei vari pacchetti, sia perchè non è stata sufficientemente testata prima di essere rilasciata.

Cerchero’ di riassumere quelli che sono i problemi principali di questa versione, in modo che ogni persona possa capire, a seconda dell’uso che ne fa del PC e a seconda dell’hardware sul quale andra’ ad installare Ubuntu, se questi saranno o no un problema per l’utilizzo quotidiano.

Il lettore CD/DVD mangia le dita (bug #283316): non allarmatevi! Non esce alcun mostro dal lettore a mangiare le vostre dita… Si tratta semplicemente di un bug che fa si che il carrellino del lettore CD venga reinserito troppo velocemente quando si richiede che un CD venga fatto uscire. In pratica si ha meno di un secondo a disposizione per togliere il CD, in caso contrario il carrello verra’ chiuso e dovremo premere manualmente il pulsante di eject.

La sessione di Gnome non viene memorizzata (bug #249373): a causa di un cambiamento nel protocollo utilizzato per salvare la sessione, la maggior parte delle applicazioni (come ad esempio Pidgin, Skype ecc…) non sono piu’ in grado di essere avviate automaticamente quando si salva la sessione. E’ necessario avviarle manualmente dopo ogni login.

La ricezione e l’invio dei files tramite Bluetooth non funziona piu’ con i normali tool (bug #290875): cercando di connettersi ad un dispositivo esterno tramite Bluetooth, per lo scambio dei files, si otterrà un errore. Sono stati introdotti nuovi tool (che non sono ancora completi) ma non vengono installati di default.

Le stampanti condivise con Samba non riescono a stampare quando non è richiesta autenticazione (bug #283811): un bug di CUPS aggiunge ad ogni avvio una riga nel file di configurazione che obbliga a richiedere l’autenticazione per poter stampare e questo impedisce alle applicazioni di stampare.

Il plugin UPnP di Rhythmbox non viene caricato (bug #160592): quando si tenta di abilitare questo plugin dentro Rhythmbox si ottiene un errore e non è possibile quindi attivarlo. Per farlo funzionare occorre installare il pacchetto python-coherence.

Questi sono solo alcuni dei problemi noti della Ubuntu 8.10. Potete trovare la lista completa nella pagina delle release notes: http://www.ubuntu.com/getubuntu/releasenotes/810

La maggior parte di questi problemi riguardano solo alcune particolari configurazioni oppure hardware ben preciso, quindi se il vostro sistema non rientra in uno dei casi che vengono elencati, potete installare la nuova Ubuntu senza alcun timore.

Soluzioni ai problemi della nuova Ubuntu

La maggior parte dei problemi che ho citato sopra, sono stati nel frattempo corretti e sono stati rilasciati i pacchetti aggiornati che verranno inseriti poi nella prossima bug-fix release (presumibilmente la 8.10.1).

Per testare in anteprima le patch che vengono rilasciate, occorre abilitare il repository intrepid-proposed tramite System->Administration->Software Sources->Updates. E’ opportuno specificare che si tratta di patch che sono ancora sotto fase di testing ma che nel 99% dei casi riescono a risolvere il problema.

Un suggerimento che vorrei dare agli utenti con un minimo di esperienza, è quello di non attendere che i bug vengano corretti standosene con le braccia incrociate. Esiste un comodissimo strumento che si chiama Launchpad che Ubuntu utilizza per raccogliere le segnalazioni dei bug nei programmi.

E’ fondamentale che piu’ persone diano il loro feedback su un particolare problema, in modo da aiutare gli sviluppatori a correggerlo nel minor tempo possibile.

Conclusioni

Volendo fare il punto della situazione, la Ubuntu 8.10 introduce interessanti novità per l’utente finale, ma anche diversi bug.

Se si utilizza Ubuntu in ambienti critici, il mio consiglio è quello di attendere almeno un mesetto prima di fare l’aggiornamento, in modo che almeno i problemi piu’ gravi possano essere risolti.

Per tutti gli altri problemi ricordo quanto sia importante dare il proprio contributo. Non è necessario avere competenze tecniche da programmatori o hacker per migliorare una distribuzione. Occorre solo armarsi di pazienza e saper dialogare con gli sviluppatori per segnalare in tempi brevi i problemi ed attendere che vengano corretti.

Riferimenti

La recensione delle novità e dei problemi della nuova Ubuntu 8.10 è stata possibile sia grazie all’utilizzo diretto (è la distribuzione che uso sul PC fisso) sia grazie alla lettura di alcuni post e alle release notes ufficiali. Per approfondimenti: