NDISwrapper es un software libre que permite utilizar controladores de red de Windows XP (para dispositivos como tarjetas PCI , módems USB y enrutadores ) en sistemas operativos Linux. NDISwrapper implementa las API del kernel y NDIS de Windows y enlaza dinámicamente los controladores de red de Windows con esta implementación. Por lo tanto, solo funciona en sistemas basados en las arquitecturas de conjunto de instrucciones compatibles con Windows, es decir, IA-32 y x86-64 .
Los controladores nativos para algunos adaptadores de red no están disponibles en Linux, ya que algunos fabricantes mantienen interfaces propietarias y no desarrollan controladores multiplataforma. NDISwrapper permite el uso de controladores de Windows, que están disponibles para prácticamente todos los adaptadores de red de PC modernos.
Usar
El proceso consta de tres pasos: crear un controlador Linux, instalarlo y usarlo. NDISwrapper se compone de dos partes principales: una herramienta de línea de comandos que se utiliza durante la instalación y un subsistema de Windows que se usa cuando una aplicación llama al subsistema Wi-Fi .
Dado que el resultado de la instalación de NDISwrapper debe ser un controlador de Linux para poder trabajar con aplicaciones de Linux, el primer paso que debe realizar el usuario es compilar algunos archivos de Windows y la versión del DDK de Windows de NDISwrapper en un módulo del kernel de Linux. Esto se realiza con una herramienta llamada "ndiswrapper". El controlador de Linux resultante se instala (a menudo manualmente) en el sistema operativo. Una aplicación de Linux puede entonces enviar una solicitud a este controlador, que automáticamente realiza las adaptaciones necesarias para llamar a su controlador y DDK de Windows internos.
Para lograr esta "compilación", NDISwrapper requiere al menos los archivos ".inf" y ".sys" que invariablemente se proporcionan como parte del controlador de Windows. Por ejemplo, si el controlador se llama "mydriver", con los archivos mydriver.inf y mydriver.sys y vendorid:productid 0000:0000, entonces NDISwrapper instala el controlador en /etc/ndiswrapper/mydriver/ . Este directorio contiene tres archivos:
- 0000:0000.conf , que contiene información extraída del archivo inf.
- mydriver.inf (el archivo inf original)
- mydriver.sys (el archivo del controlador)
Interfaces gráficas

Existen interfaces gráficas para NDISwrapper, como Ndisgtk y NdisConfig, que permiten instalar NDISwrapper mediante una interfaz gráfica de usuario en lugar de comandos de consola.
Arquitectura
NDISwrapper permite que un sistema tipo Unix utilice controladores de Windows de tipo NDIS y WIFI. Fue útil en una época en la que no existían controladores Wi-Fi para Linux para las tarjetas Wi-Fi comunes. Está compuesto por:
- Un controlador NDIS, que es una especie de capa superpuesta para controladores de dispositivos Ethernet .
- Un gestor Wi-Fi para controlar la parte de radio y seguridad de la tarjeta Wi-Fi. Expone una interfaz de "extensión inalámbrica".
- Un gestor USB y un gestor PnP para permitir el uso de tarjetas Wi-Fi integradas en memorias USB. El gestor USB se compone de dos partes: primero, una pequeña implementación de USBD (pila USB) y, a continuación, un sencillo controlador USB basado en el modelo de controlador de Windows (WDM), que a su vez se compone de dos partes: la parte frontal recibe llamadas de la pila USB NDISwrapper (de hecho, llamadas procedentes del controlador original de Windows que normalmente iban dirigidas a la pila USB de Windows) y la parte posterior utiliza la pila USB de Linux.
- Un Ntoskrnl mínimo que simula el DDK para:
- Gestionar las llamadas desde el controlador de Windows.
- Gestionar IRP para el controlador de Windows (solo WDM por el momento)
- administrar controladores de filtro de forma sencilla
- Carga/descarga de controladores de Windows
- Un envoltorio que convierte llamadas de Linux a Windows y viceversa, gestionando también los resultados y los códigos de error.
Cómo funciona
Ndiswrapper utiliza archivos INF de Windows . [ 1 ]
Cuando una aplicación Linux llama a un dispositivo registrado en Linux como dispositivo NDISwrapper, este determina qué controlador de Windows es el objetivo. Luego, convierte la consulta de Linux al lenguaje de Windows, llama al controlador de Windows, espera el resultado, lo traduce al lenguaje de Linux y, finalmente, envía el resultado de vuelta a la aplicación Linux. Es posible que un controlador de Linux (NDISwrapper es un controlador de Linux) llame a un controlador de Windows porque ambos se ejecutan en el mismo espacio de direcciones (el mismo que el kernel de Linux). Si el controlador de Windows está compuesto por controladores en capas (por ejemplo, uno para Ethernet sobre otro para USB), se llama al controlador de la capa superior, y esta capa superior creará nuevas llamadas (IRP en el lenguaje de Windows) llamando al "mini ntoskrnl". Por lo tanto, el "mini ntoskrnl" debe saber que existen otros controladores, ya que debe haberlos registrado previamente en su base de datos interna leyendo los archivos ".inf" de Windows.
Programas similares
- DriverLoader , archivado el 17 de mayo de 2007 en Wayback Machine , es una herramienta comercial producida por Linuxant para Linux que parece ofrecer la misma funcionalidad que NDISwrapper.
- De forma independiente, pero casi simultáneamente con el proyecto NDISwrapper, Bill Paul de Wind River Systems desarrolló un sistema similar, conocido como Project Evil o The NDISulator , para FreeBSD . [ 2 ] Posteriormente se adaptó a DragonFly BSD [ 3 ] y NetBSD . [ 4 ]
Limitaciones
- NDISwrapper se basa en las antiguas "extensiones inalámbricas" para permitir que las aplicaciones accedan a Wi-Fi.
- Como NDISwrapper depende de los controladores de Windows, solo admite las arquitecturas i386 y x86_64 . [ 5 ]
- NDISwrapper aún no implementa NDIS 6 ( versión para Windows Vista ), lo que limita los controladores a Windows XP. [ 6 ] A partir de octubre de 2013 , una rama de código en el sitio del proyecto ha estado en desarrollo desde 2006, [ 7 ] pero una solicitud de función de 2009 ha quedado sin asignar. [ 8 ]
- Si bien no representa un problema importante para la arquitectura x86 debido a la popularidad de Windows XP IA-32 , muchos proveedores optan por crear versiones de controladores de 64 bits únicamente para Windows Vista , lo que implica que los sistemas Linux que utilizan la arquitectura x86-64 no pueden usar dichos dispositivos de red (no pueden usar ni XP IA-32 NDIS5 porque son sistemas de 64 bits ni controladores NDIS6 de 64 bits porque no pueden usar NDIS6). Aún es posible usar controladores de Windows XP de 64 bits que implementan NDIS5, [ 9 ] sin embargo, existen menos controladores disponibles para XP64 (NDIS5/64 bits) que para XP32 (NDIS5/32 bits).
- Desde 2006, la mayoría de los controladores de Windows cumplen con el estándar Windows Driver Foundation (WDF), que NDISWrapper no puede utilizar. Esto hace que NDISWrapper quede obsoleto, ya que solo admite el marco de controladores WDM anterior.
Véase también
Referencias
- ↑ "¿Qué distribución de Linux funciona directamente con el adaptador wifi USB D-Link DWL-g122 rev.c1 (Rt73)??" .
- ↑ Bill Paul (24 de enero de 2004). "Proyecto Malvado: El mal continúa" . freebsd-current (Lista de correo). Archivado del original el 2 de julio de 2017. Recuperado el 9 de septiembre de 2014 .
- ↑ "sys/dev/netif/ndis/" . Referencia cruzada de BSD para superusuarios . DragonFly BSD . 8 de diciembre de 2018. Consultado el 4 de marzo de 2019 .
- ↑ NetBSD-SoC: Adaptación del controlador de red NDIS de FreeBSD a NetBSD
- ↑ "Sourceforge.net: FAQ - ndiswrapper" . ndiswrapper.sourceforge.net. 2010-01-20 . Consultado el 2011-08-05 .
- ↑ "SourceForge.net: Preguntas frecuentes sobre ndiswrapper" . Ndiswrapper.sourceforge.net. 2010-01-20 . Consultado el 2024-06-28 .
- ↑ "SourceForge.net: rama de código ndisv6" . Ndiswrapper.sourceforge.net. 1 de noviembre de 2013. Consultado el 1 de noviembre de 2013 .
- ↑ "SourceForge.net: solicitud de función ndiswrapper" . Ndiswrapper.sourceforge.net. 12 de abril de 2009. Consultado el 28 de julio de 2013 .
- ↑ "Ndiswrapper / Discusión / Ayuda: No se pudo cargar el controlador netr7364" .
Enlaces externos
- Wiki de NDISwrapper
- Área de descarga de NDISwrapper
- Instalación de NDISwrapper : un vídeo fácil de seguir que muestra cómo instalar NDISwrapper y empezar a usarlo.
- Ndisgtk
- NdisConfig
- Proyecto Malvado: El mal continúa , 24 de enero de 2004, Bill Paul en una lista de correo de FreeBSD
- Demasiado malvado, demasiado furioso , 25/04/2005, Bill Paul en una lista de correo de FreeBSD
- Puerto del controlador NDIS de NetBSD
- Controladores de dispositivos
- Capas de compatibilidad