Ndiswrapper

Saltar a: navegación, buscar
Icono-reciclar.png ¡Este artículo puede reciclarse!

Este artículo no cumple los estándares esperados en la wiki de openSUSE.
Con toda probabilidad, este artículo esté desfasado; sin embargo, puede que contenga suficiente material aprovechable. Estás invitado a ayudar a reciclar el artículo. Para más información ver el equipo del wiki.

Introducción


El soporte de drivers para las tarjetas inalámbricas basadas en el chip Atheros ha sido eliminado en la versión 10.1 debido a cuestiones de licencias ([1] Enlace en inglés y [2] Enlace en inglés). Existen dos soluciones disponibles para solventar esto:

  1. madwifi Enlace en inglés - un driver para el kernel de Linux totalmente open-source para las tarjetas inalámbricas con el chip Atheros.
  2. ndiswrapper Enlace en inglés - una implementación de la API win32 usada en conjunto con los drivers originales de Windows.

Cualquiera de estos métodos debería funcionar, y se recomienda probar en primer lugar madwifi (si tienes una tarjeta basada en Atheros). Si así no se soluciona, lo más probable es que lo haga con ndiswrapper, aunque puedas experimentar algún que otro problema menor. Este artículo describe la manera de echar a andar tu tarjeta con ambos métodos.

Ndiswrapper


Ndiswrapper usa los archivos *.inf de drivers Windows que trae tu hardware para manejar en Linux tu tarjeta inalámbrica.

Algunos fabricantes no liberan las especificaciones de su hardware o no proporcionan drivers para Linux de sus tarjetas inalámbricas. El proyecto Ndiswrapper implementa la API kernel de Windows y la API NDIS (Network Driver Interface Specification) en el kernel de Linux. De esta manera, el driver Windows de una tarjeta de red inalámbrica se enlaza a esta implementación y funciona de forma nativa, tal como en Windows, sin emulación.

¿Dónde obtener Ndiswrapper?


Ndiswrapper está incluido en los CD's de instalación de openSUSE. Usa la utilidad de Instalar/desinstalar software de YaST y comprueba que estén instalados los siguientes paquetes:

  • ndiswrapper
  • ndiswrapper-kmp-[default|smp|xen]
  • wireless-tools

Elige el módulo del kernel kmp apropiado para tu arquitectura. La mayoría necesitarán el "ndiswrapper-kmp-default".

También puedes probar a obtener la versión más reciente directamente desde la web de ndiswrapper. Enlace en inglés

Obtener los drivers de Windows


Nota: Puedes determinar qué drivers necesitas consultando tu hardware en particular en la lista de compatibilidad de ndiswrapper Enlace en inglés

Desde tu partición Windows

Si tienes una instalación dual-boot en tu máquina y tu tarjeta funciona correctamente en Windows, entonces la mejor manera de obtener los drivers es tomarlos de la propia partición Windows. Bajo Windows, ve al Administrador de Dispositivos Enlace en inglés y busca tu tarjeta inalámbrica bajo "Adaptadores de red". Haz clic derecho en el dispositivo y elige Propiedades->Controlador->'Detalles del controlador...'. Aquí deberías encontrar la ruta a un archivo *.sys, normalmente ubicado en el directorio C:\windows\system32\drivers\.

Ahora usarás la funcionalidad "Buscar" de Windows para encontrar el archivo *.inf correspondiente, que no es más que un simple archivo de texto (¡intenta abrirlo!) con una lista de todos los archivos que necesita el driver. Una consulta tipo en Windows podría ser:

Consulta de búsqueda en Windows
Todo o parte del nombre de archivo: *.inf
Una palabra o frase en el archivo: <la ruta del *.sys que encontraste más arriba>
Buscar en: Discos duros locales (C:)

¡Esta búsqueda puede llevar un rato! Cuando haya acabado, busca dentro del archivo *.inf con un editor de texto y mira si necesitas dar con algún archivo más. Si estás de suerte, todos deberían estar en un sólo directorio (por ejemplo C:\Archivos de programa\Atheros\Drivers\). Copia todos estos archivos a un sitio accesible o a una unidad USB que sea accesible desde tu Linux.

Desde el software de instalación del controlador

Hay varios sitios donde puedes empezar a buscar tus controladores, en orden de preferencia:

  • el CD de instalación que vino con tu hardware (¿lo tienes, verdad?)
  • en el sitio web del fabricante de tu PC o del fabricante de tu tarjeta
  • buscando tu archivo *.sys en Google

Si estás de suerte, encontrarás el archivo *.inf correcto y sus archivos relacionados fácilmente. A menudo necesitarás descomprimir un archivo *.cab que contiene toda la relación de ficheros del controlador. Consejo: puedes manejar los archivos *.cab mediante algún sitio web como driveragent.com. Puedes intentar descomprimir estos archivos mediante:

De nuevo, una vez los obtengas, cópialos a algún lugar accesible a tu sistema Linux.

Tratando con múltiples *.inf

Si hay dos o más archivos *.inf no temas, cada uno es para una versión distinta de windows. Mi disco de drivers tiene dos:

bcmwl5a.inf
and
bcmwl5.inf

El primero es win98; el segundo, para Win2K, Me, y XP. En mi caso, el de windows 98 funcionó y el de XP no.

Instalar tus drivers


Abre una consola y ejecuta su (si no sabes lo que es, el comando su significa "switch user" que sin parámetros se refiere a -- root---. Escribe la password de root).

Ahora escribe:

ndiswrapper -i /ruta/a/los/drivers/bcmwl5a.inf

Asegúrate de incluir la ruta a tu archivo *.inf.

Puedes hacer referencia directamente a cualquier directorio windows. Si la ruta a este directorio contiene espacios en blanco, por ejemplo, "Archivos de programa", es recomendable situarte primero con cd en el directorio del driver:

cd '/windows/donde está el archivo inf'
ndiswrapper -i esto_y_aquello.inf   

Si todo va bien, escribe:

ndiswrapper -l

Si lo has hecho bien, deberías ver algo como esto:

Installed ndis drivers:
<driver name> driver present, hardware present

Donde <driver name> muestra el nombre del driver windows instalado con ndiswrapper.

Si dice "invalid driver" entonces necesitas desinstalar ese driver e intentarlo con otro.

Para desinstalar un driver, tienes que escribir:

ndiswrapper -e <y el nombre del driver a desinstalar>

Una comprobación adicional puede ser mirar en

/etc/ndiswrapper 

si hay un directorio con el nombre del driver instalado.

Stick inalámbrico USB

Comentario de Martin Falinski (27.06.06)

Si tienes un stick inalámbrico USB, podría ser una ventaja. Pásale a ndiswrapper el VendorID y el ProductID con el parámetro -d. Busca ambos id's en Yast. Hardware>>Información sobre el hardware>>Categoría USB. Ahí encontrarás el dispositivo y dos números de 4 dígitos o caracteres, como 0437f y 2573.

Para enlazar el dispositivo USB al driver, escribe:

ndiswrapper -d xxxx:xxxx <y el nombre del driver>

echa un vistazo ejecutando:

dmesg

y busca successfully loading/connecting acerca del driver. ¡Si no, vuelve al paso 2!

Si funciona, puedes escribir el alias para ndiswrapper en el modules.conf con

ndiswrapper -m

luego mira si ndiswrapper será cargado con el comando

modprobe ndiswrapper

después podrás configurarlo con Yast

Inicialización de Ndiswrapper


Escribe

modprobe ndiswrapper

Después de que haya funcionado modprobe, si has configurado tu tarjeta en YaST, entonces puedes ejecutar

 rcnetwork restart 

que es lo mismo que (pero escribiendo menos)

/etc/init.d/network restart
para reiniciar tu administrador de red, y la tarjeta debería activarse correctamente.

Conflictos potenciales y otras cuestiones


Compilar desde el código fuente las versiones 1.46 y anteriores

Ndiswrapper 1.46 y posterior requiere de un kernel 2.6.17 o superior para compilar correctamente. openSUSE 10.2 y posteriores ya vienen con kernels superiores; los usuarios de versiones previas de SUSE necesitarán, o bien actualizar el kernel, o utilizar una versión de Ndiswrapper igual o inferior a la 1.45. Naturalmente, los usuarios que opten por los paquetes precompilados ndiswrapper-kmp-<flavor> que vienen incluidos en los CDs/DVDs pueden obviar este asunto.

Conflictos con NetworkManager

¿Alguien más tiene problemas aquí?

He encontrado, en openSUSE 10.2, que ifup sólo funciona cuando se configura la conexión inalámbrica (dirección IP, encriptación, autenticación, etc) vía YaST.

Estoy usando una Broadcom inalámbrica incluida en un portátil. Usa los drivers bcwl5a.inf.

Cargando Ndiswrapper durante el arranque

Un método que puede funcionar es editar el script de red, en /etc/init.d/network.

Add in a line that says modprobe ndiswrapper before it gets to the actual networking script so that ndiswrapper is loaded prior to the script running.

Nota: esto no debería ser necesario si configuras tu interfaz inalámbrica con YaST y especificas 'ndiswrapper' en el campo 'nombre del módulo'. Esto debería cargar el módulo del kernel ndiswrapper en el arranque.

Cargando Ndiswrapper durante el arranque (opensuse 10.3)

En algunos casos (como con los dispositivos inalámbricos USB), al configurar la interfaz wireless con YaST, no se carga automáticamente el módulo ndiswrapper en opensuse 10.3. Para que tu tarjeta wireless funcione durante el arranque, deberás editar el script de red (/etc/init.d/network) (como se describe más arriba).

Otro método es editar el archivo de configuración /etc/sysconfig/kernel, añadiendo ndiswrapper en la sección MODULES_LOADED_ON_BOOT (MODULES_LOADED_ON_BOOT="ndiswrapper").

Configurar tu tarjeta en YaST


Después de instalar ndiswrapper, abre el Centro de Control Yast (yast2) y ve a la pestaña Dispositivos de red del lado izquierdo. Luego haz clic en el icono Tarjeta de red. Esto abrirá el asistente de Configuración de red. En el "Método de configuración de red" elige "Controlada por el usuario mediante NetworkManager" y pulsa "Siguiente".

En la "Vista resumen", haz clic en "Añadir".

En "Tipo de dispositivo", elige "Inalámbrico" de la lista desplegable, deja todo como está y escribe ndiswrapper en el campo "Nombre del módulo". Pulsa "Siguiente".

En the Network Address Setup, ve a la pestaña "General", y cambia el firewall a "Zona externa". Esto podría cambiar según el caso. Cambia la "Activación del dispositivo" a "Durante el arranque" (o "Conexión mediante Hotplug"). Pulsa en "Siguiente".

En la siguiente pantalla configura los aspectos de tu red. Mi experiencia es que es mejor dejar los campos ESSID y clave de encriptación vacíos y dejar que KDEWallet los configure, de otra manera podría haber conflictos. Most of the time, your Operating Mode will be set to "Managed".

Un caso particular

Me gustaría compartir mi experiencia de echar a andar una tarjeta inalámbrica Broadcom Dell 1390 mini-pci en un portátil Compaq Presario V6000 con dual boot entre Windows Vista Home (32 bits) y openSUSE 10.2 (64 bits). Espero que de esta forma puedas ahorrarte tiempo y frustraciones, si te ves en un caso parecido.

El portátil se conectaba perfectamente a internet desde Vista a través de un router inalámbrico Linksys con encriptación WPA-PSK y con un ESSID sin publicar. El objetivo era lograr la misma funcionalidad desde openSUSE 10.2.

El primer problema fue detectar la tarjeta. Tuve que usar ndiswrapper junto con los drivers bcmwl5.inf y bcmwl564.sys (disponibles mediante el archivo extraíble R151517.EXE desde el centro de descargas Dell). No funcionó ningún otro método.

Entonces intenté configurar la tarjeta mediante YaST, tal como se descibe en el artículo. Aunque se encendía el led azul, y la tarjeta detectaba otras redes seguras, cuando usé iwlist wlan0 scan no encontraba mi red (comprensible, ya que el ESSID de mi red no se muestra). No encontré la manera de configurar los aspectos de seguridad de la red usando YaST. El comando iwconfig mostraba sólo la configuración por defecto. ¡Ésto me frustraba! Entonces decidí usar KNetworkManager y asunto resuelto. Pude configurar la tarjeta según la seguridad de mi red y conectar a internet. Lo único que necesitas es lanzar knetworkmanager cada vez que arrancas, para lo que necesitas ejecutar, por ejemplo:

ln -s /opt/kde3/bin/knetworkmanager ~/.kde/Autostart/knetworkmanager

Ver también


Enlaces externos

¿Aún no sabes cómo va esto?
Visita: http://www.opensuse.wiseportion.com/10.2/ndiswrapper.php Enlace en inglés