Far configurare correttamente al boot la scheda di rete wireless Broadcom 4306 inclusa nei portatili ASUS L5000D con Debian e Ubuntu

Se state usando un portatile ASUS L5000D, sapete bene che il chipset della schede di rete senza fili 802.11g è l’odiatissimo Broadcom 4306, di cui non esistono specifiche pubbliche.

Il driver nativo bcm43xx, sebbene sia stato migliorato moltissimo per poter essere integrato nei kernel serie 2.6.17 (quando era sviluppato a solo non riusciva a riconoscere la nostra scheda, adesso ci riesce), sembra non funzionare benissimo con il WPA (in particolare, con wpa_supplicant: ma se si pensa che lo stramaledetto driver ASUS fornito con il PC nemmeno sa cosa sia…), mentre non ho testato la funzionalità WEP.

Dovremo quindi, almeno per un po’, continuare ad usare ndiswrapper e questo driver (attenzione: dovete avere un account su Ubuntu Forums per potervi accedere).

Non vi spiegherò come installare ndiswrapper (chiedete a Google piuttosto), ma vi spiegherò come porre rimedio a un problema lasciatoci in eredità da coloro che hanno assemblato il nostro portatile.

Vi sarete accorti che, anche in Windows, la scheda sembra “perdere” i parametri giusti di connessione dopo una serie di riavvii, o, peggio, quando si passa spesso da una rete ad un’altra. Il baco, signori, risiede nella scheda, e in Windows non ci si può far nulla, se non fare riavvii su riavvii e sperare che quello successivo sia quello buono.

In GNU/Linux (e presumibilmente anche su *BSD), invece, possiamo risolvere il problema molto velocemente. Infatti, noi abbiamo un controllo sul sottosistema NDIS (il protocollo di comunicazione utilizzato dai driver Windows) molto più esteso di quanto non sia quello disponibile a un utente Windows stesso. Signori, in pratica, è sufficiente fare

/sbin/iwpriv [device] ndis_reset

e poi riconfigurare la scheda per far funzionare tutto alla perfezione. :-d

Per integrare questi passaggi nella nostra distro Debian/Ubuntu ci serve soltanto:

  1. Un /etc/network/interfacessimile a questo (supponendo eth1:
    auto eth1
    iface eth1 inet dhcp
    wireless-essid "Il mio SSID"
    wireless-channel 11
    wpa-driver wext
    wpa-conf /etc/wpa_supplicant.conf
    pre-up /sbin/iwpriv eth1 ndis_reset
  2. Un /etc/rc.local (o un altro script di esecuzione locale) simile a questo:
    /sbin/iwpriv eth1 ndis_reset
    /sbin/ifdown eth1
    /sbin/ifup eth1

Sarete piacevolmente sorpresi, credo.

Pubblica un Commento

La tua email non verrà mai pubblicata o diffusa. I campi obbligatori sono contrassegnati con *

*
*