quarta-feira, 16 de maio de 2012

RTL8191SEvB Wireless no FreeBSD


Minha Wi-Fi Realtek funciona perfeitamente no Linux ou Windows ( sim eu jogo Age of Empires ), mas passei bastante trabalho para configurar no FreeBSD o que me impossibilitava de usar o BSD como desktop doméstico.



Vamos configurar

Descobrindo o Hardware :

# lspci
04:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8191SEvB Wireless LAN Controller (rev 10)


Na verdade ela é uma RTL8192SE, mas o driver seria "o mesmo".

Vamos aos passos:

# pkg_add -r libiconv

Baixando o driver daqui ( Compactado 32 e 64 bits ):

http://www.realtek.cz/realtek-download.php?realtek=RTL8192SE&system=2

Descompacte e acesse a pasta 32bits ou 64bits conforme a sua versão.

Vamos ao ndis:

# ndisgen net8192se.inf rtl8192se.sys

OBS: A execução pedirá muitas confirmações "tecle enter".

Se tudo estiver OK:

# mv rtl8192se_sys.ko /boot/modules/

Coloque a linha abaixo em /boot/loader.conf

rtl8192se_sys_load=”YES”

Em seguida vamos subir o módulo novo

# kldload rtl8192se_sys

Testando:

# dmesg | grep ndis
ndis0: port 0x3000-0x30ff mem 0xf8000000-0xf8003fff irq 18 at device 0.0 on pci4
ndis0: NDIS API version: 5.1
ndis0: failed to get bssid
ndis0: link state changed to UP



Após, vamos configurar a Wireless.


Como eu uso WPA2 segui friamente a referência:

Adicionei as linhas abaixo ao rc.conf

wlans_ndis0=”wlan0″
ifconfig_wlan0=”WPA DHCP”

E criei um arquivo /etc/wpa_supplicant.conf

    network={
    priority=1
    ssid=”SPACEBALLS"
    psk=”12345”
    }

    network={
    priority=2
    ssid=”MEU_VIZINHO_QUE_USA_SENHA_CRETINA"
    psk=”SWORDFISH”
    }

Configurados os arquivos, eu restarto network

# /etc/rc.d/netif restart

# ifconfig wlan0
wlan0: flags=8843 metric 0 mtu 1500
    ether 1c:4b:d6:83:7b:cd
    nd6 options=29
    media: IEEE 802.11 Wireless Ethernet autoselect mode 11b
    status: associated
    ssid "" channel 1 (2412 MHz 11b) bssid 1c:4b:d6:83:7b:cd
    country US authmode OPEN privacy OFF txpower 0 bmiss 7 scanvalid 60
    roaming MANUAL bintval 0



Se eu quiser conectar uso um

# dhclient wlan0
Troubleshooting comum!
Há a necessidade de "matar" a rede Ethernet pois a rota fica como default para ela ( onde re0 é a minha Ethernet ).

# /etc/rc.d/netif stop re0



Dica, crie um script ;)

e um abraço.


OBS: lspci no FreeBSD ( cd /usr/ports/sysutils/pciutils && make install clean )

Referências:
https://www.dan.me.uk/blog/2010/01/25/ndis-wifi-drivers-in-freebsd-project-evil/
https://www.dan.me.uk/blog/2010/01/25/wifi-configuration-in-freebsd-including-wpawap2/