Adicionando suporte a D-Link DWL-G650+ (todas elas) no FreeBSD. |
Por P. Tracanelli (FreeBSD Brasil) | |||
14/12/2008 | |||
Ao longo desse artigo vamos adicionar suporte no FreeBSD a placa wireless 802.11g D-Link DWL-G650+, conhecida como DLink Airplus Extreme G+, que usam algum chipset da Texas Instrument. Vamos observar que é uma loteria descobrir que placa você tem em mãos. O artigo serve também como dica para se pensar bem antes de adquirir uma placa DLink. Não que seja ruim, nem boa. É que você não tem a menor garantia do que esta comprando. Ao final do artigo teremos uma acx0 funcionam e sendo controlada. Adicionando suporte a D-Link DWL-G650+ (todas elas) no FreeBSD Durante o procedimento de colocar o PC-BSD como sistema Unix padrão no laboratório de mobilidade de uma Universidade em Belo Horizonte, observei que o FreeBSD não suporta adequadamente algumas placas wireless DLink Airplus Extreme G(+). O curioso é que antes da aquisicão desse hardware, foi feita uma análise de compatibilidade de hardware com um LiveCD da FreeBSD Brasil, e funcionava adequadamente. O porém é que é DLink. Ahh, DLink! Adoro a DLink e essa mania de mudar completamente um hardware e continuar vendendo-o com mesmo nome, mesmo modelo, mesma aparência e até mesmo mesma caixa e mesma adesivagem. Enfim, tudo em prol do baixo custo (mesmo assim DLINK.BO não é um exemplo de ativo a se manter em carteira). O fato é que você nunca sabe quando compra um equipamento DLink, o que está comprando. Já sugeri a clientes comprar algumas placas Wireless PCI, e ao comprar, o equipamento era completamente diferente do pretendido. Desde então digo: teste antes, compare número serial e lote de fabricacão. Parece exagero? Não é. Algumas vezes se damos sorte, existem algumas diferencas no modelo, o + pode fazer diferenca. Por exemplo, DWL-530 é chipset Intersil Prism 2, enquanto DWL-530+ as vezes é Texas Instruments e outras vezes é Crystal Semiconductor.Bom, mas o fato é, quando foi feita análise de hardware para estabelecer como padrão a placa PCMCIA padrão IEEE 802.11g, foram compradas 32 placas das que foram homologadas: DLink Airplus Extreme G. Excelente, porque DLink Airplus Extreme G ou apenas a DWL-G650 é uma excelente placa, de chipset Atheros 5212. Sem dúvida uma escolha mais que aprovada. Acontece que foi pro departamento de compras e a aquisicão foi um mixto de DWL-G650 e DWL-G650+, também conhecida como DLink Airplus Extreme G+. Conclusão lógica do departamento de compras: mesmo preco e com um +, excelente, é melhor. Mais pelo mesmo! Aprovada a compra.
Ai vem a surpresa. A DWL-G650 não tem, rigorosamente, nada a ver com a DWL-G650+. Enquanto a primeira é Atheros 5212, a segunda é algum chipset do fabricante Texas Instruments. Confuso? Não se preocupe, nada que não possa piorar. A DWL-G650+ por sua vez pode ser reconhecida como uma das seguintes:
Não é ótimo? Não, não é! As diferencas são a Revisão da placa. Revisão 4 ou 5 podem ter 2 modelos distintos de chipset cada, totalizando 4 combinacões possíveis para exatamente o mesmo equipamento/modelo, sem nem contar o DWL-G650 (sem o +) que é Atheros. Resultado, que driver controla? Para Windows, o mesmo driver! Por algum motivo os firmware binários no Windows, fornecidos pela DLink são capazes de reconhecer qual das placas é e controla-la. Na prática isso significa que a abordagem de usar o NDis para usar o driver do Windows no FreeBSD se torna uma loteria: as vezes funciona, as vezes não. De fato o if_ndis.ko gerado controla 1 dos 4 chips, e não controla os outros. Ou seja, usar NDis com os drivers fornecidos pelo fabricante, sem chance de sucesso certo, é outra loteria. Mas tem algumas coisas curiosas que a DLink consegue. Por exemplo, temos aqui literalmente dezenas de clientes que adquirem a placa DWL-G520 para atuar como Ponto de Acesso Wireless. Excelente, chipset Atheros, sem dúvida para quem quer uma opcão PCI de baixo custo e acessível no mercado brasileiro, sem problemas. Junto com as mini-PCI CM9 e Engenius acredito que são os equipamentos mais populares para atuar como Access Point no Brasil. E a ANATEL homologa, então sem problema, certo? Não exatamente. A DWL-G520 (e de fato algumas outras da DLink com chipset Atheros) usam um modelo do chip Atheros que atua em múltiplos domínios de regulacão (Regulatory Domains). A ANATEL homologa o modelo DWL-G520 nacional, também chamado de DWL-G520 BR. Todavia, o Regulatory Domain dessa placa é FCC, sem problemas, mesmas características em essência do que a ANATEL quer pro Brasil. Mas com um simples upgrade de firmware podemos colocar em ETSI Europe (1-13), isso permite que a placa atue em 802.11b até o canal 13. Curioso? Bom, com o firmware europeu o limite entre a orgão regulador europeu e o japonês fica restrito ao nível do sistema operacional, que obedece aquele Regulatory Domain por padrão. Na prática para alternar do padrão Europeu para o Japonês e poder usar do canal 1 ao 16 a mesma placa, é complexo: uma variável sysctl(8) no FreeBSD (Atheros HAL). Resultado? Ou uma fiscalizacão da ANATEL usa um analisador de espectro para avaliar a propagacão do sinal de RF da placa, ou temos em mãos uma placa DLink com selinho de homologacão da ANATEL, operando até o canal 16. Se baixar o driver de Windows da DLink União Européia a diferenca entre o padrão Europeu e Japonês é 1 valor em uma variável do Registro do Windows. Nada que um duplo-click em um arquivo .reg não resolva. Obviamente ninguém vai fazer isso devido a ilegalidade, mas o fato é que outros fabricantes limitam a atualizacão de firmware para os seriais/modelos de hardware, evitando um firmware poder ser utilizado em um equipamento montado para outro Regulatory Domain. A maioria dos fabricantes faz isso, inclusive a própria Atheros e outros fabricantes populares de placas wireless. A DLink não! Mas voltando ao objetivo do artigo, fiquei feliz ao descobrir que na Colecão de Ports do FreeBSD temos um módulo de kernel, o /usr/ports/net/acx100: # cat /usr/ports/net/acx100/pkg-descr
De acordo com a listagem, DWL-G650+ parece ser controlado. Excelente, o driver controla as placas ACX100 da Texas Instruments, e esse é o chipset da DWL-G650+! Errado! Nem sempre! As vezes o chipset é o ACX111. E as vezes é um mixto do ACX100 com o ACX111, algo único e exclusivo da DLink. Nenhum outro fabricante cliente OEM da Texas Instruments tem a capacidade de usar uma variacão que precisa do suporte mixto de ambos os chipsets. Só a DLink. Texas Instruments acx100+acx111 Felizmente o mesmo autor (Darron Brod) do módulo utilizado no net/acx100 fez também uma versão para o uso mixto do acx100 e acx111. Para isso basta baixa-lo:
Depois descompacte e mande compilar:
Você vai observar que o próprio Makefile tem instrucões para baixar o firmware direto do site d D-Link. Vai desmontar o driver e usar partes deles para gerar três produtos finais, dois módulos com firmware (acx100fw.ko e acx111fw.ko) e o módulo da placa de rádio, if_acx.ko. O make install irá instala-los em /boot/kernel/, que é completamente adequado para fontes de kernel parte da base, mas completamente inadequado quando obtido de terceiros, pois a recompilacão do seu kernel não vai incluir esse módulo no diretório em questão. Então depois de instalar mova para o /boot/modules/: # make install # mv -v /boot/kernel/*acx*.ko* /boot/modules/
No /boot/loader.conf adicione:
Para não precisar reiniciar, carregue na mão: # kldload acx100fw Pronto, agora você terá a interface acx0 disponível. Use o pciconf -lv se quiser saber qual foi sua sorte, na loteria que é adquirir essas placas (um dmesg também vai apresentar a informacão). Não é possível configurar completamente com o ifconfig(8). Para configurar os recursos wireless da placa use o acxtool que foi instalado:
Você verá o help:
# ifconfig acx0 inet 10.69.70.74 netmask 255.255.255.0
E então o acxtool com pelo menos os seguintes parâmetrod: acxtool acx0 -S <ssid> -C <canal> -M managed -u on -d rateon
Com ifconfig(8) você observará: acx0: flags=843<UP,BROADCAST,RUNNING,SIMPLEX> mtu 1500 Como não é possível configurar tudo usando o ifconfig(8), não será possível tornar a configuracão permanente com rc.conf(5), então use um recurso (pouco conhecido, mas documentado) do startup do FreeBSD e crie o /etc/start_if.acx0:
Pronto. A placa funciona com WEP, e com WPA só com PSK de até 64bits na senha (8 bytes), sem EAP e sem PSK maior que 8 bytes. Ainda assim apenas em hexadecimal (nesse caso use o wpa_passhorase(8) para converter para hexa). Espero que esse artigo seja útil pra poucas pessoas ;-) E aos que forem, tentem trocar de placa o quanto antes. A performance dessa placa é baixa e tem facilidade para erros de transmissão.
|
|||
ltima Atualizao ( 14/12/2008 ) |