Skip navigation

Nel mentre non avevo una “cippalippa” da fare, mi sono ritrovato ad installare una vecchia distro Ubuntu Netbook Remix basata sulla release 10.04 di casa Canonical sul mio netbook.
Installata la distro, lanciando i relativi upgrades, ho notato che aggiornava il sistema al kernel “2.6.32-34-generic” e non oltre mentre a me interessava provare sia il 2.6.39 che il 3.0.x.
A questo punto, sono andato a scaricarmi a questo indirizzo i kernel che mi interessavano –  http://kernel.ubuntu.com/~kernel-ppa/mainline/ – e li ho scaricati localmente sul mio computer.

Come esemplificazione, tratterò il kernel 2.6.39.4-oneiric ma il metodo è applicabile a tutte le versioni di kernel, anche futuri. La cosa importante è installare i pacchetti nell’ordine preciso in cui andrò a farlo io (notare il grassettato rosso).

1 – il pacchetto linux-headers-2.6.39-02063904_2.6.39-02063904.201108040905_all.deb
2 – il pacchetto linux-headers-2.6.39-02063904 generic_2.6.39-02063904.201108040905_i386.deb
3 – il pacchetto linux-image-2.6.39-02063904-generic_2.6.39-02063904.201108040905_i386.deb (o amd64 a seconda del caso).

installati questi pacchetti, aprite un terminale e digitate:

# sudo update-grub

riavviate il sistema ed avrete il vostro nuovo kernel bello e pronto.

A questo punto molti di voi staranno pensando: ” …miii. come ti chiamiii??? – Sei un genio! – Posso essere amico tuo? – Fortuna che hai scritto ‘sto tutorial sennò …” ma, …perchè c’è sempre un ma, …se anche voi aveste una scheda wireless Broadcom bcm4313 (14e4:4727) e vi trovaste a constatare, come è capitato a me, che i nuovi driver brcm80211 inclusi nel kernel non funzionassero e quelli ufficiali broadcom STA non fossero aggiornati, vi interesserebbe sapere come fare ad installare i driver Broadcom 802.11 linux STA per la vostra scheda?  (ah! adesso davvero vuoi essere “amico mio” eh!) 😉

Vediamo come fare.

scarichiamo da qui i driver ufficiali – http://www.broadcom.com/support/802.11/linux_sta.php

Ora dovremo togliere dalla blacklist i driver bcm43 che sono “blacklistati” di default in questa versione del kernel e inserire invece nella blacklist i driver brcm80211, ssb, b43.

Apriamo il file /etc/modprobe.d/blacklist.conf (# sudo gedit /etc/modprobe.d/blacklist.conf) e rimuoviamo da questo file la riga “blacklist bcm43”. Alla fine di questo file inseriamo queste righe:

blacklist brcm80211
blacklist ssb
blacklist b43

e salviamo il file.

Sempre nella cartella /etc/modprobe.d/ c’è il file blacklist-bcm43.conf

Apriamolo (# sudo gedit /etc/modprobe.d/blacklist-bcm43.conf) ed eliminiamo anche qui la riga “blacklist bcm43” ed aggiungiamoci, se non ci sono già

blacklist brcm80211
blacklist ssb
blacklist b43

Salviamo il tutto ed usciamo.

Veniamo ora alla compilazione dei driver.
come operazione preliminare, assicuriamoci che tutti i tools necessari siano installati (dovrebbero esserlo ma meglio essere sicuri). Con i privilegi di root digitiamo:

# apt-get install build-essential linux-headers-generic
# apt-get build-dep linux

per controllare se la directory esiste digitiamo:

# ls /lib/modules/`uname -r`/build

Ora siamo pronti.
n.b.: al momento della scrittura di questo tutorial, la versione del driver a 32bit è hybrid-portsrc_x86_32-v5_100_82_111.tar.gz

creiamo una cartella di compilazione, accediamovi e scompattiamoci il file:

# mkdir drvbcrm
# cd drvbcrm
# tar xzf <path dove si trova il file scaricato>/hybrid-portsrc_x86_32-v5_100_82_111.tar.gz

a questo punto digitiamo:

# make

il comando “make” dovrebbe fare automaticamente il “build” della versione giusta. A me non l’ha fatto ed ho dovuto dare il comando:

# make API=WEXT

se avete necessità, oltre le vecchie API WEXT (wireless extension), il driver supporta anche le nuove API di configurazione wireless cfg80211. Se il comando “make API=WEXT” non dovesse funzionare, provate:

# sudo modprobe cfg80211
# make API=CFG80211

Una volta che la compilazione del driver è terminata, troverete il modulo wl.ko all’interno della directory “drvbrcm”. Dovremo copiarlo nella directory di default che dovrebbe essere /lib/modules/<kernel-version>/kernel/net/wireless. Siccome sul kernel 2.6.32 da cui sono partito avevo già installato i driver della broadcom, prima di installare il nuovo modulo, dovrò disabilitare il vecchio, farne un backup, copiare il nuovo modulo e caricarlo.

# rmmod wl
# mv /lib/modules/<kernel-version>/kernel/net/wireless/wl.ko /lib/modules/<kernel-version>/kernel/net/wireless/wl.ko.orig
# cp wl.ko /lib/modules/<kernel-version>/kernel/net/wireless/wl.ko
# depmod
# modprobe wl

Aspettate qualche istante che “Network Manager” rilevi la nuova scheda di rete e …navigate felici.

Nel caso in cui stiate installando per la prima volta questo driver, oltre a “blacklistare” e “de-blacklistare” i moduli descritti sopra, dovrete anche aggiungere dei moduli di sicurezza. I sistemi più recenti utilizzano lib80211 mentre altri usano ieee80211_crypt_tkip.
A seconda di quale sia il vostro caso, digitate

# modprobe lib80211
oppure
# modprobe ieee80211_crypt_tkip

Se invece usate la versione cfg80211, allora dovrete caricare il modulo cfg80211

# modprobe cfg80211

a questo punto inserite il modulo wl

# insmod wl.ko

Fatto. Ora la vostra scheda dovrebbe essere funzionante.

Ciao a tutti e …have fun! Always!

Annunci

Rispondi

Effettua il login con uno di questi metodi per inviare il tuo commento:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...