mar
4
2009

Instalando Broadcom BCM4312 com driver nativo para Linux.

Quando escrevi o post Instalando wireless no Mandriva (http://www.tvieira.net/instalando-wireless-no-mandriva/) disse que havia um driver nativo para linux no site da Broadcom e que não estava conseguindo instalar, por causa que estava dando conflito com algumas versões do kernel. Mas me enganei, o que eu estava fazendo era instalando de modo errado, e depois de tanto fuçar, consegui encontrar a maneira correta de instalar e fazer funcionar essa placa com o driver nativo do linux. Lembrando que instalei no Debian, mas acredito que essa dica possa servir para outras distribuições também.
Então vamos ver como podemos fazer para instalar:

01 – Vamos baixar o driver do placa no site da Broadcom: http://www.broadcom.com/support/802.11/linux_sta.php.

02 – Temos que ter instalado todos os módulos para compilar driver (headers) do kernel que estamos utilizando, para isso faça:

# aptitude update
# aptitude install linux-kbuild-`uname -r` libncurses5-dev
# aptitude install build-essential module-assistant linux-headers-`uname -r` linux-source-`uname -r | cut -f1 -d-`

03 – Ok, com os pacotes acima instalados estamos pronto para compilar o driver. Descompacte o download do driver que fizemos no site da Broadcom em algum diretório de sua preferência, depois abra o terminal, e entre no diretório que você descompactou o driver, e disse o seguinte código:

# make -C /lib/modules/`uname -r`/build M=`pwd`

04 – Descarregue e carregue os módulos da placa wireless, com os seguintes comandos:

# rmmod bcm43xx
# rmmod b43
# rmmod b43legacy
# modprobe ieee80211_crypt_tkip
# insmod wl.ko

05 – Feito isso, vamos copiar para o diretório de módulos do kernel, os módulos que acabamos de carregar:

# cp wl.ko /lib/modules/`uname -r`/kernel/net/wireless/
# depmod -a

Pronto! Somente isso para fazer a sua placa wireless BCM4312 funcionar.

Essa dica fiz no kernel 2.6.22, 2.6.24 e 2.6.28 e em todos esses kernel funcionou perfeitamente.

Espero que possam aproveitar essa dica e desfrutar da sua placa wireless funcionando com o driver nativo para linux.

Abraços



41 Comentários + Comentário

  • Funciounou comigo, muito melhor que o b43-fwcutter, hehehe. Agora minha conexão não fica caindo sempre como acontecia. Parabéns pelo artigo. =D

    • Muito obrigado! e fico feliz por ter ajudado.

      Realmente, nada melhor do que o driver nativo do linux né!….rsrsrs

  • cara eu fiz td…
    mais na hr do
    insmod wl.ko

    ele nao axa esse modulo
    e nos rmmod ele nao axa nenhum pra remover tbm…

    • Rafael, obrigado pela visita e o comentário!

      Quando ao rmmod não achar nenhum módulo para descarregar, não tem problema, melhor ainda!

      Quanto ao insmod wl.ko não achar o módulo, você fez o modprobe ieee80211_crypt_tkip antes? Apareceu algum erro?

      Esse comando tem que ser feito dentro da pasta que você descompactou o driver da placa wireless.

      Qualquer coisa posta aqui denovo que vamos tentar te ajudar.

      Abraços

  • Olá

    tenho um notebook HP Pavilion com esta placa wireless,e esta me custando muito fazer subir ,rsrs
    Eu uso Slackware 12.2 , segui a risca seu tutorial e aparentemente correu tudo bem,mas toda vez que tento subir ela eu não consigo.

    ifconfig wnal0 up
    SIOCSIFFLAGS: No such file or directory

    Quando eu dou iwconfig eu vejo ela como wlan0,mas não consigo faze-la subir,alguma dica ?

    abraços

  • Digitei comando errado no post acima.
    Na verdade é “ifconfig wlan0 up”

    Alguma idéia do que pode estar acontecendo ?

    • Ola José Henrique, obrigado pela visita e comentário!

      Quando se dá o comando modprobe ieee80211_crypt_tkip ja deveria estar carregado o módulo e depois com o comando insmod wl.ko ja deveria estar funcionando a placa wireless. Você fez a cópia para o diretório do kernel?

      # cp wl.ko /lib/modules/`uname -r`/kernel/net/wireless/
      # depmod -a

      Deu algum erro?

      No meu caso a minha placa não esta em wlan0 e sim no eth1. Não é o seu caso também? Essa porta wlan0 é usava quando é instalada driver pelo ndiswrapper.

      tem fazer o ifconfig eth1 up

      Qualquer coisa posta aqui de novo por favor!

      Abraços

  • Alguem sabe como resolver esse problema? Quando estou tentando compilar da esse erro. :(

    make: Entrando no diretório `/usr/src/linux-headers-2.6.26-1-amd64′
    scripts/Makefile.build:46: *** CFLAGS was changed in “/usr/src/linux-headers-2.6.26-1-amd64//Makefile”. Fix it to use EXTRA_CFLAGS. Pare.
    make: ** [_module_] Erro 2
    make: Saindo do diretório `/usr/src/linux-headers-2.6.26-1-amd64′

    Desde já agradeço!

    • Ola Marcelo!

      Teste instalar seguir esse tutorial http://wiki.forumdebian.com.br/index.php/Compilando_Drivers antes de compilar drivers.

      Se ja seguiu, você ja tentou fazer a instalação e algum outro modo? Se fez tente dar o comando make clean e depois se mesmo assim continuar baixe novamente o driver no site da Broadcom.

      Caso não resolva comente aqui de novo que tentaremos ajudar.

      Abraços

  • Tiago, consegui compilar o Driver valewww. Mas agora apecer outro probleminha. Quando executo o comando: insmod wl.ko

    Ele aparece a seguinte messagem: insmod: can’t read ‘wl.ko’: No such file or directory

    Conseguentimente quando tento copiar aparece a seguinte messagem:

    cp: impossível fazer stat em `wl.ko’: Arquivo ou diretório não encontrado

    Obs.: Rodei antes o comando # modprobe ieee80211_crypt_tkip antes e estou no diretorio onde descompactei o drive.

  • Desculpe Tiago, realmente estava fazendo no local errado. Agora o erro que está ocorrendo é o seguinte:

    Quando executo o comando insmod wl.ko aparece a messagem:

    insmod: error inserting ‘wl.ko’: -1 Invalid module format

    :(

    • Ola Marcelo!

      Quando você deu o comando modprobe ieee80211_crypt_tkip não ocorreu nenhum erro? E na compilação do driver? foi tudo tranquilo?

      Porque esse módulo é feito na compilação do driver, deve ter ocorrido algum erro. Isso ocorreu?

      Abraços

  • Quando compilo aparece a messagem abaixo:

    make: Entrando no diretório `/usr/src/linux-source-2.6.26′

    LD /home/marcelo/wireless/built-in.o

    CC [M] /home/marcelo/wireless/src/wl/sys/wl_linux.o

    CC [M] /home/marcelo/wireless/src/wl/sys/wl_iw.o

    CC [M] /home/marcelo/wireless/src/shared/linux_osl.o

    LD [M] /home/marcelo/wireless/wl.o

    Building modules, stage 2.

    MODPOST 1 modules

    CC /home/marcelo/wireless/wl.mod.o

    LD [M] /home/marcelo/wireless/wl.ko

    make: Saindo do diretório `/usr/src/linux-source-2.6.26′

    Depois rodo o comando modprobe ieee80211_crypt_tkip e funciona sem nenhum erro.

    Mas quando rodo o comando insmod wl.ko aparece o seguinte erro:

    insmod: error inserting ‘wl.ko’: -1 Invalid module format

    Desde já agradeço a atenção

    • Ola Marcelo!

      Vamos denovo!…rsrsrsrs

      Entre no diretório que você descompactou o driver, e faça:

      make -C /lib/modules/’uname -r’/build M=`pwd` clean
      make -C /lib/modules/’uname -r’/build M=`pwd`
      rmmod bcm43xx
      rmmod b43
      rmmod b43legacy
      modprobe ieee80211_crypt_tkip
      insmod /home/marcelo/wireless/wl.ko

      Vamos ver se funciona agora, fique atento quando compilar o driver para qual diretório esta indo o arquivo wl.ko e coloque o diretorio que ele esta quando for executar a função insmod.

      Abraços

  • Rapaz sei mais não o q faço rsrsrsrs. quando compilo está indo para o diretorio /home/marcelo/wireless

    rodei o comando: insmod /home/marcelo/wireless/wl.ko e aparece o erro abaixo

    insmod: error inserting ‘/home/marcelo/wireless/wl.ko’: -1 Invalid module format

    E ai tem alguma idéia?

    • Ola Marcelo!

      Vamos tentar mais uma coisa!….rsrsrsrs

      Faz o seguinte, copia o wl.ko primeiro para os módules do kernel para depois dar o insmod wl.ko:

      # cp wl.ko /lib/modules/`uname -r`/kernel/net/wireless/

      Depois tentei o insmod wl.ko.

      Abraços

  • Tiago.. rsrsrs rapaz o negocio ta ruim… o mesmo erro. :cry: . Tem alguma outra idéia? Será q pode ser a versão do kernel 2.6.26?

    • Cara acredito que não seja o kernel, pois eu ja instalei o driver no Debian com a mesma versão do kernel e não ocorreu nenhum erro!

      Eu vou pesquisar sobre o que pode ser o erro e te aviso! Porque as alternativas do meu conhecimento limitado ja foram! :D

      Abraços

  • Existe uma ferramente nos repositórios do debian para a extração e utilização do firmware da referida placa da broadcom.. o nome do pacote é b430fwcutter.. somando a instalação de tal pacote com o utilitário wifi-radar o problema acaba por ser resolvido.. mas de qualquer forma, muito bons o site e a dica.. valeus!

  • Cara, muito obrigado mesmo!
    Comprei um notebook Dell Inspiron 1525 que vem com essa placa wireless e não conseguia fazer funcionar no Debian nem com b43-fwcutter. Seguindo tuas dicas, funcionou perfeito!

    Vale comentar que a dica funciona com kernel 2.6.26! :wink:

    • Ola Bryan!

      Tenho o mesmo notebook! Comigo funcionou em todos os kernel que eu testei!

      Abraços e obrigado pela visita e comentário!

  • Ola,

    muito bom seu artigo, e vejo que tem outros similares, porem estou com problemas na compilacao, sei que meu problema eh muito simples, porem nao estou consigo ver o “problema” (provavelmente alguma desatencao).

    Primeiramente, meu laptop eh um Lenovo S10, instalei um Debian squeeze zeradinho e estou configurando tudo agora, entao talvez seja falta de algum pacote, porem ja instalei, headers, source, module-assistant.
    Kernel: 2.6.26-2-686

    Na hora em que descompacto o tar.gz do driver, o Makefile parece que nao tem “targets”, sabe me dizer o que estou errando??:

    localhost:/usr/src/hybrid_wl# ls -l
    total 608
    -rwxr-xr-x 1 root src 605561 2009-05-07 11:09 hybrid-portsrc-x86_32-v5_10_91_9.tar.gz
    drwxr-sr-x 2 54224 users 4096 2009-04-20 23:55 lib
    -rw-r–r– 1 54224 users 1655 2009-04-22 17:49 Makefile
    drwxr-sr-x 5 54224 users 4096 2009-04-20 23:54 src

    localhost:/usr/src/hybrid_wl# make -C /lib/modules/2.6.26-2-686/build/ M=`pwd` clean
    make: Entering directory `/lib/modules/2.6.26-2-686/build’
    make: *** No rule to make target `clean’. Stop.
    make: Leaving directory `/lib/modules/2.6.26-2-686/build’

    Li o README do pacote e diz que o Makefile seria algo como “After untar’ing you should have a src and lib sub directory plus a Linux
    2.6 “kbuild” external makefile (Makefile)”

    localhost:/usr/src/hybrid_wl# cat Makefile | grep -v ^$|grep -v ^#
    obj-m += wl.o
    wl-objs :=
    wl-objs += src/wl/sys/wl_linux.o
    wl-objs += src/wl/sys/wl_iw.o
    wl-objs += src/shared/linux_osl.o
    EXTRA_CFLAGS :=
    EXTRA_CFLAGS += -I$(src)/src/include
    EXTRA_CFLAGS += -I$(src)/src/wl/sys
    EXTRA_LDFLAGS := $(src)/lib/wlc_hybrid.o_shipped

    seria isso mesmo?

    Obrigado.

  • RESOLVIDO!

    hehe, ateh que foi rapido, tentei de tudo e quando mudei a pasta build pra apontar pros headers resolveu (duhh).

    Valeu novamente. =)

    Lucas.

    • Ola Lucas! tudo bem?

      Que bom que resolveu, era isso mesmo!

      Quanto aos artigos similares, deve ter muitos, porque é a maneira de instalar, e essa maneira esta no readme do driver, como você pode ter até visto! ;)

      Obrigado pela visita e comentários

      Abraços

  • Tiago, consegui instalar o problema estava no kernel 2.6.26. Atualizei para o 2.6.28 e funcionou normalmente. Vlw pelas digas!!!
    :grin:

    • Ola Marcelo!

      Que bom que conseguiu! Mas estranho… eu ja instalei no kernel 2.6.26, mas ainda bem que deu certo!

      Abraços

  • Tiago,

    Quando executo o comando make -C /lib/modules/`uname -r`/build M=`pwd` ele retorna as seguintes linhas:

    make: Entrando no diretório `/usr/src/linux-headers-2.6.26-2-686′
    LD /home/juliano/Wireless/hybrid-portsrc-x86_32-v5_10_91_9/built-in.o
    CC [M] /home/juliano/Wireless/hybrid-portsrc-x86_32-v5_10_91_9/src/wl/sys/wl_linux.o
    CC [M] /home/juliano/Wireless/hybrid-portsrc-x86_32-v5_10_91_9/src/wl/sys/wl_iw.o
    CC [M] /home/juliano/Wireless/hybrid-portsrc-x86_32-v5_10_91_9/src/shared/linux_osl.o
    LD [M] /home/juliano/Wireless/hybrid-portsrc-x86_32-v5_10_91_9/wl.o
    Building modules, stage 2.
    MODPOST 1 modules
    WARNING: modpost: missing MODULE_LICENSE() in /home/juliano/Wireless/hybrid-portsrc-x86_32-v5_10_91_9/wl.o
    see include/linux/module.h for more information
    CC /home/juliano/Wireless/hybrid-portsrc-x86_32-v5_10_91_9/wl.mod.o
    LD [M] /home/juliano/Wireless/hybrid-portsrc-x86_32-v5_10_91_9/wl.ko
    make: Saindo do diretório `/usr/src/linux-headers-2.6.26-2-686′

    depois da tudo certo, porém a luz do wireless não acende e quando executo o comando iwconfig não me mostra a interface wlan0. Sabe me dizer o q está acontecendo? Não consigo instalar o wireless de jeito nenhum… :sad:

    • Ola Juliano, obrigado pelo comentário!

      Quando você digita o insmod wl.ko retorna algum erro? Pois é com esse comando que a luz funciona no mesmo instante que você aperta o enter quando termina de digitar esse comando.

      Pela saída que você postou, parece que esta tudo ok, pois podemos ver que o arquivo wl.ko foi criado na pasta /home/juliano/Wireless/hybrid-portsrc-x86_32-v5_10_91_9/wl.ko.

      Verifique se o comando insmod wl.ko esta funcionando corretamente então!

      Abraços

  • Tiago,

    Está aparecendo a seguinte mensagem:

    “insmod: error inserting ‘wl.ko’: -1 File exists”

    porem o arquivo wl.ok está lá:

    juliano:/home/juliano/Wireless/hybrid-portsrc-x86_32-v5_10_91_9# ls
    built-in.o lib Makefile modules.order Module.symvers src wl.ko wl.mod.c wl.mod.o wl.o

    Não sei mais o q fazer…

  • O pessoal comentou em atualizar o Kernel para o 2.6.28. como eu faço isso pra resolver o problema?

    vlw

  • Cara essa dica salvou minha vida rs, já estava perdendo as esperanças, obrigado!

  • Gostaria de saber como achar driver pro modem 3g aiko E75 pro ubuntu 9.4 , aguardo retorno, desde já grato.

  • Aqui funcionou redondo. (Dell Inspiron 1525)

    • Ola Paulo,

      O meu é o mesmo notebook e sempre deu certo. Os computadores da Dell tem uma ótima compatibilidade com o linux.

      Abraços

  • Dai kra blz. Então, fiz todos os passos, a compilação, removi os módulos antigos, verifiquei que no /udev/rules.d/70-persistent-net-rules o MAC da placa wireless apareceu como interface eth1.
    Consegui subi ela, a luz da placa acendeu. No entanto, nao consegue encontrar nenhuma rede. é como se só estivesse ligada, mas sem funcionar.

    Detalhe, estou do lado de meu router wireless que uso normalmente com o windows.

    Minha distro é 2.6.26-2-amd64 #1 SMP Thu Aug 19 00:37:36 UTC 2010 x86_64 GNU/Linux

    Alguma idéia do que pode estar acontecendo? Vlw.

  • Você esta usando o Debian stable? Pois o seu kernel é bem antigo!

    Caso não posso atualizar o kernel, tente essa dica da wiki oficinal do Debian:

    http://wiki.debian.org/bcm43xx#bcm43xx-etch

    Abraços

  • Então, segui o tutorial pra atualiza o Kernel, demoro muito tempo instalando os .deb. Mas nada, não atualizo a versão no uname.

    tah blz, segui a wiki do debian, procedimentos sem erros novamente.
    é muito estranho, segue resultado do iwconfig

    —————————————————————————————————————————–
    eth2 IEEE 802.11bg ESSID:”" Nickname:”"
    Mode:Managed Frequency:2.412 GHz Access Point: Not-Associated
    Bit Rate:54 Mb/s Tx-Power:24 dBm
    Retry min limit:7 RTS thr:off Fragment thr:off
    Encryption key:off
    Power Managementmode:All packets received
    Link Quality=5/5 Signal level=0 dBm Noise level=0 dBm
    Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
    Tx excessive retries:0 Invalid misc:0 Missed beacon:0
    ————————————————————————————————————————-

    Mas nada, ja instalei diferentes ferramentas para procurar as redes wifi, mas simplismente, não acha nada.

    Baixei o lenny 64 stable netinst. Não imagino o que pode estar acontecendo…

    • Ola Odair,

      Pelos dados que você me passou a placa não esta funcionando mesmo, esta instalada mas não esta funcionando. Tente o seguinde código e veja se acontece alguma coisa:

      # ifconfig eth2 up

      Abraços

Faça um comentário

XHTML: Você pode usar estas tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Parceiros

  • C# Brasil Blog com muitas dicas interessantes sobre C#, ASP.NET, WinForm, WebForm, AJAX e muito mais.
  • Epidemic GNU/Linux Website da distribuição linux baseada no Debian testing.
  • sidux Brasil Website da comunidade brasileira do sidux, distribuição baseada no Debian unstable (sid).
  • SUD.tvieira.net Blog com conteúdo sobre A Igreja de Jesus Cristo dos Santos dos Últimos Dias.

Anúncio

Lista de Links

  • Br-Linux Blog sobre o que rola no mundo do software livre.
  • Dicas-L Site com várias dicas sobre linux.
  • Distrowatch Site com informações de várias distribuições linux e com o rank de distribuições mais conhecido no mundo linux.
  • Notícias Linux Site com notícias sobre o mundo linux.
  • Viva o Linux Site com muitas informações como dicas e tutoriais sobre linux.