10.09  
Inicio arrow Artigos arrow Adicionando suporte a D-Link DWL-G650+ (todas elas) no FreeBSD.
Principal
Inicio
Noticias
Artigos
Regras da Lista
Assinar a Lista
Histórico da Lista
PC-BSD: Artigos
PC-BSD: Notícias
Galeria de Imagens
Contador Usuários FUG
FUGs Estaduais
Downloads
Enquetes
FAQ
Resumo do Site
Links
Pesquisar
Contato
Sobre a FUG-BR
RSS / Twitter
-
DOC-BR (FUG BR)
Introdução
Projeto DOC-BR
Handbook
FAQ Oficial
-
+ Noticias
Alertas de Seguranca
Alertas em Ports
BSD em Geral
DaemonNews (Ingles)
MyFreeBSD
Todas Categorias
-
Login
Nome de Usuário

Senha

Lembrar login
Esqueceu sua senha?
Sem conta? Crie uma
Histórico da Lista
  • [FUG-BR] OT: descobrir quem ta usando determinado IP
  • Re: [FUG-BR] OT: descobrir quem ta usando determinado IP
  • Re: [FUG-BR] OT: descobrir quem ta usando determinado IP
  • [FUG-BR] RES: OT: descobrir quem ta usando determinado IP
  • Re: [FUG-BR] OT: descobrir quem ta usando determinado IP
  • [FUG-BR] FreeBSD para banco de dados
  • Re: [FUG-BR] FreeBSD para banco de dados
  • Re: [FUG-BR] FreeBSD para banco de dados

  • Alertas em Ports
  • webkit-gtk2 -- Multiple vulnabilities
  • vim6 -- heap-based overflow while parsing shell metacharacters
  • mozilla -- multiple vulnerabilities
  • sudo -- Flaw in Runas group matching
  • lftp -- multiple HTTP client download filename vulnerability



  • Adicionando suporte a D-Link DWL-G650+ (todas elas) no FreeBSD. PDF Imprimir E-mail
    Por P. Tracanelli (FreeBSD Brasil)   
    14/12/2008

    DLink G-650(+)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.

    DLink G-650(+) 

    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:

    • Texas Instruments (TI) 802.11b+ 22Mbps Wireless Adapter
    • TNETW1130(ACX111) 802.11b/g Wireless Cardbus/PCI Adapter
    • Texas Instruments (TI) 802.11b+/g 54Mbps Wireless Adapter
    • Texas Instruments (TI) 802.11b/g 54Mbps Wireless Adapter

    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
    Texas Instruments (TI) ACX100 IEEE 802.11 driver.

    The acx driver supports ACX100 based Cardbus or PCI network adapters.

    The following cards are known to work with the acx driver:

    Card                  Bus
    Binatone WL-1000      CARDBUS
    D-Link DWL-650+       CARDBUS
    US Robotics USR2210   CARDBUS
    US Robotics USR2216   PCI


    Excelente, era o que eu precisava, certo? Apenas parcialmente. Primeiro, porque o módulo em questão não está na base do FreeBSD? Simples, ele usa um firmware proprietário da Dlink com termos de licenca ainda mais assustadores que a Intel e seus firmwares de placa wireless. Resultado, temos que sempre fazer download do firmware no site da DLink.

    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:

    # fetch -o /tmp/ http://dev.kewl.org/acx100+111/acx-6.1.tgz

    Depois descompacte e mande compilar:

    # cd /tmp/
    # tar xzf acx-6.1.tgz
    # cd acx-6.1/
    # make

    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/
    /boot/kernel/acx100fw.ko -> /boot/modules/acx100fw.ko
    /boot/kernel/acx111fw.ko -> /boot/modules/acx111fw.ko
    /boot/kernel/if_acx.ko -> /boot/modules/if_acx.ko
    /boot/kernel/if_acx.ko.symbols -> /boot/modules/if_acx.ko.symbols

     

    No /boot/loader.conf adicione:

    acx100fw_load="YES"
    acx111fw_load="YES"
    if_acx_load="YES"

    Para não precisar reiniciar, carregue na mão:

    # kldload acx100fw
    # kldload acx111fw
    # kldload if_acx

    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:

    # rehash
    # acxtool

    Você verá o help:

    acx100/111:

       -M str              Set operating mode to str (managed, ad-hoc, master)
       -S str              Set the SSID to str                                
       -C num              Set the Channel to num                             

       -P on/off           Set WEP privacy mode on or off
       -W num:str          Set WEP tx key num (0..3) to str

       -T num              Set Tx BROADCAST/MULTICAST RATE to num (1, 2, 5.5, 6 etc)
       -t num              Set Tx MANAGEMENT RATE to num                            

       -r num              Set RATE FALLBACK to num
       -s num              Set SHORT RETRY LIMIT to num
       -l num              Set LONG RETRY LIMIT to num (unsupported)
       -u on/off           Set RATE UP to on (FAST) or off (SLOW)
       -m num              Set MAX TX LIFETIME to num
       -p num              Set POWER LEVEL to num
       -a num              Set CURRENT ANTENNA to num (ant1:0x080a ant2:0x044a ?)

    acx100:
       -c num              Set CLEAR CHANNEL ASSESSMENT MODE to num
       -e num              Set ENERGY DETECT THRESHOLD to num

    acx111:
       -f num              Set FRAG THRESHOLD to num

    debug args (one per option):
       -d on/off           Turn on all debugging options
       -d rateon/rateoff   Turn Tx RATE REPORTING on or off
       -d erron/erroff     Turn Tx ERROR REPORTING on or off
       -d nodeon/nodeoff   Turn NODE REPORTING on or off
       -d num              Set MGMT REPORTING mask to num (0=off, eg 0xfeef)

    Eg: acxtool acx0 -M managed -S kewl5 -C 5 -P on -W 0:0xc0dedeadc0dedeadc0dedead69

        set the ssid to kewl5
        set the channel to 5
        set the WEP privacy mode on
        set the WEP tx key index to 0
        and set the WEP tx key to 0xc0dedeadc0dedeadc0dedead69


    Em negrido as opcões que provavelmente você vai usar com mais frequência. Configure então sua placa, adicionando o endereco IP com ifconfig(8) e configurando a placa com acxtool:

    # 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

    # acxtool acx0 -S freebsdap -C 1 -M managed -u on -d rateon

    Com ifconfig(8) você observará: 
    acx0: flags=843<UP,BROADCAST,RUNNING,SIMPLEX> mtu 1500
    inet 10.69.70.74 netmask 0xffffff00 broadcast 10.69.70.255
    ether 00:c0:49:ca:3f:b3
    media: IEEE 802.11 Wireless Ethernet autoselect
    status: associated
    ssid freebsdap channel 1 (0) bssid 00:c0:49:c3:6c:f9
    authmode OPEN privacy ON deftxkey 1 txpowmax 63 txpower 63

    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:

    # cat /etc/start_if.acx0
    /usr/local/sbin/acxtool acx0 -S freebsdap
    /usr/local/sbin/acxtool acx0 -M managed
    /usr/local/sbin/acxtool acx0 -C 1
    /usr/local/sbin/acxtool acx0 -u on -d rateon
    /sbin/ifconfig acx0 10.69.70.74/24
    # /sbin/dhclient acx0
    /sbin/route flush
    /sbin/route add default 10.69.70.1

    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.

     

     

    Comentários
    Por jose roberto gomes da cunha em 08/09/2010 12:44:08
    tenho um DWL-G650+ e gostaria de saber se posso usar o mesmo no meu pc e outra pergunta qual o uso deste card bus é o mesmo cartão que se usa em alguns pcs poi no meu não tem entrada para cartão tem como usar pela porta usb com algum adptador espero resposta. obrigado e que DEUS os abençoe


    Comente!*
    Nome:
    E-mail
    Homepage
    Título:
    Comentário:

    Código:* Code

    Última Atualização ( 14/12/2008 )
     
    < Anterior   Próximo >
    FUG-BR - Espalhando BSD
    Dicas Rápidas:
    Quer saber todos os arquivos que um dado port instalou? Use pkg_info -L <nome do port>. Quer reler a mensagem de pós-instalação de um port já instalado? Use pkg_info -D <nome do port>. Quer consultar informações de um port sem precisar mencionar seu nome e versão exatamente como registrados? Use pkg_info -x <expressao>, por exemplo, pkg_info -L -x perl
     






    Wallpapers
    Sua Opiniao
    Online:
    Nós temos 24 visitantes online


    Devil Store - Sua loja BSD
    FreeBSD Brasil LTDA

    FUG-BR: Desde 1999, espalhando BSD pelo Brasil.