Broadcom wireless (Português)

From ArchWiki
Jump to navigation Jump to search
Status de tradução: Esse artigo é uma tradução de Broadcom wireless. Data da última tradução: 2019-08-09. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Este artigo detalha como instalar e configurar um dispositivo de rede sem fio Broadcom.

Histórico

A Broadcom tem um histórico notável com seu suporte a dispositivos Wi-Fi relacionados ao GNU/Linux. Durante boa parte do seu histórico inicial, os dispositivos da Broadcom eram totalmente incompatíveis ou exigiam que o usuário mexesse no firmware. O conjunto limitado de dispositivos sem fio que eram suportados era feito por um driver de engenharia reversa. O driver b43 de engenharia reversa foi introduzido no kernel 2.6.24.

Em agosto de 2008, a Broadcom lançou o driver 802.11 Linux STA com suporte oficial a dispositivos sem fio da Broadcom no GNU/Linux. Este é um driver licenciado restritivamente e não funciona com ESSIDs ocultos, mas a Broadcom prometeu trabalhar para uma abordagem mais aberta no futuro.

Em setembro de 2010, a Broadcom lançou um driver totalmente código aberto. O driver brcm80211 foi introduzido no kernel 2.6.37 e no kernel 2.6.39 foi subdividido nos drivers brcmsmac e brcmfmac.

Os tipos de drivers disponíveis são:

Driver Descrição
brcm80211 Versão de driver de kernel principal (recomendada)
b43 Versão de driver de kernel por engenharia reversa
broadcom-wl Driver da Broadcom com licença restrita

Seleção de drivers

Para saber quais drivers podem ser operados no dispositivo de rede sem fio Broadcom do computador, será preciso detectar o ID do dispositivo e o nome do chipset. Cruze-os com a lista de dispositivos suportados pelos de drivers brcm80211 e b43.

$ lspci -vnn -d 14e4:

Instalação

brcm80211

O kernel contém dois drivers código abertos embutidos: brcmfmac para FullMAC nativo e brcmsmac para SoftMAC baseado em mac80211. Eles devem ser carregados automaticamente ao inicializar.

Nota:
  • brcmfmac possui suporte a chipsets mais novos, e possui suporte a modo AP, modo P2P ou criptografia de hardware.
  • brcmsmac possui suporte apenas a chipsets antigos como BCM4313, BCM43224, BCM43225.

b43

Dois drivers de código aberto de engenharia reversa são integrados ao kernel: b43 e b43legacy. O b43 possui suporte aos chipsets Broadcom mais recentes, enquanto o driver b43legacy possui suporte apenas aos primeiros chipsets BCM4301 e BCM4306 rev.2. Para evitar a detecção errônea do chipset da sua placa WiFi, coloque na lista negra o driver não utilizado.

Ambos os drivers exigem que o firmware não livre funcione. Instale b43-firmwareAUR ou b43-firmware-classicAUR.

Note:
  • BCM4306 rev.3, BCM4311, BCM4312 and BCM4318 rev.2 foram relatados como tendo problemas com b43-firmware. Use b43-firmware-classicAUR para essas placas.
  • BCM4331 foi relatado como tendo problemas com b43-firmware-classic. Use b43-firmwareAUR para essa placa.

broadcom-wl

Existem duas variantes do driver licenciado restrito:

Dica: A variante DKMS broadcom-wl-dkms
  • é agnóstico a kernel. Significa que ela possui suporte a diferentes kernels que você possa usar (e.g. linux-ckAUR).
  • é agnóstica a lançamento de kernel também. Ela será recompilada automaticamente após cada atualização de kernel ou nova instalação. Se você usa broadcom-wl ou outra variante dependente de lançamento de kernel (p.ex., broadcom-wl-ckAUR), pode acontecer de atualizações do kernel atrapalharem o funcionamento da rede sem fim de tempo em tempo até que o pacote seja sincronizado novamente.
  • vai precisar do pacote linux-headers para o(s) kernel(s) instalado(s) para compilar o módulo. Esses pacotes são opcionais para o pacote DKMS e precisarão ser instalados manualmente.

Instalação offline

Uma conexão com a Internet é a maneira ideal de instalar o driver broadcom-wl; muitos laptops mais novos com placas Broadcom dispensam portas Ethernet, portanto, um adaptador Ethernet USB ou Android tethering pode ser útil. Se você não tiver nenhum dos dois, será necessário primeiro instalar o grupo base-devel durante a instalação. Em seguida, use outro computador conectado à Internet para fazer o download do linux-headers e o tarball do driver do AUR e instale-os nessa ordem.

Manualmente

Atenção: Este método não é recomendado. Os drivers não rastreados podem se tornar problemáticos ou não funcionar nas atualizações do sistema.

Instale o driver apropriado para sua arquitetura de sistema no site da Broadcom. Depois disso, para evitar colisões de driver/módulo com módulos semelhantes e disponibilizar o driver, faça:

# rmmod b43
# rmmod ssb
# modprobe wl

O módulo wl deve carregar automaticamente lib80211 ou lib80211_crypt_tkip; do contrário, eles terão que ser carregados manualmente.

Se o driver não funcionar neste momento, talvez seja necessário atualizar as dependências:

# depmod -a

Para fazer com que o módulo seja carregado na inicialização, consulte Módulos de kernel. É recomendando que você coloque em lista negra os módulos conflitantes.

Solução de problemas

Configurando broadcom-wl no modo monitor

Para definir broadcom-wl no modo de monitor, você deve definir 1 para /proc/brcm_monitor0):

# echo 1 > /proc/brcm_monitor0

Ele irá criar uma nova interface de rede chamada prism0.

Para trabalhar no modo monitor, use essa interface de rede recém-criada.

Dispositivo inacessível após atualização do kernel

Desde o kernel 3.3.1, o módulo bcma foi introduzido. Se estiver usando um driver brcm80211, certifique-se de que ele não esteja em lista negra. Deve ser negado se usar um driver b43.

Se você estiver usando broadcom-wl, desinstale e reinstale-o após atualizar seu kernel, ou alterne para o pacote broadcom-wl-dkms.

Dispositivo com driver broadcom-wl são funcionando ou não sendo mostrado

Certifique-se de que os módulos corretos estão na lista negra e, ocasionalmente, pode ser necessário colocar os drivers brcm80211 na lista negra, caso tenham sido acidentalmente detectados antes de o driver wl ser carregado. Além disso, atualize as dependências dos módulos com depmod -a, verifique a interface sem fio com ip addr, os upgrades de kernel exigirão uma atualização do pacote não-DKMS.

Interfaces trocadas com broadcom-wl

Os usuários do driver broadcom-wl podem achar que suas interfaces Ethernet e Wi-Fi foram trocadas. Consulte Configuração de rede#Interfaces de rede para uma resposta.

Interface está sendo mostrada, mas não permite conexões

Acrescente ao final o seguinte parâmetro do kernel:

b43.allhwsupport=1

Suprimindo mensagens de console

Você pode continuamente obter algumas mensagens verbosas e irritantes durante a inicialização, semelhante a

phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
enabled, active

Para desabilitar essas mensagens, aumente o nível de log das mensagens impressas que chegam ao console - consulte Inicialização silenciosa#sysctl.

Dispositivo BCM43241 não detectado

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: A página Wireless Wiki do brcm80211 lista esse chip como dispositivo SDIO suportado desde o kernel Linux 3.7. (Discuss in Talk:Broadcom wireless)

Este dispositivo não será exibido com lspci nem lsusb; ainda não há solução conhecida. Por favor, remova esta seção quando for resolvido.

Conexão está instável com alguns roteadores

Se nenhum outra abordagem ajudar, instale linux-lts ou use uma versão anterior.

Nenhum 5GHz para dispositivos BCM4360 (14e4:43a0) / BCM43602 (14e4:43ba)

O problema parece estar vinculado a um problema de canal, pelo menos nos Estados Unidos. Alterar o canal sem fio para um número de canal inferior (como 40) parece permitir a conexão a bandas de 5GHz.

Dispositivo funciona de forma intermitente

Em alguns casos (p.ex., usando BCM4331 e b43-firmwareAUR), a conexão Wi-Fi funciona de forma intermitente. Uma forma de corrigir isso é verificar se a placa está hard-blocked ou soft-blocked pelo kernel e, se estiver, desbloqueá-la com rfkill.