D-Link DWL-G510 working on Ubuntu 7.10 with ndiswrapper

dwl-g510Ultimamente ho deciso di reinstallare linux sul mio pc di casa che ne era orfano ormai da troppo tempo…mentre stavo verificando se tutto funzionava a dovere mi rendo conto che la scheda wireless, una D-Link DWL-G510, veniva correttamente “vista” dal sistema ma non funzionava…secondo voi per quanto ancora poteva restare in quello stato? Oviamente molto poco…

Va detto che conoscendo il modello ed il produttore della mia scheda wireless è stato facile trovare il driver giusto (che poi già avevo visto che è lo stesso che uso con Windows) però mi rendo conto che in alcune circostanze come ad esempio notebook, prodotti rimarchiati od OEM oppure semplice manifesta instabilità del driver Windows con ndiswrapper la ricerca possa essere più difficile non sapendo a priori quale scheda monta quale chip.

A questo scopo risulta utile l’output di lspci opportunatamente arricchito, basta digitare su una console il seguente comando:

root@vortexrikers:~# lspci -nn

...

01:0b.0 Ethernet controller [0200]: Marvell Technology Group Ltd. Marvell W8300 802.11 Adapter [11ab:1fa6] (rev 07)

...

Ovviamente l’output è stato epurato delle righe non di nostro interesse ma ora passiamo ad analizzare cio che realmente ci interessa: il parametro -nn serve per mostrare oltre produttore e device in forma “human readable” anche in forma esadecimale infatti oltre alle consuete informazioni su bus e slot fornite ad inizio riga ed al nome del produttore e del device nella forma consueta a fine riga fra parentesi quadre sono riportati gli ID di produttore e device in forma esadecimale, questa ID può risultare utile nella ricerca di un ulteriore driver per la vostra scheda.

Una piccola informazione…magari voi come me vi state chiedendo (o vi siete già chiesti): “ma come fa lspci a conoscere i nome di produttori e device dalla pciid?” semplice! esegue una ricerca all’interno di un dato file (nel mio caso /usr/share/misc/pci.ids) contenente tali informazioni, questo file innoltre è aggiornabile anche manualmente tramite update-pciids, comunque il pacchetto contenente queste informazioni è lo stesso pciutils quindi è meglio lasciare che sia il manteiner del pacchetto ad eseguire modifiche ed aggiornamenti.
Per installare tutto l’occorrente è sufficente eseguire il seguente comando:

root@vortexrikers:~# apt-get install ndiswrapper-common ndiswrapper-utils-1.9 ndisgtk unshield

Come è possibile vedere ho installato ndiswrapper con le sue utility di gestione, un comodo frontend grafico ed un “scompattatore” di file .cab che servirà per estrarre il driver vero e proprio dalla directory contenente l’utility di installazione del driver per windows.

root@vortexrikers:~# unshield -d ./ndis x ./Driver/setup/data1.cab

root@vortexrikers:~# unshield -d ./ndis x ./Driver/setup/data2.cab

Dai .cab contenuti nella direcory dove ho scompattato i driver per windows della mia scheda ho estratto i file contenuti con i sopraelencati comandi, dalle risultanti cartelle ho preso dalla cartella DrvXP il file .sys ivi contenuto e dalla cartella InfXP il file .inf ivi contenuto e li ho messi nella stessa direcory, nel mio caso ./ndis, ormai è soltanto più necessario caricare il file inf in ndiswraspper con il seguente comando:

root@vortexrikers:~#  ndiswrapper -i ./ndis/mrv8k51.inf

…e verificare che tutto sia andato a buon fine…

root@vortexrikers:~#  ndiswrapper -l

…ora non resta che caricare il modulo di ndiswrapper:

root@vortexrikers:~# modprobe ndiswrapper

…nel dmesg dovreste vedere qualcosa di simile…

root@vortexrikers:~# dmesg |grep ndis

[45.981364] ndiswrapper version 1.45 loaded (smp=yes)

[46.080025] ndiswrapper: driver mrv8k51 (D-Link,1/09/2004,2.3.0.1) loaded

[46.081091] ndiswrapper: using IRQ 23

[46.344364] ndiswrapper (set_encr_mode:673): setting encryption mode to 6 failed (C00000BB)

[46.345850] usbcore: registered new interface driver ndiswrapper

…giusto per non stare tutte le volte che ho bisogno della scheda wifi a fare modprobe del modulo ho aggiunto la seguente riga in /etc/rc.local

root@vortexrikers:~# echo "modprobe ndiswrapper" > /etc/rc.local

Un’alternativa più elegante può essere…

root@vortexrikers:~#  ndiswrapper -m

…in questo modo viene creato un file in /etc/modprobe.d/ che si occupa di caricare il modulo in memoria all’avvio…ed il gioco è fatto!!!

Dimenticavo, per gli amanti delle interfacce grafiche il tutto si può fare anche con ndisgtk, basta eseguirlo con i privilegi di superuser tramite sudo oppure lanciarlo dal menù Sistema -> Amministrazione -> Windows Wireless Drivers…eccone un esempio di utilizzo…

ndiswrapper

Ora non resta che configurare la scheda con iwconfig e ifconfig se si è maniaci della riga di comando oppure con i tool grafici inclusi nella nostra distribuzione preferita (che ovviamente è ubuntu).

Related post:

7 Comments

  1. Claudia says:

    scrivi in un grigio più acceso, argentato!

  2. Paolo says:

    ma Claudia ma per piacere!

  3. Noko says:

    Bravo, bravo. Io finalmente, qualche settimana fa, ho risolto il problema anche con la mia dannata scheda Apple Airport Extreme tramite b43-fwcutter sotto Fedora.
    Siccome il wireless però proprio non lo uso, mi sono già dimenticato come ho fatto.

  4. MRG says:

    Grazie! Lo sai che mi piacciono i complimenti.
    E’ un peccato però che tu te lo sia già dimenticato, avresti potuto almeno aggiornare la tua guida sull’installazione e configurazione di fedora sull’iBook.

    Un’ultima nota agli “altri” che hanno postato commenti…se vi divertite a postare commenti col nome dei membri dello staff o dal contenuto della stessa intelligenza di quello che potrebbe pensare uno spambot qua NON siete i benvenuti. Non costringetemi a dover diventare un censore (un commento si elimina con un paio di click) perchè la filosofia con cui ho aperto questo blog è ben diversa.
    Siete stati avvertiti…

  5. Bonz says:

    Ciao,
    l’articolo sembra molto utile e scritto con il tono giusto (non troppo formale ma nemmeno alla buona).
    Una cosa: c’e’ un problema di visualizzazione del testo per il le parti di codice (quando scrivi i comandi del prompt). In pratica il testo a volte esce dal lato sinistro del riquadro nero tratteggiato.

    Ciao!

  6. Bonz says:

    sorry, mi correggo: il testo deborda dal lato destro del riquadro.

  7. MRG says:

    ops, corretto…adesso dovrebbe essere aposto…