Archivo Histórico

Artículos etiquetados con ‘madwifi’

WiFi Atheros en Ubuntu 8.10

November 5th, 2008 Gregorio Espadas 15 Comentarios

Tras la salida de Ubuntu 8.10 Intrepid Ibex era inevitable que lo instalara, y a diferencia de lo que me ha ocurrido con las versiones previas de Ubuntu (8.04 inclusive) me reconoció practicamente todo mi hardware (audio, video, compiz funcionando perfectamente, etc), salvo mi red inalámbrica WiFi, lo cual se me hizo muy extraño, pues Ubuntu 8.10 viene con el nuevo Linux Kernel 2.6.27, el cual supuestamente ya incluye soporte nativo para redes WiFi Atheros.

Entonces me di a la tarea de investigar sobre el motivo, y no tienen idea de la cantidad de personas que han tenido este problema; me encontré con muchas ayudas y tutoriales sobre como solucionarlo (la mayoría en inglés), desgraciadamente muchas de esas instrucciones eran poco claras y confusas, lo cual ocasionó que tuviese que formatear e instalar Ubuntu 8.10 un par de veces más. Al final, logré mi cometido y fué bastante educativo, aprendí detalles sobre Linux que desconocía. Por lo mismo, quiero compartir con todos ustedes esta experiencia, que estoy seguro le servirá a más de uno. A continuación les dejo las tres posibles soluciones al problema de incompatibilidad de la red WiFi Atheros en Ubuntu 8.10 (como referencia, mi máquina es una Acer Aspire 4720Z con WiFi Atheros AR5007, pero las soluciones se aplican en general a cualquier WiFi Atheros).

Una disculpa anticipada, pues este post será extremadamente largo, ya que mi intención es describir paso a paso el procedimiento, para su mejor comprensión.


Procedimiento general

Básicamente, primero tenemos que probar con drivers de Atheros escritos para Linux, para lo cual el Proyecto MadWifi nos provee tres opciones (sólo mencionaré dos de ellas: ath5k y madwifi hal); si los drivers de MadWifi no funcionan, el último recurso es usar el driver original de Windows para nuestra tarjeta WiFi Atheros mediante la interfaz ndiswrapper. Así de simple… ahora, vayamos a los detalles.


Solución 1: Usar ath5k

El driver ath5k es parte del Proyecto MadWifi; es un driver relativamente nuevo que no depende de HAL (Hardware Abstraction Layer), el cual es de licencia propietaria y sólo está disponible en forma binaria. El driver madwifi, del cual hablaré en la siguiente solución, si utiliza HAL. La intención de los chicos del Proyecto MadWifi es reemplazar el driver madwifi por el ath5k, el cual es 100% open source, y con mejores prestaciones. Por todo lo anterior, el driver ath5k es el candidato perfecto para nuestra primera solución.

La versión del driver ath5k de Atheros incluido en el Linux Kernel 2.6.27 interfiere con el uso del driver madwifi (que viene incuido en Ubuntu 8.10) en algunos dispositivos, por lo que ha sido deshabilitado por defecto. Muchos dispositivos trabajan correctamente con el driver madwifi, pero no en algunos chipset recientes, por lo que no funcionará con la autentificación WPA. En este caso, hay que instalar los módulos backports de Linux incluídos en el CD de Ubuntu 8.10, para que el sistema use el driver ath5k.

Paso 1.
Si la lista de redes inalámbricas esta vacía, a pesar de tener encendida nuestra tarjeta integrada de WiFi, nos vamos al menú Sistema > Administracion > Controladores de hardware, y allí deshabilitamos el soporte para Atheros 802.11 Wireless LAN. Reiniciamos la computadora (obligatorio).

Paso 2.
Para este paso debemos insertar el CD de instalación de Ubuntu 8.10 en nuestra máquina; luego, hay que agregarlo a los repositorios. Entonces vamos al menú Sistema > Administración > Gestor de Paquetes Synaptic y allí buscamos en siguiente paquete: linux-backports-modules-intrepid-generic y lo instalamos por completo. También podemos hacerlo a través de la línea de comandos:

sudo apt-cdrom add
sudo apt-get install linux-backports-modules-intrepid-generic

Paso 3.
Cuando termine la instalación del paquete anterior, reiniciamos nuevamente nuestra máquina. Al entrar nuevamente al sistema, nos vamos al icono de red y verificamos si ya funciona nuestra tarjeta de red Atheros mostrando las redes inalambricas al alcance.

Nota
Podemos checar que el módulo ath5k se ha cargado usando el comando lsmod. Si en el listado obtenido con lsmod observamos también al módulo ath_pci, debemos desmontarlo usando el comando:

sudo rmmod ath_pci

Además, debemos prevenir que no se cargue nuevamente al iniciar el sistema. Para ello, hacemos un “blacklist” al módulo ath_pci con el comando:

echo “blacklist ath_pci” | sudo tee -a /etc/modprobe.d/blacklist

No olvidemos reiniciar el sistema al realizar este cambio.


Solución 2: Usar MadWifi HAL

El driver madwifi (Multiband Atheros Driver for Wireless Fidelity) es la opción original del Proyecto MadWifi, y como mencioné anteriormente, depende de HAL. Si el driver ath5k no funcionó para nuestro hardware, entonces usaremos la alternativa madwifi hal.

Paso 1.
Nos vamos al menú Sistema > Administracion > Controladores de hardware, y allí deshabilitamos las redes inalámbricas que tengamos actualmente (pues no están funcionando). Reiniciarmos el sistema (obligatorio). También podemos usar la línea de comandos para desmontar cada una de nuestras redes inservibles; para ver cuáles hay en nuestro sistema, usamos el comando:

iwconfig

Supongamos que existen las redes ath0, wifi0 y wlan0 habilitadas (esto será diferente en cada sistema), entonces usaremos los comandos:

sudo ifconfig ath0 down
sudo ifconfig wifi0 down
sudo ifconfig wlan0 down

Si no existe ningún dispositivo habilitado, mucho mejor, en este paso no tenemos que hacer nada.

Paso 2.
Si aún no lo hemos hecho previamente, debemos instalar las fuentes necesarias para poder compilar, usando el comando:

sudo apt-get install build-essential

Paso 3.
Ir a http://snapshots.madwifi-project.org/madwifi-hal-0.10.5.6/ y descargar la última versión (obviamente, hacer esto desde una computadora que si tenga acceso a Internet). Al momento de escribir este tutorial, la última versión es madwifi-hal-0.10.5.6-r3875-20081105.tar.gz. Luego, descomprimir el archivo descargado, entrar a la carpeta generada y compilar. Usando la terminal, los comandos serían:

tar -zxvf madwifi-hal-0.10.5.6-r3875-20081105.tar.gz
cd madwifi-hal-0.10.5.6-r3875-20081105
sudo make
sudo make install

Paso 4.
Cargar el driver recién compilado, usando los comandos:

sudo modprobe ath_pci
sudo modprobe ath_hal

Paso 5.
Y finalmente debemos agregar dichos módulos para que carguen al inicio del sistema.

echo “ath_pci” | sudo tee -a /etc/modules
echo “ath_hal” | sudo tee -a /etc/modules


Solución 3: ndiswrapper

Cuando los drivers del Proyecto MadWifi no funcionan en nuestro sistema, aquí tenemos el último recurso. NDISwrapper es un proyecto open source que provee un módulo al kernel de Linux que carga y ejecuta los drivers NDIS (Windows Network Driver API) proporcionados por el fabricante original de nuestra tarjeta de red inalámbrica (en nuestro caso, Atheros), por lo que debemos tener el driver de Windows apropiado para nuestra tarjeta WiFi (llamémosle a este detalle el “paso 0″).

Paso 1.

Para instalar NIDSwrapper lo podemos hacer desde repositorios, pero como no tenermos conexión a Internet, la forma más sencilla es usar el CD de Ubuntu 8.10 (que incluye al NIDSwrapper). Para que no haya problemas en la instalación debemos contar con build-essential preinstaldo (si ya fué instalado previamente, este detalle no es necesario). Todo lo anterior lo hacemos con los siguientes comandos:

sudo apt-cdrom add
sudo apt-get install build-essential
sudo apt-get install ndiswrapper-common ndiswrapper-utils-1.9 ndisgtk

Debe hacerse en ese orden. Adicionalmente se instala ndisgtk, que es una interfaz gráfica para administrar ndiswrapper, la cual no es obligatoria, pero es útil para quienes no les gusta usar la línea de comandos.

Paso 2.
Ahora toca cargar el driver de nuestro dispositivo. Dentro del paquete que contiene los archivos del driver para Windows de nuestra tarjeta WiFi, tenemos que buscar el archivo cuya extensión es .inf, es el que necesitamos en este paso, para poder ejecutar el comando:

sudo ndiswrapper -i archivo_del_driver.inf

Este paso puede realizarse con la utilería gráfica ndisgtk, yendo al menú Sistema > Administración > Windows Wireless Drivers (o Controladores para redes Inalámbricas de Windows).

Paso 3.
Ahora debemos cargar el módulo de ndiswrapper, esto lo hacemos con el comando

sudo modprobe ndiswrapper

Si todo salió bien nos debe haber cargado la interface wlan0, por lo que es buena idea verificar si está presente ejecutando el comando iwconfig. Es posible que haya que reiniciar el equipo y volver a ejecutar el comando modprobe ndiswrapper para que funcione, aunque normalmente no es necesario.

Paso 4.
Por último para que el módulo ndiswrapper se ejecute automáticamente al inicio del sistema, agregamos ndiswrapper al final del archivo /etc/modules, lo cual podemos hacer con el comando:

echo “ndiswrapper” | sudo tee -a /etc/modules


Conclusión

Ubuntu 8.10 es un sistema poderoso y fácil de usar, pero a veces tenemos que lidiar con problemas como éste, pero una vez solucionado, ¡a disfrutar de las bondades de Linux! Espero este tutorial sea de utilidad para personas, que como yo, se llevaron la sorpresa de no tener WiFi al instalar la nueva versión de Ubuntu. En mi caso particular, las soluciones 1 y 2 me funcionaron, pero la conexión a Internet era inestable y opté por la solución 3, la cual funcionó perfectamente bien. ¡Suerte a todos!

Categorías: Linux Etiquetas: , , , , ,