Todos los que hayan emigrado a Linux sabrán de lo que hablo: el gran talón de Aquiles de Linux es, sin género de dudas, el Wifi. Es cierto que la culpa es de los fabricantes, que ya sabemos que siempre van a cojear por el lado en el que hay dinero, pero claro, los usuarios finales, que somos de carne y hueso, podemos llegar en ciertos momentos a desesperarnos y querer tirar la toalla en nuestra aventura linuxera. En mi caso, me despedí de Windows hace 8 años, cuando me instalé, en un portátil que ya no daba para mucho, la por entonces versión estable Debian Etch 4. Desde entonces no paré: han pasado por mis manos 6 portátiles (la mayoría antiguos y donados por amigos/familiares, que no estoy montado en el dólar xd), 8 tarjetas wifi PCI o USB, innumerables distribuciones de linux y SIEMPRE SIEMPRE SIEMPRE he tenido algún tipo de problema con el wifi, siendo los más comunes el apagado de la red y las reconexiones constantes o intensidades de señal ridículas. Pues bien, a pesar de que ni mucho menos soy experto en esto y los usos que le he dado a linux han sido de lo más casero (trabajos, internet, juegos), con el tiempo he ido tomándole la medida a estos problemas y al final creo que he dado con la tecla. Las soluciones que voy a proponer son dos, perfectamente compatibles entre sí y orientadas a los nuevos equipos, que son los que por regla tienen peor compatibilidad (menos tiempo en el mercado = menos experiencias de usuarios = menos errores reportados = menos compatibilidad con linux xd). Aún así estas reglas van a valer para cualquier chip, palabra de amigo.
Chipset wireless más comunes:
Atheros
Realtek
Intel
SOLUCIÓN 1
En esta solución que voy a proponer voy a dar dos consejos, también compatibles entre sí.
Consejo 1
Orientado quizá a los chipset más nuevos, pero opción realmente válida para todos. Consiste en instalar el último kernel estable. ¿Por qué digo esto? Porque con los nuevos kernels que van saliendo los desarrolladores cuidan mucho el tema de las compatibilidades con los nuevos componentes, así que es posible que el kernel que tengamos no sea el más adecuado para nuestra chipset. Para no asustar al personal deciros que actualizar el kernel es muy fácil y seguro, porque además si algo sale mal es muy fácil volver a la configuración anterior.
1) Si tienes una distro basada en Ubuntu (en esta guía los ejemplos serán para distros basadas en Ubuntu), descárgate el kernel de http://kernel.ubuntu.com/~kernel-ppa/mainline , escogiendo el último kernel que no tenga en su nombre rcx, pues estos están en testing (si te atreves con estos puedes, pero creo que no es necesario). Al pinchar verás una página como esta
y tendrás que descargarte 3 archivos, según quieras i386 o amd64. Si tu distro es amd64 te descargas:
1) linux-image....amd64.deb
2) linux-headers...all.deb
3) linux-headers...amd64.deb
el linux-headers...all.deb lo descargan tanto los amd como los i386.
2) En la carpeta de descarga: sudo dpkg -i linux*.deb
3) Update al grub para que nos cargue el nuevo kernel tras reiniciar: sudo update-grub
Y reiniciamos. Ahora no solo debería ir mejor el wifi si no en realidad todo el equipo, pues el nuevo kernel nos proporcionará un mejor rendimiento. En Ubuntu Mate (como en Ubuntu) el kernel oficial está en el 3.13, mientras que el que hemos instalado en el ejemplo es el 3.19.
Si las cosas salen mal y empezamos a tener problemas con el nuevo kernel (a mí no me sucedió nada y estoy encantado), siempre se puede eliminar el nuevo kernel y volver al anterior:
1) dpkg --get-selections | grep linux-image para ver el nombre exacto del kernel que queremos eliminar.
2) sudo apt-get purge linux-image-3.19.2-* linux-headers-3.19.2-* o el que os corresponda a vosotros.
3) sudo update-grub
4) Reiniciamos y listo, volvemos a estar como antes.
Consejo 2
Esto es de hecho necesario si hemos seguido el consejo 1, pues muchas veces los chipset que tenemos instalados solo tienen soporte con el antiguo kernel, y por lo tanto hay que actualizarlos. Si no hicimos el Consejo 1 hacer lo que voy a explicar es obligatorio para intentar corregir los errores del wifi.
Bueno, efectivamente de lo que voy a hablar aquí es de actualizar los módulos del chipset, para estar al día y que nuestro wifi funcione bien de una maldita vez:
haz en terminal lspci para identificar la marca y modelo de tu chipset. En Network controller podrás ver si tienes Realtek, Atheros o Intel.
Para Intel
1) Id a la página y buscad vuestro modelo de tarjeta. Si os fijáis hay un enlace de descarga en función del kernel. Si seguisteis el consejo 1 y actualizasteis el kernel, al descargaros un módulo actualizado a vuestro nuevo kernel solucionareis ipso facto los problemas de vuestro wifi xd. Descargad el módulo que os corresponda en función del modelo y el kernel. En mi caso tengo un Intel 7265 con kernel 3.19
2) Con el comando sudo dmesg | grep iwl podréis ver como os avisa el kernel de que necesita un módulo más actualizado.
3) Al descomprimir lo antes descargado, podréis ver archivos con el nombre del tipo iwlwifi-xxxx-xx.ucode. si veis que módulos tenéis actualmente instalados con ls /lib/firmware y no encontráis el que os habeis descargado, pues entonces lo copiamos a esa carpeta (todos los archivos .ucode descargados los copiamos a /lib/firmware), y reiniciais.
4) Ya reiniciado, el kernel ha empezado a usar el nuevo módulo insertado. Lo podremos confirmar con sudo dmesg | grep iwl, y el wifi debería funcionar de nuevo sin cortes, por fín!
Para Atheros/Realtek
Normalmente estos módulos ya vienen incluidos en el kernel. Como no obstante seguimos teniendo problemas con las conexiones, os recomiendo que busquéis en Github módulos ya cocinados de vuestros modelos por gente que pilota del tema y conoce de programación. En este otro post mío explico como instalo un módulo cocinado para un Wifi USB, pero el método es el mismo para cualquier modelo. Hay que ser paciente, buscando en Github los módulos e instalarlos y probarlos hasta que uno de ellos funcione como debería. Os aseguro que es una muy buena solución, solo hay que tener paciencia. A grosso modo, y para facilitaros un poco el tema, os explico como montar y desmontar módulos (para ir desinstalándolos si no nos funcionan, para que no se nos acumule basura en el ordenador).
Para saber qué módulo estamos usando:
lsmod | grep rtl (Para módulos Realtek. Este módulo no lo borramos hasta que el cocinado que hemos encontrado funcione correctamente)
Para montar un módulo ya descargado de Github:
1) Descomprimid, entrad en la carpeta y sudo make, sudo make install, y sudo modprobe xxxx para cargar el módulo, y reiniciar. (En el Readme del módulo te explicará como montarlo, aunque normalmente es como lo he descrito)
Para desmontar un módulo:
rmmod rtlxxxx y cargamos el que teníamos al principio, para no quedarnos sin internet: sudo modprobe xxxx. Reiniciamos.
Lo dicho, quién necesite el rtl8812AU que se pase por mi post que ya le hice el trabajo sucio xd.
SOLUCIÓN 2
Lo dije antes, es perfectamente compatible con lo descrito anteriormente, y en mi caso solucionó del todo mis problemas de Wifi. Con lo descrito en SOLUCIÓN 1 solucioné los problemas más graves que tenía con mi Wifi, pero con está segunda solución que os voy a decir ahora, eliminé los micro cortes en la conexión que me daban lags en los juegos online o en las descargas. Es una solución un poco ruda, pero para los que se han desesperado como yo por el wifi lo recomiendo.
Resulta que en muchos Routers está activada una casilla que dice WMM(Wi-Fi Multimedia). WMM viene a usar el estándar inalámbrico IEEE 802.11e, que, casualmente, tiene una compatibilidad HORRIBLE con Linux. Si tenéis en casa velocidades muy altas, con este estándar os saltáis la restricción de 54kbps para tener internet mucho más rápido. Si hacéis una prueba en tests de ADSL como http://www.adsl4ever.com/test/11 con el WMM activado y tenéis suerte, veréis velocidades de descarga y subida altísimas...pero a qué precio con Linux!! A base de cortes constantes e intensidades de señal pésimas. La solución: desactivarlo.
Una vez desactivado tanto la velocidad a internet como la conexión se vuelven mucho más constantes, y, aunque volvamos a la restricción de 54kbps, creo que las velocidades siguen siendo suficientemente buenas para que ni nos enteremos.
¿Y qué sucede si no podemos tener acceso al Router? ¿Habrá alguna manera de desactivarlo desde nuestro ordenador? Pues sí, y la solución se llama iwpriv. Instalad con apt-get y, en consola:
iwpriv wlan0 wmm 0
Espero que este post os haya sido de ayuda para solucionar vuestros problemas de wireless. Saludos!
Chipset wireless más comunes:
Atheros
Realtek
Intel
SOLUCIÓN 1
En esta solución que voy a proponer voy a dar dos consejos, también compatibles entre sí.
Consejo 1
Orientado quizá a los chipset más nuevos, pero opción realmente válida para todos. Consiste en instalar el último kernel estable. ¿Por qué digo esto? Porque con los nuevos kernels que van saliendo los desarrolladores cuidan mucho el tema de las compatibilidades con los nuevos componentes, así que es posible que el kernel que tengamos no sea el más adecuado para nuestra chipset. Para no asustar al personal deciros que actualizar el kernel es muy fácil y seguro, porque además si algo sale mal es muy fácil volver a la configuración anterior.
1) Si tienes una distro basada en Ubuntu (en esta guía los ejemplos serán para distros basadas en Ubuntu), descárgate el kernel de http://kernel.ubuntu.com/~kernel-ppa/mainline , escogiendo el último kernel que no tenga en su nombre rcx, pues estos están en testing (si te atreves con estos puedes, pero creo que no es necesario). Al pinchar verás una página como esta
y tendrás que descargarte 3 archivos, según quieras i386 o amd64. Si tu distro es amd64 te descargas:
1) linux-image....amd64.deb
2) linux-headers...all.deb
3) linux-headers...amd64.deb
el linux-headers...all.deb lo descargan tanto los amd como los i386.
2) En la carpeta de descarga: sudo dpkg -i linux*.deb
3) Update al grub para que nos cargue el nuevo kernel tras reiniciar: sudo update-grub
Y reiniciamos. Ahora no solo debería ir mejor el wifi si no en realidad todo el equipo, pues el nuevo kernel nos proporcionará un mejor rendimiento. En Ubuntu Mate (como en Ubuntu) el kernel oficial está en el 3.13, mientras que el que hemos instalado en el ejemplo es el 3.19.
Si las cosas salen mal y empezamos a tener problemas con el nuevo kernel (a mí no me sucedió nada y estoy encantado), siempre se puede eliminar el nuevo kernel y volver al anterior:
1) dpkg --get-selections | grep linux-image para ver el nombre exacto del kernel que queremos eliminar.
2) sudo apt-get purge linux-image-3.19.2-* linux-headers-3.19.2-* o el que os corresponda a vosotros.
3) sudo update-grub
4) Reiniciamos y listo, volvemos a estar como antes.
Consejo 2
Esto es de hecho necesario si hemos seguido el consejo 1, pues muchas veces los chipset que tenemos instalados solo tienen soporte con el antiguo kernel, y por lo tanto hay que actualizarlos. Si no hicimos el Consejo 1 hacer lo que voy a explicar es obligatorio para intentar corregir los errores del wifi.
Bueno, efectivamente de lo que voy a hablar aquí es de actualizar los módulos del chipset, para estar al día y que nuestro wifi funcione bien de una maldita vez:
haz en terminal lspci para identificar la marca y modelo de tu chipset. En Network controller podrás ver si tienes Realtek, Atheros o Intel.
Para Intel
1) Id a la página y buscad vuestro modelo de tarjeta. Si os fijáis hay un enlace de descarga en función del kernel. Si seguisteis el consejo 1 y actualizasteis el kernel, al descargaros un módulo actualizado a vuestro nuevo kernel solucionareis ipso facto los problemas de vuestro wifi xd. Descargad el módulo que os corresponda en función del modelo y el kernel. En mi caso tengo un Intel 7265 con kernel 3.19
2) Con el comando sudo dmesg | grep iwl podréis ver como os avisa el kernel de que necesita un módulo más actualizado.
3) Al descomprimir lo antes descargado, podréis ver archivos con el nombre del tipo iwlwifi-xxxx-xx.ucode. si veis que módulos tenéis actualmente instalados con ls /lib/firmware y no encontráis el que os habeis descargado, pues entonces lo copiamos a esa carpeta (todos los archivos .ucode descargados los copiamos a /lib/firmware), y reiniciais.
4) Ya reiniciado, el kernel ha empezado a usar el nuevo módulo insertado. Lo podremos confirmar con sudo dmesg | grep iwl, y el wifi debería funcionar de nuevo sin cortes, por fín!
Para Atheros/Realtek
Normalmente estos módulos ya vienen incluidos en el kernel. Como no obstante seguimos teniendo problemas con las conexiones, os recomiendo que busquéis en Github módulos ya cocinados de vuestros modelos por gente que pilota del tema y conoce de programación. En este otro post mío explico como instalo un módulo cocinado para un Wifi USB, pero el método es el mismo para cualquier modelo. Hay que ser paciente, buscando en Github los módulos e instalarlos y probarlos hasta que uno de ellos funcione como debería. Os aseguro que es una muy buena solución, solo hay que tener paciencia. A grosso modo, y para facilitaros un poco el tema, os explico como montar y desmontar módulos (para ir desinstalándolos si no nos funcionan, para que no se nos acumule basura en el ordenador).
Para saber qué módulo estamos usando:
lsmod | grep rtl (Para módulos Realtek. Este módulo no lo borramos hasta que el cocinado que hemos encontrado funcione correctamente)
Para montar un módulo ya descargado de Github:
1) Descomprimid, entrad en la carpeta y sudo make, sudo make install, y sudo modprobe xxxx para cargar el módulo, y reiniciar. (En el Readme del módulo te explicará como montarlo, aunque normalmente es como lo he descrito)
Para desmontar un módulo:
rmmod rtlxxxx y cargamos el que teníamos al principio, para no quedarnos sin internet: sudo modprobe xxxx. Reiniciamos.
Lo dicho, quién necesite el rtl8812AU que se pase por mi post que ya le hice el trabajo sucio xd.
SOLUCIÓN 2
Lo dije antes, es perfectamente compatible con lo descrito anteriormente, y en mi caso solucionó del todo mis problemas de Wifi. Con lo descrito en SOLUCIÓN 1 solucioné los problemas más graves que tenía con mi Wifi, pero con está segunda solución que os voy a decir ahora, eliminé los micro cortes en la conexión que me daban lags en los juegos online o en las descargas. Es una solución un poco ruda, pero para los que se han desesperado como yo por el wifi lo recomiendo.
Resulta que en muchos Routers está activada una casilla que dice WMM(Wi-Fi Multimedia). WMM viene a usar el estándar inalámbrico IEEE 802.11e, que, casualmente, tiene una compatibilidad HORRIBLE con Linux. Si tenéis en casa velocidades muy altas, con este estándar os saltáis la restricción de 54kbps para tener internet mucho más rápido. Si hacéis una prueba en tests de ADSL como http://www.adsl4ever.com/test/11 con el WMM activado y tenéis suerte, veréis velocidades de descarga y subida altísimas...pero a qué precio con Linux!! A base de cortes constantes e intensidades de señal pésimas. La solución: desactivarlo.
Una vez desactivado tanto la velocidad a internet como la conexión se vuelven mucho más constantes, y, aunque volvamos a la restricción de 54kbps, creo que las velocidades siguen siendo suficientemente buenas para que ni nos enteremos.
¿Y qué sucede si no podemos tener acceso al Router? ¿Habrá alguna manera de desactivarlo desde nuestro ordenador? Pues sí, y la solución se llama iwpriv. Instalad con apt-get y, en consola:
iwpriv wlan0 wmm 0
Espero que este post os haya sido de ayuda para solucionar vuestros problemas de wireless. Saludos!