NdisWrapper

Introduzione

Questa guida indica come utilizzare NdisWrapper, che permette di utilizzare i driver non nativi per le schede wireless sotto GNU/Linux. Per quanto NdisWrapper utilizzi quindi driver spesso proprietari, dunque contrari all'etica del software libero, è un programma che viene rilasciato sotto GPL.

Il progetto NdisWrapper fornisce un modulo per il Kernel di Linux che è in grado di caricare ed eseguire i drivers Ndis (Windows network driver API) sostituendo di fatto il mancato rilascio dei drivers nativi. NdisWrapper lavora bene con molte schede miniPCI (builtin), PCI, PCMCIA (solo Cardbus) nonchè con le schede USB. Per verificare il livello di compatibilità con la vostra scheda Wireless consultate il progetto Wiki di NdisWrapper qui.

Il sito web di riferimento per il progetto NdisWrapper è questo. Proprio dal sito del progetto ho provveduto a scaricare la distribuzione in formato tarball che contiene i codici sorgenti.

Installazione

Compilazione

La procedura di compilazione e di installazione dei sorgenti è piuttosto semplice:

# tar zxvf ndiswrapper-1.4rc1.tar.gz
# cd ndiswrapper-1.rc1
# make && make install

In alternativa è possibile utilizzare la versione pacchettizzata da Debian:

# apt-get install ndiswrapper-common ndiswrapper-source ndiswrapper-utils ndiswrapper

e nel caso non li avessimo già installati:

# apt-get install module-init-tools module-assistant wireless-tools  wpasupplicant

Configurazione

A questo punto avviamo ndiswrapper

# ndiswrapper
Usage: ndiswrapper OPTION
Manage ndis drivers for ndiswrapper.
-i inffile        Install driver described by 'inffile'
-d devid driver   Use installed 'driver' for 'devid'
-e driver         Remove 'driver'
-l                List installed drivers
-m                Write configuration for modprobe
-hotplug          (Re)Generate hotplug information

la procedura di installazione del driver Ndis è piuttosto banale, in genere lo stesso viene incluso nel supporto CDROM allegato alla scheda Wireless o al pc.

# ndiswrapper -i /media/cdrom/drivers/nomedriver.inf

il driver Ndis è stato installato, per verificare l'insieme dei drivers installati utilizziamo il comando ndiswrapper

# ndiswrapper -l
Installed ndis drivers:
nomedriver driver present, hardware present

Utilizzo

A questo punto dobbiamo fare in modo di caricare in memoria il modulo ndiswrapper in modo che lo stesso possa finalmente gestire la nostra scheda Wireless:

# m-a prepare
# m-a a-i ndiswrapper
# modprobe ndiswrapper

la scheda Wireless viene finalmente inizializzata ed è pronta per lavorare, per verificare lo stato dell'interfaccia Wireless utilizziamo l'utility iwconfig (Wireless Tools for Linux - [1])

# iwconfig
lo        no wireless extensions.
eth0      no wireless extensions.
sit0      no wireless extensions.
wlan0     IEEE 802.11g  ESSID:off/any
          Mode:Managed  Frequency:2.462 GHz  Access Point: 00:00:00:00:00:00
          Bit Rate:54 Mb/s   Tx-Power:16 dBm
          RTS thr:2347 B   Fragment thr:2346 B
          Encryption key:off
          Power Management:off
          Link Quality:100/100  Signal level:-10 dBm  Noise level:-256 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

per consentire alla nostra macchina di caricare il modulo ndiswrapper con il boot del sistema operativo dobbiamo modificare il file /etc/modules utilizzando sempre l'utility ndiswrapper

# ndiswrapper -m
Adding "alias wlan0 ndiswrapper" to /etc/modules

Per utilizzare una connessione di rete Wireless che dobbiamo procedere con la configurazione della scheda di rete Wireless affinchè la stessa sia in grado di colloquiare con l'access point (AP). Ora ricorriamo nuovamente all'utilizzo dell'utility iwconfig

# iwconfig -h
Usage: iwconfig interface [essid {NN|on|off}]
                          [nwid {NN|on|off}]
                          [mode {managed|ad-hoc|...}
                          [freq N.NNNN[k|M|G]]
                          [channel N]
                          [ap {N|off|auto}]
                          [sens N]
                          [nick N]
                          [rate {N|auto|fixed}]
                          [rts {N|auto|fixed|off}]
                          [frag {N|auto|fixed|off}]
                          [enc {NNNN-NNNN|off}]
                          [power {period N|timeout N}]
                          [txpower N {mW|dBm}]
                          [commit]

in alto possiamo visualizzare alcune delle opzioni che utilizzeremo per configurare al meglio la nostra scheda di rete Wireless, in particolare utilizzeremo le seguenti impostazioni

# iwconfig wlan0 rate auto
# iwconfig wlan0 mode managed
# iwconfig wlan0 channel 11
# iwconfig wlan0 key s:WEP_KEY enc open
# iwconfig wlan0 essid nome_nodo

a questo punto dovremmo attivare l'interfaccia di rete wlan0 per collegarci con l'AP (access point)

# ifconfig wlan0 up

ora non ci resta che farci assegnare un indirizzo IP dall'AP utilizzando il nostro client dhcp

# dhclient wlan0

Ringraziamenti

Un ringraziamento a Stefano Tagliaferri per aver scritto l'how -to su cui mi sono basato per la mia esperienza con ndiswrapper.


Autore: jango