domingo, 5 de julho de 2009

Instalar e configurar placa wifi SMC smcwpcit-g com madwifi em Debian Lenny


Este era um reto que tinha de ser superado. Foi-me deixado um computador com uma placa WIFI smcwpcit-g (chipset AR5272/5273) e tinha de funcionar de qualquer maneira. Aqui na imagem da esquerda está a placa em questão, e a verdade é que pensei que desse mais "guerra" do que deu, mas mesmo assim foi um processo "entretido".

Antes de começar precisamos de instalar os seguintes pacotes:

build-essential

bin86

sharutils

E claro, também precisamos que estejam instaladas as fontes do nosso kernel instalado, ou seja os kernel-sources ou kernel-headers da versão que seja respectiva á que tenhamos instalado.

Para saber qual temos instalado usamos o comando:


$ uname -r

o resultado é:

$ uname -r
2.6.26-2-686

Instalados estes pacotes prosseguimos. Passo seguinte instalei o pacote madwifi e madwifi-tools desde os repositórios, mas não me serviram. Então depois de descarregar e compilar a ultima versão do pacote madwifi, tinha de tentar já que era uma versão mais recente (0.9.4) do que a que está nos repositórios de Debian, continuava sem resultar...

Descarreguei madwifi-0.9.4.tar.gz

Abri uma linha de comandos e entro como root,... fiz o seguinte comando para copiar o ficheiro comprimido madwifi-0.9.4.tar.gz para poder compilá-lo a nivel do sistema:

# cp madwifi-0.9.4.tar.gz

De seguida, vou á pasta /src que está dentro de /usr:

 # cd /usr/src

Descomprimo o ficheiro madwifi-0.9.4.tar.gz com o seguinte comando:

# tar -zxvf madwifi-0.9.4.tar.gz

é criada uma pasta chamada madwifi-0.9.4 e todo o conteúdo do ficheiro comprimido é passado para dentro, sub-pastas incluidas...

Mudo a localização de onde estou para dentro da pasta que acabo de comprimir:

# cd madwifi-0.9.4

Começamos...:

# make clean

este passo foi bem... agora começamos a construir com "make":

# make

...até que surge o erro:

/usr/src/madwifi-0.9.4/net80211/ieee80211_power.c: In function 'ieee80211_pwrsav
e':
/usr/src/madwifi-0.9.4/net80211/ieee80211_power.c:240: error: implicit declarati
on of function '__skb_append'
make[3]: *** [/usr/src/madwifi-0.9.4/net80211/ieee80211_power.o] Error 1
make[2]: *** [/usr/src/madwifi-0.9.4/net80211] Error 2
make[1]: *** [_module_/usr/src/madwifi-0.9.4] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.26-2-686'
make: ** [modules] Erro 2

obtia um erro a compilar este pacote, e depois de investigar na página de bugs do madwifi, parecia que a versão instalada através de svn iria funcionar.

Abro o gestor de pacotes Synaptic e instalo o pacote svn. Acto seguido introduzo o seguinte para voltar á pasta anterior (/usr/src):

# cd ..

A seguir uso o comando sugerido para instalar através de svn:

# svn checkout http://svn.madwifi-project.org/madwifi/trunk madwifi

Desta vez é criada uma pasta chamada madwifi. Entro na pasta e faço:

# make

Tudo sobre rodas... depois de muita informação na saida deste comando, nenhum erro.

De seguida faço a instalação com make install

# make install

Checking requirements... ok.
Checking kernel configuration... ok.
make -C /lib/modules/2.6.26-2-686/build SUBDIRS=/usr/src/madwifi modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.26-2-686'
Building modules, stage 2.
MODPOST 14 modules
make[1]: Leaving directory `/usr/src/linux-headers-2.6.26-2-686'
sh scripts/find-madwifi-modules.sh -r 2.6.26-2-686
for i in ath/ ath_hal/ ath_rate/ net80211/; do \
make -C $i install || exit 1; \
done
make[1]: Entering directory `/usr/src/madwifi/ath'
test -d //lib/modules/2.6.26-2-686/net || mkdir -p //lib/modules/2.6.26-2-686/ne
t
install -m 0644 ath_pci.ko //lib/modules/2.6.26-2-686/net
make[1]: Leaving directory `/usr/src/madwifi/ath'
make[1]: Entering directory `/usr/src/madwifi/ath_hal'
test -d //lib/modules/2.6.26-2-686/net || mkdir -p //lib/modules/2.6.26-2-686/ne
t
install -m 0644 ath_hal.ko //lib/modules/2.6.26-2-686/net
make[1]: Leaving directory `/usr/src/madwifi/ath_hal'
make[1]: Entering directory `/usr/src/madwifi/ath_rate'
for i in amrr/ onoe/ sample/ minstrel/; do \
make -C $i install || exit 1; \
done
make[2]: Entering directory `/usr/src/madwifi/ath_rate/amrr'
test -d //lib/modules/2.6.26-2-686/net || mkdir -p //lib/modules/2.6.26-2-686/ne
t
install -m 0644 ath_rate_amrr.ko //lib/modules/2.6.26-2-686/net
make[2]: Leaving directory `/usr/src/madwifi/ath_rate/amrr'
make[2]: Entering directory `/usr/src/madwifi/ath_rate/onoe'
test -d //lib/modules/2.6.26-2-686/net || mkdir -p //lib/modules/2.6.26-2-686/ne
t
install -m 0644 ath_rate_onoe.ko //lib/modules/2.6.26-2-686/net
make[2]: Leaving directory `/usr/src/madwifi/ath_rate/onoe'
make[2]: Entering directory `/usr/src/madwifi/ath_rate/sample'
test -d //lib/modules/2.6.26-2-686/net || mkdir -p //lib/modules/2.6.26-2-686/ne
t
install -m 0644 ath_rate_sample.ko //lib/modules/2.6.26-2-686/net
make[2]: Leaving directory `/usr/src/madwifi/ath_rate/sample'
make[2]: Entering directory `/usr/src/madwifi/ath_rate/minstrel'
test -d //lib/modules/2.6.26-2-686/net || mkdir -p //lib/modules/2.6.26-2-686/ne
t
install -m 0644 ath_rate_minstrel.ko //lib/modules/2.6.26-2-686/net
make[2]: Leaving directory `/usr/src/madwifi/ath_rate/minstrel'
make[1]: Leaving directory `/usr/src/madwifi/ath_rate'
make[1]: Entering directory `/usr/src/madwifi/net80211'
test -d //lib/modules/2.6.26-2-686/net || mkdir -p //lib/modules/2.6.26-2-686/ne
t
for i in wlan.o wlan_wep.o wlan_tkip.o wlan_ccmp.o wlan_acl.o wlan_xauth.o wlan_
scan_sta.o wlan_scan_ap.o; do \
f=`basename $i .o`; \
install -m 0644 $f.ko //lib/modules/2.6.26-2-686/net; \
done
make[1]: Leaving directory `/usr/src/madwifi/net80211'
(export KMODPATH=/lib/modules/2.6.26-2-686/net; /sbin/depmod -ae 2.6.26-2-686)
make -C ./tools all || exit 1
make[1]: Entering directory `/usr/src/madwifi/tools'
for d in ath_info; do \
make -C $d || exit 1; \
done
make[2]: Entering directory `/usr/src/madwifi/tools/ath_info'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/usr/src/madwifi/tools/ath_info'
make[1]: Leaving directory `/usr/src/madwifi/tools'
make -C ./tools install || exit 1
make[1]: Entering directory `/usr/src/madwifi/tools'
for d in ath_info; do \
make -C $d || exit 1; \
done
make[2]: Entering directory `/usr/src/madwifi/tools/ath_info'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/usr/src/madwifi/tools/ath_info'
install -d /usr/local/bin
for i in athstats 80211stats athkey athchans athctrl athdebug 80211debug wlancon
fig wpakey; do \
install $i /usr/local/bin/$i; \
strip /usr/local/bin/$i; \
done
install -d /usr/local/man/man8
install -m 0644 man/*.8 /usr/local/man/man8
install ../scripts/madwifi-unload /usr/local/bin/madwifi-unload
for d in ath_info; do \
make -C $d install || exit 1; \
done
make[2]: Entering directory `/usr/src/madwifi/tools/ath_info'
install -d /usr/local/bin
install -m 755 ath_info /usr/local/bin
install -d /usr/local/share/man/man8
install -m 644 ath_info.8 /usr/local/share/man/man8
make[2]: Leaving directory `/usr/src/madwifi/tools/ath_info'
make[1]: Leaving directory `/usr/src/madwifi/tools'

Tudo perfeito. De seguida executo:

# modprobe ath_pci
debian:/usr/src/madwifi# iwconfig
lo no wireless extensions.

eth0 no wireless extensions.

wifi0 no wireless extensions.

ath0 IEEE 802.11g ESSID:"" Nickname:""
Mode:Managed Frequency:2.437 GHz Access Point: Not-Associated
Bit Rate:0 kb/s Tx-Power:19 dBm Sensitivity=1/1
Retry:off RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=0/70 Signal level=-96 dBm Noise level=-96 dBm
Rx invalid nwid:132 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

A seguir editamos como root o ficheiro modules que está dentro da pasta /etc e adicionamos ao final do ficheiro, depois de "loop" na linha de baixo:

ath_pci

para que este módulo seja carregado ao iniciar o sistema.

Descarregamos e instalamos o pacote wpa_supplicant, é facil encontrar o pacote... temos de o compilar também.

Também temos de descarregar e instalar/compilar madwifi-hal desde:

http://snapshots.madwifi-project.org

Possivelmente haje que instalar antes de compilar algum pacote com o nome de tls e outro com o nome de openssl, ou ssl (também os -dev) para compilar e é tudo.

Só falta instalar knetworkmanager, que foi a ferramenta que no final fez-me tudo practicamente, só tive de pôr a chave para o meu acesso WPA e.... BINGO !





Sem comentários:

Enviar um comentário

É favor manter a boa educação nos comentários. Qualquer comentário ofensivo, racista, desprestigioso, apenas com objectivo de inundar o blogue ou comentários de publicidade não solicitada serão eliminados. Serão aceites comentários em Português, Espanhol e Inglês. Comentarios en Portugues, Español y Ingles seran aceptados. Comments in Portuguese, Spanish and English will be accepted.