Aggiornamento: guida ancora valida per Ubuntu 9.04, Jaunty Jackalope e Ubuntu 9.10 Karmic Koala.
Scenario
La mia compagna è partita per uno stage e per mantenerci in contatto utilizziamo entrambi Skype.
Purtroppo, sin dal primo tentativo di effettuare una videochiamata, la mia webcam mostrava una laconica schermata verde. Questo ovviamente faceva adirare non poco la mia ragazza impossibilitata dal vedermi, maledicendo ogni forma di Linux. Che poi, dico io, come si fa a non amarlo il pinguino anche se ti fa arrabbiare!

Bestemmie a parte, ho tentato di vederci chiaro e sono arrivato alla radice del problema trovando una soluzione che mi permettesse di non essere lasciato in tronco.
Inoltre sarebbe stato difficile spiegare agli amici di essere stato abbandonato a causa di un bug di Ubuntu, anche se con una storia del genere finirei sicuramente in homepage su Digg…
Il bandolo della matassa
In realtà tutto è ricollegato al modo in cui è cambiata la gestione delle webcam con il kernel fornito in Ubuntu Intrepid, esattamente il 2.6.27.
Come spiega Hans de Goede sul suo blog, la maggior parte delle cam supportate dal nuovo driver gspca usano una compressione per i dati basata su una varietà di algoritmi proprietari, che nessuna applicazione nativamente sa come gestire. Il vecchio driver risolveva il problema operando una conversione di formato all’interno del kernel, ma questa caratteristica è stata rimossa nella nuova versione in quanto ritenuta una soluzione potenzialmente pericolosa e non elegante.
Lo stesso Hans dunque si è rimboccato le maniche partorendo libv4l che ristabilisce l’ordine naturale delle cose.
Come fare
Purtroppo il pacchetto distribuito sul sito ufficiale di skype non è stato patchato per usare tale libreria, per cui è necessario un workaround al fine di evitare che gli utilizzatori di Linux sparsi per tutto il mondo rimangano tristemente single.
Su Ubuntu Intrepid è necessario innanzitutto installare, se già non presente, libv4l o lib32v4l ( amd64) e assicurarsi di aver prima rimosso qualsiasi precedente versione.
Il repository di Stéphane Marguet contiene una versione fresca fresca di impacchettazione, per tutte le altre distribuzioni rivolgersi al proprio spacciatore di pacchetti di fiducia o compilare da sorgente.
Il consiglio è quello di aggiungere il repository, installare o aggiornare solo libv4l e poi commentare la riga corrispondente nel sources.list per evitare che vengano coinvolti altri pacchetti nell’aggiornamento. Non inserisco il link diretto perché il software è in continua evoluzione.
Adesso è necessario procurarsi skype dai repository Medibuntu, che stando a quanto recita il changelog integra l’hack necessario al corretto funzionamento della webcam
skype (2.0.0.72-0medibuntu4) intrepid; urgency=low
* Add a hack for libv4l (LP: #260918):
- debian/skype.wrapper.in, debian/rules: rename the orig skype binary and
add a wrapper to call it with LD_PRELOAD
- debian/control: depends on lib32v4l-0 [amd64], libv4l-0 [!amd64].
-- Lionel Le Folgoc <mrpouit@ubuntu.com> Fri, 17 Oct 2008 20:25:47 +0200
ed il gioco è fatto!
L’alternativa
Se non doveste aver successo, disinstallate questa versione e installate quella del sito ufficiale e provate a far partire il programma con la seguente sintassi
LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so skype
verificando poi il funzionamento della webcam. Se tutto è andato a buon fine, allora possiamo creare un piccolo script che ci permetta di evitare di scrivere manualmente la stringa di cui sopra.
I comandi da lanciare in sequenza sono
cd /usr/bin
sudo mv skype skype.real
gksudo gedit skype
Si aprirà la finestra di Gedit, all’interno della quale dovremo incollare
#!/bin/sh
LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so /usr/bin/skype.real "$@"
Salviamo e rendiamo eseguibile il tutto
sudo chmod +x skype
testiamo il tutto ancora una volta, stavolta usando il normale collegamento nel menu.
L’ho scampata bella
Adesso con la mia compagna va tutto liscio, niente più litigi e la qualità della vita è migliorata sensibilmente.

Per caso qualcuno ha anche una patch per sistemare i grossi bachi presenti nel sistema chiamato donna?