Un mio amico, utente di GNU/Linux nonché proprietario di un Dell Inspiron 6400 (ma perchè si devono chiamare tutti uguali!?!), ha lamentato ultimamente una scarsa connettività senza fili rispetto alle stesse condizioni con windoze. Addirittura ad alcune reti aperte non riusciva proprio a connettersi!

Ho pensato di provare ad usare il driver “ufficiale” per windoze tramite ndiswrapper, rimuovendo e “blacklistando” il modulo bcm43xx, ed in un batter d’occhio il computer era nuovamente connesso (ndiswrapper mi sorprende tutte le volte!).

Visto che c’ero, ho fatto l’avanzamento di versione (o meglio, ho reinstallato spianando la root, tanto la home è su una partizione a sè) e lì sono cominciati i problemi: lo stesso metodo usato poco prima con Gutsy, adesso su Hardy non funzionava più!
Controllando, mi sono accorto che il modulo bcm43xx non veniva nemmeno caricato ed al suo posto c’era questo misterioso “ssb”, che anche se inserito nella blacklist, impediva ad ndiswrapper di funzionare.
Con un po’ d’aiuto da parte di Google, ecco pronta la soluzione!

Praticamente mi pare di aver capito che il problema principale sia l’ordine di caricamento dei moduli; la soluzione proposta nella guida di cui sopra non è il massimo di eleganza, ma aveva il vantaggio di essere pronta, e subito. (ed il tempo stringeva: il mio amico stava per tornare a riprendersi il laptop 🙂 )

Trattasi in sostanza, oltre alla normale procedura per installare ndiswrapper (consiglio ai terminalofobi di utilizzare ndisgtk), di creare uno script che rimuova i driver e ricarichi quelli necessari nell’ordine giusto, e fare in modo che lo faccia automaticamente ad ogni avvio. Vediamo come:

In un terminale (sorry terminalofobi… ma non è niente di traumatico, via!), per creare lo script, si digiti:

sudo gedit /etc/init.d/wirelessfix.sh

nell’editor si inseriscano quindi le seguenti righe, poi si salvi e si chiuda:

#!/bin/bash
modprobe -r b44
modprobe -r b43
modprobe -r ssb
modprobe -r ndiswrapper
modprobe ndiswrapper
modprobe b44

Per rendere eseguibile lo script:

sudo chmod 755 /etc/init.d/wirelessfix.sh

E quindi, per far si che venga eseguito all’avvio:

sudo update-rc.d wirelessfix.sh defaults

A questo punto, dopo un bel riavvio, si può procedere all’installazione del driver di windoze in ndiswrapper.
Nel Dell del mio amico, il file necessario l’ho trovato nella root del filesystem di windows, in un percorso simile a: […]/DELL/driver/R140747/driver/bcmwl5.inf , in alternativa lo può scaricare l’archivio autoestraente per windoze direttamente dal sito di Dell, ed aprirlo con fileroller (è un exe, ma in realtà è uno zip travestito…)

Si selezioni quindi il file bcmwl5 dall’interfaccia di ndisgtk e si riavvii di nuovo la macchina (anche se in realtà si poteva fare tutto prima del primo riavvio), e ci si dovrebbe trovare il wireless di nuovo funzionante, questa volta coi driver di windoze.

Se dovesse fare cilecca, si provi ad usare la procedura “classica” di installazione dei driver con ndiswrapper (approfittando per prendere un po’ di dimestichezza col termianle):

sudo ndiswrapper -i bcmwl5.inf
sudo ndiswrapper -l #giusto per sicurezza...
sudo ndiswrapper -m

Secondo me ndiswrapper fa ricorso alla magia nera per mescolare con cotal sciotezza i driver di windoze coi moduli del kernel! Speriamo comunque di doverlo usare sempre meno, ed avere invece degli ottimi driver liberi 😉
p.s.: visto che sono ancora in tempo: buon compleanno Cuggino!

Annunci