Ir para o conteúdo principal
Driver ALFA quebrou após atualização do kernel? Guia completo de correção
  1. Blog/

Driver ALFA quebrou após atualização do kernel? Guia completo de correção

Tabela de conteúdos

Você executa sudo apt upgrade, reinicia e seu adaptador ALFA sumiu — sem interface, sem luzes, nada. Essa é a pergunta de suporte mais comum em torno dos adaptadores ALFA Network USB WiFi no Linux, e as atualizações do kernel são quase sempre o culpado. Este guia conduz você por um processo sistemático de diagnóstico e reparo para as duas famílias de chipsets mais afetadas: RTL8812AU (encontrado no AWUS036ACH e AWUS036ACS) e MT7921AUN (encontrado no AWUS036AXM e AXML). Siga cada seção em ordem e seu adaptador estará de volta em menos de 15 minutos.

TL;DR: A causa principal de quebra de driver ALFA apos atualizacao de kernel e a dessincronizacao entre headers e modulo. O RTL8812AU e corrigido com dkms autoinstall, o MT7921AUN requer instalacao de firmware-misc-nonfree, e a correcao de longo prazo e usar apt full-upgrade.

Por que atualizações do kernel quebram drivers
#

Drivers WiFi no Linux vêm em dois tipos: drivers dentro do kernel que acompanham a árvore de código-fonte do kernel, e drivers fora da árvore que existem fora dele. Entender qual tipo você tem explica exatamente por que as atualizações causam problemas.

Drivers fora da árvore e DKMS
#

O chipset RTL8812AU usa um driver fora da árvore mantido pela comunidade (mais comumente o fork aircrack-ng/rtl8812au). Como não faz parte do código-fonte do kernel oficial, ele deve ser compilado contra os headers do seu kernel em execução específico. Toda vez que a versão do kernel muda — mesmo uma atualização de patch menor como 6.6.156.6.20 — o módulo compilado não é mais compatível e o kernel recusa carregá-lo.

DKMS (Suporte Dinâmico de Módulos do Kernel) é a solução padrão. O DKMS registra o código-fonte do driver com um gancho de nível de sistema que recompila automaticamente os módulos sempre que um novo pacote do kernel é instalado. Quando o DKMS está configurado corretamente, as atualizações do kernel são transparentes: você reinicia no novo kernel e seu adaptador já está funcionando.

O DKMS pode falhar silenciosamente por dois motivos:

  1. Headers do kernel ausentes — o compilador precisa que linux-headers-$(uname -r) esteja instalado no momento em que o novo kernel chega. Se os headers chegarem após o kernel, o DKMS perde sua janela de build.
  2. dkms.conf desatualizado — se o arquivo de configuração da versão do driver instalado não corresponde mais à árvore de código-fonte, o build falha com erros crípticos.

Drivers dentro do kernel (MT7921AUN)
#

O chipset MT7921AUN está no kernel principal desde a versão 5.18. Isso significa que nenhum passo de compilação é necessário — o kernel já sabe como se comunicar com o hardware. No entanto, o driver ainda depende de um blob de firmware (mt7921u.bin) fornecido por um pacote separado. Se esse pacote estiver faltando ou se uma atualização do kernel mudar a API de firmware esperada, o adaptador pode parecer que carrega mas falha ao se associar com qualquer rede.

Comandos de diagnóstico rápido
#

Antes de tocar em qualquer coisa, execute esses dois comandos para entender seu ponto de partida:

# Qual kernel está executando atualmente?
uname -r

# Quais módulos DKMS estão compilados (e para quais kernels)?
sudo dkms status

Se dkms status mostra seu driver RTL8812AU compilado para um kernel mais antigo mas não para o atual, você encontrou seu problema.


Passo 1: Diagnosticar seu driver
#

Trabalhe por esta sequência de diagnóstico de cima para baixo. Cada verificação reduz a causa raiz antes de você começar a fazer mudanças.

# Verificar o kernel atual
uname -r

# Verificar se existe alguma interface sem fio
ip link show | grep -E "wlan|wlp"

# Verificar se o módulo do driver está atualmente carregado
lsmod | grep -E "88XXau|rtl8812au|mt7921u"

# Verificar o status de build do DKMS para adaptadores RTL8812AU
sudo dkms status

# Varrer o buffer de mensagens do kernel para mensagens de erro relevantes
sudo dmesg | grep -E "ALFA|rtl8812|mt7921" | tail -20

Interpretando os resultados:

SaídaSignificado
ip link não retorna nada sem fioMódulo do kernel não carregado ou hardware não enumerado
lsmod não mostra módulo correspondenteO módulo falhou ao carregar — verifique dmesg para erros
dkms status mostra broken ou ausente para o kernel atualO build do DKMS falhou — siga a correção RTL8812AU
dmesg mostra firmware: failed to load mt7921uPacote de firmware ausente — siga a correção MT7921AUN
dmesg mostra disagrees about version of symbolMódulo compilado contra headers do kernel incorretos
Se ip link mostra a interface mas ela desaparece quando você tenta usá-la, vá direto para a tabela de solução de problemas específica do adaptador. Uma interface visível mas não funcional tem causas diferentes de uma completamente desaparecida.

Correção: Driver RTL8812AU (AWUS036ACH, ACS, EACS)
#

O RTL8812AU é o chipset ALFA mais amplamente usado para testes de penetração por causa de seu suporte dual-band e modo monitor confiável. Requer um driver fora da árvore e, portanto, é o chipset mais frequentemente quebrado por atualizações do kernel.

4.1 — Instalar os headers do kernel
#

O primeiro passo, antes de tocar em qualquer driver, é garantir que os headers do seu kernel atual estejam instalados:

sudo apt update
sudo apt install linux-headers-$(uname -r)

Se este comando terminar corretamente, os headers já estão presentes e a recompilação do DKMS pode prosseguir. Se reportar que o pacote não pode ser encontrado, seu kernel pode ser muito novo para o snapshot atual do repositório — execute sudo apt full-upgrade primeiro para obter os headers correspondentes, depois reinicie antes de continuar.

4.2 — Recompilar via DKMS (caminho mais rápido)
#

Com os headers prontos, peça ao DKMS para recompilar todos os módulos registrados para o kernel em execução:

sudo dkms autoinstall

Observe a saída cuidadosamente. Um build bem-sucedido termina com DKMS: install completed. Se tiver sucesso, recarregue o módulo sem reiniciar:

sudo modprobe 88XXau
ip link show | grep wlan

Se a interface aparecer, você terminou. Prossiga para o passo 4.4 para verificar o modo monitor.

4.3 — Reinstalação completa a partir do código-fonte (quando o DKMS falha)
#

Se dkms autoinstall reportar erros, o código-fonte do driver registrado está corrompido ou desatualizado. Remova-o completamente e reinstale a partir do último código-fonte upstream:

# Remover todas as versões registradas no DKMS do driver
sudo dkms remove rtl8812au/5.6.4.2 --all 2>/dev/null

# Clonar o último código-fonte do driver
git clone https://github.com/aircrack-ng/rtl8812au.git
cd rtl8812au

# Registrar código-fonte com DKMS, compilar e instalar em uma etapa
sudo make dkms_install
O número de versão 5.6.4.2 no comando dkms remove é um lançamento comum, mas o seu pode ser diferente. Execute sudo dkms status primeiro e use a string de versão exata mostrada na saída.

Após o build ser concluído:

sudo modprobe 88XXau
ip link show | grep wlan

4.4 — Verificar o modo monitor
#

O adaptador está fisicamente presente e o driver está carregado. Confirme que o modo monitor — a funcionalidade que torna este adaptador valioso para testes de segurança — ainda funciona:

sudo airmon-ng start wlan0

Substitua wlan0 pelo nome da sua interface real do ip link. Uma resposta bem-sucedida mostra monitor mode vif enabled com um novo nome de interface como wlan0mon.

4.5 — Método do pacote Kali (mais fácil)
#

O Kali Linux vem com uma build DKMS pré-empacotada do driver RTL8812AU que permanece sincronizada com o kernel do Kali. Se você está no Kali, use esta abordagem em vez de clonar do GitHub:

sudo apt update && sudo apt install realtek-rtl88xxau-dkms

Este único comando instala o código-fonte do driver, registra-o com o DKMS e compila-o contra o kernel atual. Futuras execuções de apt full-upgrade manterão headers e driver sincronizados automaticamente.


Correção: Driver MT7921AUN (AWUS036AXM, AXML)
#

O chipset MT7921AUN (Wi-Fi 6E) toma um caminho completamente diferente. Como é um driver dentro do kernel desde o Linux 5.18, não há DKMS, não há compilação e não há clonagem do GitHub. Atualizações do kernel não deveriam quebrá-lo — mas problemas de empacotamento de firmware às vezes o fazem.

5.1 — Instalar o pacote de firmware
#

O módulo do kernel (mt7921u.ko) já está presente, mas precisa de um binário de firmware do espaço do usuário para inicializar o hardware:

sudo apt install firmware-misc-nonfree

No Ubuntu, este pacote fica no componente de repositório non-free. Se o comando falhar, certifique-se de ter fontes non-free habilitadas em /etc/apt/sources.list.

5.2 — Recarregar o driver
#

Após instalar o firmware, force um recarregamento do driver sem reiniciar:

sudo modprobe -r mt7921u && sudo modprobe mt7921u

Em seguida, verifique a interface:

ip link show | grep -E "wlan|wlp"

5.3 — Verificar sua versão do kernel
#

O driver MT7921AUN requer kernel 5.18 ou mais recente. Se você instalou uma imagem mínima do Kali ou Ubuntu que foi lançada antes desta versão do kernel, o módulo simplesmente não existe:

uname -r
# A saída deve ser 5.18.x ou superior

Se seu kernel for anterior a 5.18, atualize-o (passo 5.4).

5.4 — Atualizar o kernel
#

sudo apt update && sudo apt full-upgrade && sudo reboot
Use full-upgrade em vez de upgrade. O subcomando upgrade retém pacotes que requerem a remoção de outros — isso frequentemente significa que o próprio pacote do kernel fica retido. full-upgrade permite a resolução de dependências necessária.

5.5 — Verificar após reinicialização
#

Após reiniciar no novo kernel, confirme que tudo está funcionando:

sudo modprobe mt7921u
ip link show
sudo dmesg | grep mt7921 | tail -10

Uma saída de dmesg saudável mostra o firmware carregando com sucesso e o dispositivo USB sendo registrado como interface de rede.


Mantendo drivers funcionando após futuras atualizações
#

A prevenção é mais simples que o reparo. Essas práticas evitam que atualizações do kernel quebrem seu adaptador novamente.

Sempre use full-upgrade no Kali rolling:

sudo apt update && sudo apt full-upgrade

O comando full-upgrade garante que quando um novo pacote do kernel é instalado, o pacote linux-headers correspondente é instalado na mesma transação. Os ganchos do DKMS disparam durante a instalação do pacote — se os headers chegarem em uma execução posterior do apt após o kernel, o DKMS perde o build.

Instalar o metapacote do DKMS:

sudo apt install dkms linux-headers-generic

Isso traz linux-headers-generic como dependência do pacote DKMS, de modo que os headers sempre se mantenham atualizados junto com o kernel.

Pilha do kernel HWE do Ubuntu:

No Ubuntu LTS, a pilha do kernel de Habilitação de Hardware recebe atualizações mais frequentes e melhor suporte de hardware do que o kernel GA. Instale uma vez e as atualizações são tratadas automaticamente:

sudo apt install linux-generic-hwe-24.04

Verificar se a autoinstalação do DKMS está habilitada:

cat /etc/dkms/framework.conf | grep autoinstall

Se esta linha estiver comentada ou definida como no, o DKMS não recompilará módulos automaticamente. Descomente-a ou defina como yes em /etc/dkms/framework.conf.


Tabela de solução de problemas específica do adaptador
#

SintomaChipset provávelCausa raizCorreção rápida
Interface desaparece após reinicializaçãoRTL8812AUBuild do DKMS falhousudo dkms autoinstall
Interface desaparece, dmesg mostra erro de firmwareMT7921AUNPacote de firmware ausentesudo apt install firmware-misc-nonfree
Interface aparece mas desaparece após 30sRTL8812AUIncompatibilidade de versão do módulosudo dkms remove --all && sudo make dkms_install
Modo monitor falha com SIOCSIFFLAGSRTL8812AUBranch do driver incorretoClonar aircrack-ng/rtl8812au e reinstalar
iwconfig mostra sem extensões sem fioQualquerMódulo não carregadosudo modprobe 88XXau ou sudo modprobe mt7921u
Interface presente mas sem redes encontradasMT7921AUNKernel < 5.18sudo apt full-upgrade && sudo reboot
dkms status mostra brokenRTL8812AUIncompatibilidade fonte/headerssudo apt install linux-headers-$(uname -r) depois recompilar
Potência TX limitada a 20 dBmRTL8812AUBloqueio de domínio regulatóriosudo iw reg set US (ajuste para sua região)

Se nada funcionar: método de instalação limpa
#

Quando múltiplas tentativas de recompilação falharam e dkms status está mostrando saída confusa de várias instalações parciais, começar do zero é mais rápido que depurar:

# Purgar o pacote do Kali se estava instalado
sudo apt purge realtek-rtl88xxau-dkms

# Remover todas as entradas DKMS para rtl8812au
for ver in $(sudo dkms status | grep rtl8812au | awk -F'[,/]' '{print $2}' | tr -d ' '); do
    sudo dkms remove rtl8812au/$ver --all
done

# Remover diretório de fonte restante se presente
sudo rm -rf /usr/src/rtl8812au*

# Limpar qualquer cache de módulos obsoleto
sudo depmod -a

# Clone e instalação limpos
git clone https://github.com/aircrack-ng/rtl8812au.git /tmp/rtl8812au
cd /tmp/rtl8812au
sudo make dkms_install
sudo modprobe 88XXau
ip link show | grep wlan
O loop que remove entradas DKMS falhará silenciosamente se nenhuma versão for encontrada — tudo bem. O passo importante é sudo rm -rf /usr/src/rtl8812au* que remove qualquer árvore de código-fonte que possa estar em estado corrompido.

Lista de verificação de prevenção
#

Use esta lista antes de cada atualização do sistema para evitar surpresas durante um compromisso:

Antes de apt upgrade:

# Ver exatamente quais pacotes do kernel estão pendentes
apt list --upgradable 2>/dev/null | grep linux-image

Se um novo kernel estiver chegando, planeje uma reinicialização de teste antes de qualquer trabalho em produção.

Após cada atualização e reinicialização:

# Confirmar que o adaptador voltou
ip link show | grep -E "wlan|wlp"

# Confirmar que o modo monitor ainda funciona
sudo airmon-ng check

Mantenha um fallback:

  • Mantenha um pendrive com uma imagem Kali Live (ou um segundo adaptador com um driver funcionando). Problemas de conectividade durante um compromisso agendado são custosos — um fallback físico leva minutos para preparar e pode salvar o dia.

Fixar pacotes de drivers críticos no Kali:

# Evitar que um pacote de driver específico seja auto-removido durante atualizações
sudo apt-mark hold realtek-rtl88xxau-dkms

Libere o hold antes de atualizar explicitamente o driver:

sudo apt-mark unhold realtek-rtl88xxau-dkms && sudo apt upgrade realtek-rtl88xxau-dkms

Resumo
#

Falhas de driver ALFA após atualizações do kernel seguem um padrão previsível e têm soluções previsíveis. Adaptadores RTL8812AU precisam de dkms autoinstall (ou um clone limpo de aircrack-ng/rtl8812au) mais headers do kernel correspondentes. Adaptadores MT7921AUN precisam de firmware-misc-nonfree e um kernel 5.18 ou mais recente. A correção de longo prazo em ambos os casos é garantir que apt full-upgrade — não apt upgrade — seja seu comando de atualização padrão, mantendo headers e kernels sincronizados.


常見問題

Por que o adaptador ALFA para de funcionar após atualização de kernel?

O RTL8812AU usa driver fora do kernel. Após cada mudanca de versão do kernel, o modulo compilado deixa de ser compatível. O DKMS pode recompilar automaticamente, mas a falta de headers do kernel ou configurações desatualizadas causam falha.

Como diagnosticar rapidamente a falha do driver ALFA?

Execute uname -r para confirmar a versão do kernel, depois dkms status para verificar o status de compilação do modulo, e finalmente dmesg para ver mensagens de erro de firmware ou carregamento de modulo.

Qual a forma mais rápida de corrigir a falha do driver RTL8812AU?

Após instalar os headers do kernel correspondentes, execute dkms autoinstall. Se falhar, faça um clone novo de aircrack-ng/rtl8812au e execute make dkms_install.

O que fazer quando o adaptador MT7921AUN não conecta após atualização de kernel?

O MT7921AUN usa driver integrado ao kernel, o problema geralmente está no firmware. Instale o pacote firmware-misc-nonfree e confirme que a versão do kernel não é inferior a 5.18.

Como evitar que atualizações de kernel quebrem o driver novamente?

Use apt full-upgrade em vez de apt upgrade para garantir que os headers sejam instalados junto com o kernel. Instale os metapacotes dkms e linux-headers-generic para manter as dependencias.

Guias relacionados:

Referências
#

  1. Driver oficial rtl8812au do aircrack-ng
  2. Documentacao oficial do DKMS
  3. Documentacao de gerenciamento de pacotes do Kali Linux
  4. Documentacao oficial do kernel Linux
  5. Driver MediaTek MT7921