28 febrero 2007

Instalar Ndiswrapper

Ndiswrapper es un software que actúa como una especie de envoltorio sobre los drivers originales de Windows para hacerlos funcionar bajo Linux. Y lo que es más importante, permite gestionar prácticamente todas las tarjetas compatibles mencionadas en el envío anterior. Os preguntaréis que, si son compatibles, para qué queremos hacerlas funcionar con Ndiswrapper. Muy fácil, a veces hay tarjetas que no tiran por problemas de hardware [lo más frecuente] o por problemas con el propio software. Además, hay otras muchas tarjetas que, al no liberar sus fabricantes el software para hacerlas funcionar bajo Linux, la única manera de que rulen es con este método [un buen ejemplo lo tenemos en las bien conocidas tarjetas Broadcom que sólo se podían usar con este software]. Así que, de una forma u otra, es muy posible que en alguna ocasión tengas que vértelas con la instalación de este driver. Puedes comprobar si tu dispositivo inalámbrico es compatible con Ndiswrapper consultando la lista de compatibilidad. Para obtener más información sobre este controlador, visita el sitio de Ndiswrapper en SourceForge.

Si la tarjeta que vamos a configurar dispone de drivers para Linux, es posible que éstos vengan precompilados y se carguen en el sistema al ser reconocida la tarjeta. Pero si no gestionan correctamente el uso de la misma o, simplemente, no los queremos usar, se debe tomar ciertas precauciones. En primer lugar vas a editar como root un archivo llamado blacklist [busca en /etc/hotplug/ para Guadalinex v3 y Ubuntu Breezy o en /etc/modprobe.d/ para Guadalinex v4 y Ubuntu Edgy] y vas a añadir una línea al final del texto, con el nombre del módulo que haría funcionar el chipset de la tarjeta para v3 o bien el término blacklist seguido del nombre del módulo para v4. Con ello conseguimos que no se vuelva a cargar en el inicio del sistema y así evitamos que interfiera con la carga del driver de Ndiswrapper. También nos aseguraremos de descargar el módulo usando como root [ubunteros, recordad el uso de sudo] el comando rmmod nombre_modulo.

¿Por dónde empezamos?


Esta guía ha sido realizada para ser usada en Guadalinex v3 y Ubuntu Breezy, pero en general vale para cualquier otra distribución, salvando las diferencias. Si nuestra distro fuese Guadalinex 2004, estamos de suerte, ya que lo trae instalado y sólo resta configurarlo y poco más. Para la versión 2005/v3, al igual que en Ubuntu Breezy, no está disponible y debes instalar los paquetes desde el programa Synaptic. Ábrelo y busca ndiswrapper; marca e instala los tres paquetes encontrados: source, utils y ndisgtk. A continuación vas a seguir los siguientes pasos:

1.- Instala Ndiswrapper con Synaptic o desde un terminal usando apt. Si no dispones de conexión, al final de este mensaje se explica cómo descargar los paquetes. Tambien están disponibles en el CD de Guadalinex v3. Si es tu primera experiencia en Linux y no te sientes muy seguro trabajando por un terminal, bájate de los repositorios la herramienta Ndisgtk. Si no tienes acceso desde Linux, más abajo explico cómo descargar los paquetes deb. Una vez que instales los paquetes en cuestión, debes reiniciar tu sistema.

2.- Copia los drivers de Windows que venian con el CD de tu tarjeta al directorio de usuario [supongamos que fuesen, por ejemplo, driver_windows.inf y driver_windows.sys]. Es imprescindible copiar el contenido completo de la carpeta donde se encuentran esos drivers, eligiendo la versión más reciente [habitualmente WinXP o Win2000].

3.- Abre un terminal y ejecuta sudo -s, lo que nos va a permitir trabajar como usuario root [los usuarios de distros no basadas en Ubuntu no ejecutarán este paso 3º, pero deben recordar que los apartadosl 4 al 6 deben ejecutarse como root]. Si pasados 5 minutos debes ejecutar alguno de estos pasos y no dispones de privilegios como root, debes ejecutar nuevamente sudo -s o si lo prefieres, ejecutas el comando anteponiendo sudo, quedando de la siguiente forma sudo comando_de_linux

4.- Ejecuta ndiswrapper -m [ésto crea el alias wlan0 y lo asocia con el módulo ndiswrapper].

5.- Ejecuta ndiswrapper -i /home/ruta_driver/driver_windows.inf [ésto instalará los drivers para ser usados con ndiswrapper]. Se puede comprobar que ha sido cargado correctamente usando como root el comando ndiswrapper -l lo que listará los drivers instalados con ndiswrapper y nos indicará si su hardware está presente o no.

6.- Y por ultimo, modprobe ndiswrapper.

En tarjetas, para que cargue el módulo en cada reinicio, es indispensable añadirlo a la lista de /etc/modules, por lo que vas a editar ese archivo como root y al final del mismo debes añadir una nueva línea con el nombre ndiswrapper. En mi caso abrí como root el editor Gedit mediante el comando gedit /etc/modules.

Te aconsejo usar otras fuentes de información, como la sección de Guadalinex denominada Guadapedia, donde se detalla cómo llevar a cabo la operación para la
versión 2004 [basada en Debian] y para la versión 3 [basada en Ubuntu Breezy].


¿Cómo configurar la conexión?

Es posible que a partir de este momento, la tarjeta empece a guiñar y a dar señales de vida. ¡¡¡ Ya era hora !!! Es el momento de configurar la conexión. En primer lugar lo voy a explicar por el método tradicional usando la línea de comandos. Posteriormente, explicaré el método más sencillo a partir de la utilidad Ndisgtk.

Ahora debes editar como root el archivo /etc/network/interfaces con el comando
gedit /etc/network/interfaces y debe quedar con la siguiente sintaxis:

auto lo
iface lo inet loopback
iface wlan0 inet dhcp
pre-up modprobe ndiswrapper
post-down rmmod ndiswrapper
wireless_essid nombre_de_la_red
wireless_key tu_contraseña
auto wlan0

En algunos dispositivos es posible que la interfaz inalámbrica no sea wlan0, sino que reciba otro nombre, por lo que debes sustituirlo por el que te corresponda. La última línea hace que la interfaz wifi, wlan0, se cargue al inicio.

Si en lugar de conectar via dhcp, usas ip estática, el archivo interfaces debe quedar así:

auto lo
iface lo inet loopback
iface wlan0 inet static
address x.x.x.x
netmask x.x.x.x
gateway x.x.x.x
pre-up modprobe ndiswrapper
post-down rmmod ndiswrapper
wireless_essid nombre_de_la_red
wireless_key tu_contraseña
auto wlan0

Para verificar que todo funciona correctamente, desactiva la contraseña del router y en wireless_key introduces off. Ésto hará que se levante la interfaz de red inalámbrica sin necesidad de contraseña. Cuando todo funcione correctamente, configuras el cifrado de señal en formato wep. Ndiswrapper admite el encriptado wpa pero ese no es el motivo de este artículo y quizás más adelante lo expliquemos.

Si todo ha ido bien, levantas la conexión ejecutando como root elcomando ifup wlan0 y apagas, tambiéncomo root, con ifdown wlan0.

También puedes instalar Ndiswrapper usando la herramienta Ndisgtk que se instala como hemos explicado al principio. El método a seguir está descrito en la sección correspondiente de Guadapedia y simplifica notablemente el proceso de instalación.

Nota: En Ubuntu y Guadalinex v3, para ejecutar como root se debe anteponer a cualquier comando el término sudo.

Configurar de forma más sencilla

[El texto que corresponde a este apartado ha sido extraído casi en su totalidad de Guadapedia, en el sitio de Guadalinex].

Instalados los drivers, abre el menú Sistema > Administración > Red y nos pedirá que introduzcamos la clave de root, hecho lo cual, observaremos que se ha detectado el nuevo interfaz de red inalámbrica. Lo seleccionamos y, a continuación, pulsamos el botón Propiedades. Ahora nos aparecerá una nueva ventana. Allí tendremos que configurar todos los datos de la conexión.

  • Nombre de la red [ESSID]: Pondremos el nombre de la red inalámbrica exactamente igual, con mayúsculas y minúculas, tal como aparece en el menú de configuración wireless del router.
  • Tipo de Clave: Por defecto se deja en hexadecimal, pero se podrá cambiar si la contraseña nos falla.
  • Clave WEP: Si la conexión ha sido configurada en el router con clave wep, en esta casilla tendremos que indicar cuál es. En caso de usar caracteres ascii, al nombre de la clave se debe anteponer estos dos caracteres s:

A continuación tendremos que configurar los datos de red habituales.

  • Configuración: Si el router permite la conexión DHCP, usaremos dicha opción. Si no lo permite seleccionaremos Dirección IP estática. En este caso además tendremos que configurar lo siguiente:
    • Dirección IP: Es la dirección IP local de nuestra máquina en la red local. El formato usado será como este 192.168.0.5.
    • Máscara de subred: Se usa para definir el alcance de la red. Normalmente en una red local pequeña será 255.255.255.0.
    • Dirección de la puerta de enlace: Aquí pondremos la dirección IP local del router.
  • Una vez hayamos definido los parámetros de la conexión, pulsaremos la casilla (arriba) Activar esta conexión.
  • Pulsamos en Aceptar y volveremos a la ventana de Configuración de la red.
  • Aquí nos aseguramos que al seleccionar el dispositivo inalámbrico el botón Activar aparece sombreado (indicando así que ese dispositivo está activo). Si no lo estuviera, pulsaremos sobre dicho botón.
  • Finalmente pulsaremos en el botón Aceptar y cuando se apliquen los cambios tendremos configurada la conexión a internet.
El driver no funciona / Quiero usar uno diferente

Si tu driver de Window$ no funciona o quieres probar otro diferente, debes eliminar el primero antes de cargar uno nuevo. Para ello usa el comando

ndiswrapper -e anterior_driver_windos.inf

Ahora ya puedes cargar el nuevo driver [te sugiero que sea el de tu cd de instalación en window$ o en su defecto el recomendado en la lista de Ndiswrapper]. Ejecuta el comando

ndiswrapper -i nuevo_driver_windos.inf

Ahora debes cargar nuevamente el driver en el núcleo de tu sistema ejecutando como root el comando
modprobe ndiswrapper. Si todo ha ido bien, levantas la conexión ejecutando como root ifup wlan0 y apagas con ifdown wlan0.

Si a pesar de todo no logras conectar

Si no te conecta, intenta lo siguiente. Abre un terminal y ejecuta como root el comando
ifup wlan0 y ahora prueba a hacer ping a tu router [normalmente 192.168.1.1 o el que tu tengas como puerta de enlace] ping 192.168.1.1 Para probar si tienes conexión, vas a hacer ping al exterior a un par de sitios:

ping 66.102.9.104

ping www.google.es

Si el ping te responde positivamente, pero no te puedes conectar a internet cuando usas el navegador, el problema puede estar en las DNS's. [Cuando menos sabes que la tarjeta tiene acceso al router y a partir de ahí todo será bastante sencillo]. Si a pesar de todo no logras conectar, puede ser que no hayas desactivado la seguridad wifi de tu router [o que la wifi del router no este activa]. Si el router no te responde, prueba a hacer ping a la dirección de tu tarjeta [si la tarjeta está bien puesta esa acción debería responder sin problemas y sabrás que la tarjeta funciona y que el problema está en otra parte [probablemente en la configuracion del router o en el uso de mayúsculas/minúsculas]. Para configurar las DNS's entra en el menú Sistema > Administración > Red, selecciona tu dispositivo inalámbrico e introduce los valores de las dns correspondientes y que puedes anotar del sitio de Adsl4ever.

Otra posibilidad consiste en editar como root el archivo /etc/resolv.conf, mediante el comando gedit /etc/resolv.conf [ubunteros, recordad el uso de sudo]. Debe contener dos o más líneas con un contenido similar a éste:

nameserver x.x.x.x

Donde, x.x.x.x se corresponde con las DNS's del proveedor de acceso a Internet e incluso la puerta de acceso o gateway del router [si esas DNS's fueron cargadas en el menú de configuración del router].

Si aun no has conseguido que la tarjeta funcione


En algunos casos, especialmente con ciertos dispositivos usb, se requiere completar los pasos A, B y C que se indican a continuación, entre los puntos 5 y 6 de la lista de operaciones anteriormente descrita, para configurar correctamente Ndiswrapper.

A) Ejecuta lspci -n o lsusb [según el tipo de tarjeta pcmcia/pci o usb] para obtener el código identificador del dispositivo [en este caso se obtuvo 09aa:1000 y a partir de ahora me referiré a él como xxxx:yyyy].

B) Ejecutacomo root el comando ndiswrapper -l para ver cómo llama ndiswrapper al driver [en este caso prisma02, en tu caso será el que corresponda a la tarjeta en cuestión].

C) Ejecuta como root el comando ndiswrapper -d xxxx:yyyy prisma02 [ésto asocia el driver con el dispositivo] y le indica a Ndiswrapper dónde encontrarlo. Recuerda que en este ejemplo, donde pone xxxx:yyyy iría 09aa:1000. En tu caso lo sustituyes por el valor que corresponda. Y en lugar de prisma02 pones el nombre de tu driver obtenido con la ejecución del comando ndiswrapper -l descrito en el punto B.

Para finalizar, sigue con el paso 6 de la lista y ejecuta como root [no olvides sudo en Guadalinex v3 y en Ubuntu] modprobe ndiswrapper. Ésto dará por concluida la instalación. Revisa la configuración del arhivo /etc/network/interfaces e intenta lanzar nuevamente la aplicación para levantar la conexión.

Cada vez que hagamos un cambio en alguna característica de la red, para lanzarla de nuevo podemos evitar reiniciar el sistema [lo que convierte el proceso en algo demasiado lento, sobre todo si hay que hacer numerosos cambios y pruebas] si usamos como root el comando
/etc/init.d/networking restart.

No tienes conexión y quieres bajar los paquetes deb

NOTA IMPORTANTE: He comprobado que los paquetes de los repositorios de Ubuntu que indico más abajo o no están todos o algunos han cambiado de sitio, por lo que recomiendo buscarlos y descargarlos desde el propio navegador de internet del repositorio de Guadalinex y aprovecho también para recordar que aunque no es necesario, resulta conveniente descargar también el paquete common, junto a los paquetes utils y source. Además el buscador del repositorio ayuda enormemente en la tarea de encontrar paquetes aplicando distintos criterios como versiones o categorías.

Si no tienes conexión a internet, puedes descargar los paquetes deb de instalación de Ndiswrapper en otro equipo y luego copiarlos al tuyo:


A) VERSIÓN 1.1

Fuentes - Pincha aquí

Utilidades - Pincha aquí

Bájalos y los copias a tu escritorio de Linux. Entra en un terminal y cambia de directorio hasta situarte en tu escritorio [o en el directorio donde hayas alojado los paquetes]. Ejecuta en un terminal como root la siguiente orden:

dpkg -i ndiswrapper-source_1.1-4ubuntu2_all.deb
para el primero de los paquetes y


dpkg -i ndiswrapper-utils_1.1-4ubuntu2_i386.deb
para el segundo.


Ahora reinicias tu sistema y continúas con la configuración de los drivers, a partir del punto 2 de la receta.

B) PAQUETES NDISWRAPPER VERSIÓN 1.8 (No aconsejable su instalación en Guadalinex v3 y Ubuntu Breezy)

Paquetes de los repositorios Ubuntu:

Fuentes - Pincha aquí

Utilidades - Pincha aquí

Para instalarlos:

sudo dpkg -i ndiswrapper-source_1.8-0ubuntu2_all.deb
para el primero de los paquetes y


sudo dpkg -i ndiswrapper-utils_1.8-0ubuntu2_i386.deb
para el segundo.


Los paquetes de la versión 1.1 sabemos que funcionan correctamente en Guadalinex v3 y Ubuntu Breezy, pero no tenemos constancia de que los correspondientes a la versión 1.8 vayan a funcionar sin problemas. Así que tú decides. Si pruebas la versión 1.8 y te ha funcionado, coméntalo para que quede constancia de ello.

C) PAQUETE NDISGTK

Para facilitar la tarea en la configuración de Ndiswrapper, se puede instalar el paquete Ndisgtk, especialmente si no te sientes seguro en el uso del terminal.

Haz clic aquí para descargarlo

Esta utilidad facilita la carga de los drivers, evitando el uso del terminal, por lo que es muy adecuado para usuarios extremadamente novatos. No se debe olvidar que el método tradicional mediante la ejecución de comandos en terminal siempre estará ahí disponible.


Para instalarlo se debe ejecutar como root en un terminal el siguiente comando:

dpkg -i ndisgtk_0.6-0ubuntu1_all.deb

En los tres casos comentados, para la instalación de los paquetes debian, no olvides situarte previamente en el directorio de Linux donde hayas copiado los paquetes [también puedes hacerlo desde cualquier otro directorio, indicando a tu sistema la ruta donde tienes alojado el paquete] antes de ejecutar el comando dpkg -i nombre_completo_del_paquete.deb

Compilar Ndiswrapper usando las fuentes

Finalmente, y con esto termino, si decides optar por compilar los módulos de Ndiswrapper usando tus propias fuentes, descarga los archivos comprimidos del sitio de SourceForge e infórmate en el wiki del sitio sobre el procedimiento de instalación. No obstante, en un mensaje anterior he explicado los requisitos necesarios para llevarlo a cabo, en el apartado "¿Cómo compilar el driver?" del artículo "Instalar tarjetas compatibles con Linux" de este mismo blog.

Suerte y hasta pronto...

27 febrero 2007

Tarjetas Compatibles (II)

Esta tarea que se antoja sencilla en la mayoría de los casos, puede darnos más de un quebradero de cabeza. Es más, dependiendo de la distribución que hayamos instalado en nuestro equipo, podemos encontrarnos con la agradable sorpresa de que la tarjeta puede funcionar, simplemente, con la introducción de los datos de configuración de la red inalámbrica. Pero, en otros muchos casos, es posible que tengamos que vérnoslas con uno de los mayores tabúes de Linux: la compilación.

Desde aquí animo a los novatos en este sistema operativo a intentarlo. En mis inicios tuve necesidad de compilar no sólo los drivers para un infame aparato, mal conocido como winmodem, sino que hube de enfrentarme a la compilación del kernel o núcleo de Linux cuando usaba Guadalinex 2004, basada en Debian Sarge. Fue mi primera gran experiencia y debo decir que me resultó especialmente grato. Para los que mecesiten saber cómo hacerlo les invito a visitar los foros de Guadalinex, un sitio donde suelo estar con asiduidad.

¿Cómo compilar el driver?

Ahora bien, si lo que pretendemos es compilar nuestro propio driver de Linux a partir de las fuentes obtenidas del fabricante [o, muy frecuentemente, de las que nos hemos bajado del sitio del equipo de desarroladores del driver libre], debemos, al igual que con otras muchas compilaciones, instalar previamente las cabeceras [headers] y/o las fuentes [source] del kernel correspondiente a la versión del núcleo de Linux instalado en nuestro sistema. Cada distribución tiene su propio método de instalación y conviene consultar los manuales o guías donde se detalla cómo hacerlo. En mi caso, voy a explicar cómo proceder si usamos una distribución basada en Debian [si estuviese basada en Ubuntu, procedemos de idéntica forma, pero cuando se haga referencia un comando que deba usarse como root, se antepondrá a la sintaxis del mismo el prefijo sudo].

  • Las cabeceras o headers del kernel suelen encontrarse como linux-headers o kernel-headers. Para saber exactamente la vesión que debemos descargarnos, podemos consultar en un terminal la versión exacta del kernel de Linuz mediante el comando uname -a. Suelen venir en el cd de instalación de la dsitribución y también se pueden descargar de los repositorios usando el programa Synaptic o desde un terminal mediante el siguiente comando como root [está claro que las cifras X.Y.z se corresponden con valores particulares en cada caso]:
apt-get install kernel-headers-2.X.Y-z
  • Para bajar la fuentes del kernel [kernel-source o linux-source, según la distro usada] de la misma versión del núcleo que tenemos instalado, podemos usar, igualmente, Synaptic o tiramos de línea de comando, como se ha explicado con las cabeceras, pero sustituyendo headers por source. Si no las encontramos, se pueden bajar del sitio http://kernel.org , con la diferencia que en el primer caso se crean de forma automática dos enlaces simbólicos que apuntan ambos al directorio /usr/src/linux-2.X.Y [donde X.Y se corresponden con la versión del kernel instalada] y en el segundo debes desempaquetar los paquetes en el directorio /usr/src y crear los enlaces simbólicos como root con el siguiente comando:
ln -s /usr/src/linux-2.X.Y /lib/modules/version-kernel/build
ln -s /usr/src/linux-2.X.Y /usr/src/linux

Seguidamente, y una vez que nos hemos bajado los drivers de la tarjeta, debemos seguir las instrucciones que se acompañan, normalmente en un archivo de texto llamado readme, para proceder a la compilación e instalación del driver. Son dos o tres pasos sencillos que no deben ser causa de mayores problemas. En el peor de los casos, si ocurre algún error, el sistema nos devuelve un mensaje en el que se nos indica el origen de aquél.

¿Cómo instalar el driver?

Finalmente, y una vez que tenemos el driver compilado y el módulo que gestiona el uso de la interfaz inalánbrica o wifi, sólo queda cargarlo en el kernel y configurar la conexión. Para cargar el módulo, ya sea compilado por nosotros mismos o bien porque lo trae precompilado la distro que estemos usando [por ejemplo, Guadalinex v4, basada en Ubuntu Edgy, trae compilados los módulos de bastantes tarjetas, por lo que tiene un magnífico nivel de reconocimiento de hardware], simplemente hay que ejecutar como root [anteponer sudo para distros basadas en Ubuntu] el comando modprobe modulo_tarjeta. Con esto cargamos en el kernel el módulo que se encarga de hacer que nuestro sistema se entienda con el dispositivo inalámbrico [wifi]. A veces, se requiere editar como root el archivo /etc/modules y añadir al final del mismo una nueva línea con el nombre del módulo que gestiona nuestra tarjeta. Yo suelo usar como editor de texto Gedit, por lo que procedemos a abrir un terminal y ejecutamos el comando gedit /etc/modules, añadimos al final una nueva línea con el nombre del módulo que gestiona nuestra tarjeta. Para comprobar que nuestro driver ha sido cargado, podemos leer el informe de módulos del kernel cuando ejecutamos en un terminal el comando lsmod.

¿Qué drivers vienen precompilados con nuestra distro?

Lo mejor es informarse en el propio cd de instalación, en los foros y en nuesto sistema recién instalado antes de hacer nada. Voy a comentar algunos chipsets junto a los módulos que usan habitualmente:

  • Atheros. El más común de los chipsets de atheros es el ar5212, que funciona con el driver de Madwifi. En Ubuntu Edgy se debe instalar el paquete "linux-restricted-modules" [está motivado porque parte del código que gestiona el uso de la tarjeta no es libre] o bien debemos bajarnos los drivers del sitio http://madwifi.org/ y compilarlos. Guadalinex en sus versiones 3 y 4 los trae compilados y se cargan automáticamente, aunque si fuese necesario cargarlos en el núcleo, basta con ejecutar como root el comando modprobe ath_pci.
  • Ralink. Este fabricante se ha distinguido por liberar el código de sus tarjetas inalánbricas y es, actualmente, una de las mejores opciones de compra. Habitualmente el chipset recibe el mismo nombre o similar que el módulo que lo gestiona. En Guadalinex v4 y Ubuntu Edgy encontramos precompilados los módulos rt2500, rt2570, rt61 y rt73. Una simple búsqueda en nuestro sistema, desde un terminal, con el comando locate rt* nos devuelve la lista de módulos disponibles cuyo nombre empieza por rt. Otra posibilidad es usar en terminal como root el comando modprobe -l | grep "modulo" [el nombre del módulo admite comodines con * y debe ir entrecomillado]. Según he leido, el módulo rt61 no funciona en Edgy, por lo que se debe compilar desde las fuentes [Ubuntu-es], aunque los usuarios de Guadalinex v4 no necesitamos instalar las cabecerasw/headers. Respecto al módulo rt73, si se trata de un dispositivo usb requiere instalar el firmware en el directorio /etc/Wireless/RT73STA [si no existe debe crearse como root], después de haber renombrado el archivo rt73.bin como rt73sta.dat. Si no logras que funciones, quizás debas compilar un nuevo módulo, para lo que te aconsejo seguir esta receta. En el sitio de Ralink y, mejor aun, en el Open Source rt2x00 podemos encontrar más información.
  • Zydas. Fabrica los muy conocidos zd1211 y el menos común zd1201. El zd1211 está presente casi exclusivamente en dispositivos USB y el módulo que lo gestiona, al igual que el zd1201, tiene el mismo nombre que el chipset. Puede obtenerse más información para los drivers de zd1211 y para los de zd1201 en los sitios respectivos. Encontramos compilados ambos módulos en las últimas distribuciones de Linux, particularmente en Guadalinex v3 y v4, por lo que su carga en el sistema es inmediata y sencilla. Sin embargo, parece que en algunos casos, particularmente el zd1211, está dando problemas, por lo que deberás compilar el driver siguiendo las instrucciones del paquete oficial o como se indica en el sitio de Ubuntu Francófono. Como última opción tenemos la de usar Ndiswrapper.
  • Prism54. Es otro de los chipsets que tienen drivers bajo Linux y cuyo módulo respectivo, prism54, está disponible en las versiones mencionadas, al igual que en la mayoría de distribuciones de Linux. Se puede obtener más información del driver en http://prism54.org/. Un caso particular, es el de la tarjeta Senao 3054 ub5 [dispositivo USB Amper de Telefónica de España]. Se ha puesto a punto con Ndiswrapper, aunque no descarto que pueda usarse los drivers de Linux.
  • Intel/IPW. Se vienen usando los chipsets de Intel Pro Wireless, IPW, frecuentemente integrados en numerosos equipos portátiles. Dispone de drivers libres enel sitio de SourceForge para tres modelos diferentes de chipset, el más antiguo ipw2100, el más habitual ipw2200 y el más reciente ipw3945. Algún problema con el firmware en versiones más antiguas complicó su instalación en cierta medida. En el sitio de Guadalinex se explica cómo instalar y compilar ipw2100 y 2200. En cambio para hacer funcionar tarjetas que montan el chipset ipw3945, en Guadalinex v4 disponemos del módulo ya compilado que permite levantar la conexión, incluso arrancando el equipo desde el Live-CD.
  • ACX100/ACX111. El fabricante Texas Instrument [TI] ha conseguido un buen producto con drivers libres que gestionan estas tarjetas, pero en Ubuntu y Guadalinex están dando problemas, por lo que queda el recurso de compilar un nuevo driver o en su defecto usar Ndiswrapper. Se pueden descargar las fuentes del driver y encontrar más información en ACX100 de Sourceforge y en Craig's [para versiones del kernel anteriores a la 2.6.14].
  • Realtek 8180. Una nueva familia de chipsets basados en el 8180 está siendo soportada por Linux. En el sitio de Realtek en SourceForge se encuentra información del proyecto para la familia del rtl8180. En la sección de descargas del sitio oficial de Realtek podemos encontrar drivers para este chip de Realtek.
  • Broadcom. Ha creado una nueva generación de chipsets compatibles con Linux y reconocidos como bcm43xx. Dispone del módulo que la gestiona pero requiere la instalación de firmware propietario, por lo que no es instalada automáticamente. En el sitio de Fentlinux se nos explica cómo usarla con sus propios drivers y con Ndiswrapper.
  • Prism2/2.5/3. Son de las más veteranas entre las tarjetas compatibles y suelen dar cobertura a las más que difíciles conexiones por USB. Más información a través del proyecto Linux-wlan-ng, aunque lleva parado desde el año 2004 por ser material obsoleto que usa el protocolo 802.11b. Caso particular es el de la Amper - Senao SL-2511CDPLUS EXT2 por PCMCIA y la Senao SL-2511UB por USB, ambas de Telefónica y, por tanto, muy populares entre bastantes usuarios. Recomiendo visitar los foros de Guadalinex para saber cómo instalarlas.
  • Atmel. Es también uno de los fabricantes más veteranos y dispone de productos que funcionan exlusivamente con el protocolo 802.11b. En casi todas las distros de Linux se incorporan drivers libres, bajo el proyecto AT76C502. En el sitio de SourceForge se da cobertura a otro proyecto para Linux. Material muy fiable pero clasificado como obsoleto.
Hay algunos chipsets que me he dejado en el tintero [ufff... menos mal... este capítulo se me está haciendo larguísimo, quizás porque he tenido que escribirlo íntegramente desde el principio y he debido reorganizar toda la información], ya que éstos son los que me resultan más conocidos y frecuentes. Dejo en vuestras manos añadir los que falten.

Debo decir que la mayoría de las tarjetas que montan alguno de los chipsets mencionados [casi me arriesgo a decir que todas], funcionan con Ndiswrapper, pero hay que hacer antes una pequeña correción. Se debe editar como root un archivo llamado blacklist [buscar en /etc/hotplug/blacklist para Guadalinex v3/Breezy o en
/etc/modprobe.d/blacklist para Guadalinex v4/Edgy] y añadir una línea al final del texto con el nombre del módulo que haría funcionar el chipset de la tarjeta en v3 y el término blacklist seguido del nombre del módulo para la v4. Con ello conseguimos que no se vuelva a cargar en el inicio del sistema y así evitamos que interfiera con la carga del driver de Ndiswrapper. También nos aseguraremos de descargar el módulo usando como root [ubunteros, recordad el uso de sudo] el comando rmmod nombre_modulo.

El próximo capítulo estará dedicado a la instalación de Ndiswrapper.

¡¡¡ Hasta pronto !!!

;-)

26 febrero 2007

Tarjetas Compatibles (I)

Este es el primero de una serie de tres artículos dedicados a explicar qué dispositivo inalámbrico conviene elegir para conectar nuestro equipo vía wireless usando el sistema operativo Linux. En este primer número trato de explicar cómo elegir la tarjeta adecuada para que funcione en nuestro flamante sistema operativo del pingüino. En el segundo número explico cómo instalar las diferentes tarjetas compatibles, según el chipset que puedan montar. Finalmente, en el tercero, explico un procedimiento muy ingenioso para hacer funcionar con Ndiswrapper aquéllas tarjetas que no son compatibles [o que, simplemente, no somos capaces de hacerlas funcionar con sus respectivos controladores bajo Linux].

Mi experiencia
con este tipo de dispositivos inalámbricos [comúnmente conocidos como wifi] ha sido más que satisfactoria, aun a pesar de que muchos fabricantes no disponen de drivers suficientemente desarrollados para sistemas operativos Linux o, simplemente, no disponen de drivers, situación que resulta cada vez menos habitual.

Existen en el mercado chipsets que vienen dando soporte para Linux desde las primeras versiones [aquéllas que usaban el protocolo 11.b], como los muy conocidos Orinoco o los Prism2/2.5/3. Pero hoy, cada vez son más difíciles de encontrar y la mayoría de las tarjetas que podemos adquirir en el mercado usan el más evolucionado protocolo 11.g, aunque son compatibles con el anteriormente citado 11.b.

Así pues, si estás leyendo este blog es porque tienes necesidad de configurar tu conexión inalámbrica bajo el sistema operativo Linux que, aunque muchos no lo crean, lleva años dando asistencia para este tipo de conexiones. Por tanto, voy a dejarme de rollos y me voy a centrar en la explicación que ocupa este artículo.

¿Qué tarjeta me compro?

Ésta es la primera pregunta que todos nos hacemos antes de agenciarnos ese pequeño dispositivo que nos permite conectarnos casi desde cualquier sitio [siempre que haya una red inalámbrica que nos dé cobertura], en nuestra casa, en el trabajo, en la Universidad, en un aeropuerto e incluso hasta en plena vía pública.

Mi opinión es que miremos antes las ofertas del mercado, ya que la diferencia de precios puede justificar una compra u otra. Además, podemos instalar la tarjeta a un puerto USB [es la opción preferida por la mayoría de compañías proveedoras de acceso a Internet... ¿por qué será?] o a un puerto PCI [como otros tantos dispositivos de nuestros equipos de sobremesa]. Un caso particular es el de las denominadas PCMCIA/Cardbus de muchos ordenadores portátiles y que se podrían englobar entre las de tipo PCI.

Si tenemos la posibilidad de elegir por el tipo de interfaz de conexión y no queremos quebrarnos la cabeza, hay que evitar las de tipo USB, aunque, como comentaré más adelante, su grado de compatibilidad es cada vez mayor.

Una vez que hemos elegido el tipo de interfaz que queremos para nuestra tarjeta, viene la opción más difícil. ¿Qué chipset nos conviene que lleve instalado? Por supuesto, cualquiera que sea compatible con Linux. Y aquí os recomiendo echar un vistazo al sitio Linux Wireless LAN Support, donde se puede consultar el grado de compatibilidad de una tarjeta según el fabricante de la misma [aunque debo decir que, con demasiada frecuencia, los fabricantes modifican el chipset de sus tarjetas sin previo aviso y nos encontramos con un mismo modelo de tarjeta que puede montar dos y hasta tres chipsets diferentes]. Esto nos obliga a comprobar previamente el grado de compatibilidad que pueda tener la tarjeta candidata y, a pesar de todo, comprar el producto con la condición de que si no es compatible con Linux o somos incapaces de hacerla funcionar, podamos devolverla sin ninguna complicación. La mayoría de los comercios nos van a dar estas facilidades, pero conviene hablarlo previamente con el establecimiento elegido.

Ya tengo mi tarjeta. ¿Y ahora qué?

Pues es el momento de pasarle la prueba decisiva. En Linux es muy fácil saber el chipset que monta una tarjeta [en otros sistemas operativos es realmente un misterio]. Me he encontrado con tarjetas que no sólo han sido reconocidas de inmediato, sino que además han salido funcionando sin hacer absolutamente nada. Increíble, pero cierto.

Bien, pues llegado a este punto abrimos un terminal o consola y ejecutamos el comando lspci [ojo, que empieza por ele] si es un dispositivo PCI/PCMCIA o bien lsusb si fuera tipo usb. Aparecerá una lista de los dispositivos conectados al puerto referido. Normalmente vamos a encontrar un extenso informe en el que suele aparecer una línea como la siguiente:

0000:02:00.0 Network controller: Ralink Ralink RT2500 802.11 Cardbus Reference Card (rev 01)

Cuando se trata de dispositivos PCI/PCMCIA [inclusive los de tipo interno que montan la mayoría de los equipos portátiles o laptops], conviene repetir la ejecución del comando con un modificador para que nos informe del código identificativo del chipset. Para ello ejecutamos en el terminal el comando lspci -n y obtenemos un informe en el que se incluye una línea como la siguiente:

0000:02:00.0 0280: 1814:0201 (rev 01)

En este caso, el código respectivo es 1814:0201 que identifica y caracteriza con precisión el chipset respectivo, aunque, afortunadamente, no lo íbamos a necesitar ya que sabíamos a partir del primer informe que se trataba del chipset rt2500 del fabricante Ralink, perfectamente compatible con Linux. Debo decir que el informe del comando lsusb nos proporciona directamente la combinación de ocho dígitos identificativos, aunque si fuera necesaria más información podría ejecutarse lsusb -v.

Una vez que hemos identificado el chipset debemos verificar si tiene drivers compatibles para Linux. Esa búsqueda puede resultar de lo más simple o, por el contrario, volverse de lo más ingrato. Normalmente, si en el informe encontramos un chipset fabricado por Ralink, Atheros, Prism, ACX, IPW, Zydas y algunos otros [llegado a este punto es recomendable mirar en la lista que nos ofrece el sitio de "Linux Wireless LAN Support" mencionado más arriba], estaremos de enhorabuena. Como diría un matemático, se trata de una condición necesaria pero no suficiente, ya que en no pocos casos, nos encontramos con tarjetas que montan chipsets compatibles y que no hay forma de hacerlas funcionar. No todo iban a ser buenas noticias. En el próximo envío explicaré cómo hacer funcionar estos dispositivos en sistemas operativos basados en Linux.

¿Y si mi tarjeta no es compatible con Linux?

Pues no está todo perdido. Existe un remedio en Linux que hace funcionar a muchísimas tarjetas [compatibles y no compatibles] y que suelen tener disponible la mayoría de las distribuciones: NdisWrapper. Como se puede comprobar en Wikipedia, se trata de un "envoltorio" que permite insertar en él los drivers de Windows para que funcionen bajo Linux. Y esta maravilla es "Open Source" por lo que no debemos tener remordimientos a la hora de usarla en nuestro sistema. ¡Para algo tenía que servir el S.O. de las ventanitas!

Si nuestra distro favorita, una vez instalada no dispone de esta prodigiosa herramienta, tenemos dos opciones: bajarnos los paquetes de los respositorios habituales o, en el peor de los casos, compilarlos. Yo soy usuario de Guadalinex, la distribución andaluza de Linux basada actualmente en Ubuntu y adaptada a las necesidades de una comunidad que crece gracias al esfuerzo de educadores, desarrolladores y usuarios. Os invito a visitar nuestros foros, en los que participo desde hace algún tiempo.

¡¡¡ Hasta el próximo capítulo !!!

:-)