fedora e a saga do wifi perdido
Já faz quase um ano que migrei para o fedora e, até agora, tenho bem pouca coisa a reclamar, mas uma que me deu bastante dor de cabeça no passado foi o ‘esquecimento’ de como funcionava minha wifi.
Eu uso um eeepc 1001HA, um hardware bem ‘conhecido’ e nao havia razao para isto acontecer. O fato é que ao iniciar meu uso no fedora12, tudo funcionava lindamente, mas um belo dia, um update de kernel pos tudo a perder: ele simplesmente ignorava a existência do meu wifi. Depois de muito bater a cabeça, cheguei a uma solução. Gambiarra, seria um termo melhor.
Primeiro, desabilitei a trava de hardware do wifi na BIOS. Depois disso, ao bootar, o wifi ficava sempre ativo. Ou seja, o driver estava funcionando, apenas o hook não. O próximo passo logico seria criar o hook. Depois de muita raiva, eis o hook:
rfkill list | awk 'BEGIN{left=0}/Wireless LAN/{left=3}{if(left){if(match($0,/Soft blocked: (yes|no)/,a)){if(a[1]=="yes")system("rfkill unblock wifi");else system("rfkill block wifi");};left--;}}'
Agora tinha o problema de iniciar isso junto com o sistema. O passo obvio seria torna-lo um serviço do fedora. Primeiro criei o script:
#!/bin/bash ## wifi Gambi para resolver bug tosco na ativacao do wifi no eeepc # # Author: Paolo Oliveira # # chkconfig: 2345 20 80 # # BEGIN INIT INFO # Provides: wifi # Required-Start: $local_fs $remote_fs $network $named # Required-Stop: $local_fs $remote_fs $network # Should-Start: distcache # Short-Description: start and stop wifi software lock # Description: Solve ridiculous bug on newer linux on wifi activation # (a very very creepy bug). ### END INIT INFO # Source function library.. /etc/rc.d/init.d/functions start() { echo -n $"Starting Wlan: " rfkill block wifi RETVAL=$? } stop() { echo -n $"Stopping Wlan: " rfkill unblock wifi RETVAL=$? } status() { rfkill list | awk 'BEGIN{left=0}/Wireless LAN/{left=3}{if(left){if(match($0,/Soft blocked: (yes|no)/,a)){if(a[1]=="yes")print "WIFI: [OFF]";else print "WIFI: [ON]";};left--;}}' RETVAL=$? } reload() { echo -n $"Reloading not available: " RETVAL=$? } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status ;; restart) stop start ;; condrestart|try-restart) reload ;; force-reload|reload) reload ;; graceful|help|configtest|fullstatus) echo "boo" RETVAL=$? ;; *) echo $"Usage: $prog {start|stop|restart|help}" RETVAL=3 esac exit $RETVAL
E, para finalizar, mandei o chkconfig cuidar do boot:
chkconfig –add wifi && chkconfig –level 2345 wifi on
e adicionei nas ‘hotkeys’ do fedora, tecla do windows+f2 para acessar o hook(habilitando e desabilitando o wifi on-the-fly).
Final feliz ;D
EDIT: (8 de Novembro) Ao bootar depois de um update do conectionMenager, o “truque” da tecla de windows+f2 nao funcionou. Checkei desesperado com o rfkill que informou que tanto a trava de hardware quanto a de software estavam off. Então, depois de olhar dmesg, fazer despacho para matarem alguem aleatorio na red hat, percebi que o update simplesmente desabilitou a opção wireless no gerenciador(LOL) e a solução foi clicar com o botão direito sobre a conexao(na barra do gnome) e selecionar “enable wireless”. Simples e WTF. Mas fica a informação haha