Olá hackers de plantão!
Hoje vamos falar sobre teimosia, hardware legado e como o Linux pode ser domado se você souber onde apertar. Vamos às situações de hoje:
Situação 1: Você tem aquele adaptador Wi-Fi USB antigo largado na gaveta, espeta no PC achando que vai ser “plug-and-play”, e descobre que o “play” é um ping de 9000ms que faz parecer que sua internet é via sinal de fumaça.
Situação 2: Você, usuário “bleeding edge”, instalou o Kernel mais novo possível no seu Manjaro, sentindo-se o próprio Linus Torvalds, mas descobre que seu driver de rede está na área de “Staging” (leia-se: experimental e instável) e decide que funcionar é melhor que estar atualizado.
Situação 3: Você só quer navegar na internet sem que o adaptador USB resolva “dormir” no meio do download ou frite por superaquecimento depois de 15 horas ligado.
Se você se identificou, vem comigo. A batalha de hoje foi contra um chipset Realtek RTL8188S rodando no Manjaro. O diagnóstico inicial? Perda de pacotes de 12% e latência inutilizável. A solução? Uma cirurgia completa no sistema.
1. Kernel: Voltando para a Terra Firme
A primeira lição do dia: drivers antigos odeiam Kernels muito novos. Eu estava no Kernel 6.12 e o log do sistema (dmesg) gritava: “module is from the staging directory, the quality is unknown”.
Consultei o log com:
sudo dmesg | grep -i r8712u
Lembrando que r8712u é referente ao driver do meu adaptador arcaico, o seu pode e provavelmente vai ser diferente.
A solução foi fazer o downgrade para o Kernel 6.6 LTS (Long Term Support). No mundo dos servidores e hardware legado, estabilidade ganha de novidade.
2. O Vilão da Energia
O Linux adora economizar energia, e desliga portas USB que ele “acha” que não estão sendo usadas. O problema é que esse Realtek não sabe acordar. Tivemos que aplicar a lei marcial em dois lugares:
No NetworkManager, criamos o arquivo /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf:
[connection]
wifi.powersave = 2
(Nota para os iniciantes: 2 significa “Desativado”. Vai entender…)
E adicionei um parâmetro no /etc/default/grub para impedir que o núcleo do sistema desligue portas USB: GRUB_CMDLINE_LINUX_DEFAULT="... usbcore.autosuspend=-1"
Depois de um sudo update-grub e reiniciar, a conexão parou de cair, mas ainda tinha picos de lentidão.
3. Física: A Interferência Fantasma
Aqui está o “pulo do gato” que pouca gente sabe. Eu estava usando o adaptador numa porta USB 3.0 (aquelas azuis). Acontece que a frequência de operação do USB 3.0 gera ruído eletromagnético EXATAMENTE na faixa de 2.4GHz. (Se me pedir referência daonde eu achei essa informação, foi pesquisando em conjunto com o Google Gemini)
Basicamente, a porta USB estava gritando no ouvido da antena do Wi-Fi. A solução? Trocar para uma porta USB 2.0 frontal, longe da placa-mãe. O resultado? O ping caiu de 9000ms para 7ms. Vitória! (De novo, só posso atestar pela minha experiência, a ciência por trás eu deixo para os especialistas)
4. O “Watchdog”: Automatizando a Cura
Depois de 15 horas ligado direto (já que desligamos a economia de energia), o adaptador cansou. Ocorreu uma fadiga térmica e o log mostrou o erro fatal: pipe error: (-71).
Para não ter que reiniciar o PC na unha, criei um script Watchdog. Ele fica lendo o log do sistema em tempo real; se o erro aparecer, ele reinicia o driver automaticamente.
O script /usr/local/bin/wifi-watchdog.sh:
Bash
#!/bin/bash
DRIVER="r8712u"
ERROR_TRIGGER="pipe error: (-71)"
echo "Iniciando monitoramento..." | systemd-cat -t wifi-watchdog
journalctl -k -f -n 0 | while read line; do
if echo "$line" | grep -q "$ERROR_TRIGGER"; then
echo "Erro crítico! Reiniciando driver..." | systemd-cat -t wifi-watchdog -p err
modprobe -r $DRIVER
sleep 4
modprobe $DRIVER
echo "Driver ressuscitado." | systemd-cat -t wifi-watchdog
sleep 30
fi
done
Colocamos isso para rodar como serviço do Systemd e pronto. Temos um sistema “self-healing”.
Para rodar isso em background, criei /etc/systemd/system/wifi-watchdog.service:
[Unit]
Description=Wifi Watchdog para Erro -71
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/wifi-watchdog.sh
Restart=always
User=root
[Install]
WantedBy=multi-user.target
Basta rodar sudo systemctl enable --now wifi-watchdog.service e pronto. Agora tenho um sistema “self-healing” (que se cura sozinho).
Se você está sofrendo com Wi-Fi no Linux, especificamente usando um adaptador USB antigo, lembre-se: olhe o Kernel, desligue a economia de energia e fuja das portas USB 3.0 para adaptadores 2.4GHz.
Também fiz uma configuração no pacman para limitar a velocidade de download dele, pra evitar bufferbloat, mas isso fica pra outro dia.
Por enquanto é isso turma.
O trabalho Ressuscitando o Wi-Fi: Do Caos à Estabilidade no Manjaro de Thiago Faria Mendonça está licenciado com uma Licença Creative Commons – Atribuição 4.0 Internacional.