NdisWrapper, Wifi fácil en Linux

Todos sabemos que uno de los mayores problemas de Linux ha sido siempre la falta de drivers específicos para todo el hardware disponible. La falta de compromiso de los fabricantes de nuevos drivers (justificada en parte por el escaso porcentaje de usuarios de Linux) ha dejado en sombras a muchos usuarios de Linux, hasta el punto de que es normal preguntarse al elegir un nuevo componente para nuestro ordenador si podremos “echarlo a andar” en Linux.

La verdad es que siempre, con más o menos esfuerzo, se consiguen solucionar la mayoría de los problemas. El avanzado desarrollo del kernel en este sentido y la adaptación por parte de las distintas distros de los drivers que se desarrollan paralela y altruistamente para estos componentes facilita las cosas.

Distinto es el caso de las tarjetas de red wireless. La tecnología Wi-fi lleva tan poco tiempo en el mercado que es muy normal que no encontremos drivers para todos los modelos. La mayoría de los fabricantes únicamente ofrece drivers para las últimas versiones de Windows (Win2000 o WinXP). En este sistema operativo, la mayoría de los drivers de las tarjetas usan llamadas al protocolo NDIS de Microsoft. Es decir, que crean drivers que se comunican con el sistema operativo de una forma genérica dictada por este protocolo. Aquí entra en juego la utilidad NdisWrapper.

Como su propio nombre indica, NdisWrapper lo que hace es mapear los drivers NDIS de WinXP/Win2000 de cada fabricante a un módulo genérico en el kernel de Linux. Es decir, que NdisWrapper usa los drivers propietarios en Windows de cada tarjeta y transforma sus llamadas al protocolo NDIS a llamadas a un módulo wireless cargado en el kernel de Linux. Con esta utilidad conseguiremos hacer funcionar sin ningún problema casi cualquier tarjeta wireless, pero además más dispositivos que usan el NDIS. El proyecto tiene un sistema de documentación basado en wiki estupendo. Aún así, paso a resumir los pasos para utilizar NdisWrapper:

  1. Requisitos previos. Fuentes del kernel de Linux. Y que sea nuevecito (>2.4.26 o >2.6.6), ein?.
  2. Instalar NdisWrapper. Las típicas opciones ya conocidas por todos para instalar programas en Linux. Por si acaso, aquí os dejo algunos enlaces al respecto:

  3. Instalar los drivers de WinXP Si usas directamente los que ya tienes en el CD, te puedes saltar los primeros 2 pasos. Recomendable no hacerlo.

    • Identificar nuestra tarjeta de red:
      $ lspci
      y apuntar su código PCI ejecutando:
      $ lspci -n
      donde concuerde el Bus ID (algo así como 0000:00:0x.0). En mi caso el código para una Conceptronic PCI es 168c:0013.
    • Identificar ese PCI ID en ésta lista y bajar los drivers. Descomprimirlos a un directorio.
    • Instalar los drivers con NdisWrapper. Desde el directorio con todos los archivos (.inf, .bin, .sys …), ejecutar
      $ ndiswrapper -i nombre_del_driver.inf

    Si todo ha funcionado, el driver está cargado. Ejecutando
    $ ndiswrapper -l
    Nos deben de salir las tarjetas cuyos drivers Win hayamos instalado en NdisWrapper (pueden ser más de una). Si la tarjeta está físicamente instalada, debería decir algo como
    Installed ndis drivers:
    xxxx driver present, hardware present

  4. Insertar el módulo genérico NdisWrapper en el kernel. Tranquilos que suena raro pero es muy fácil:
    $ modprobe ndiswrapper
    Y ya está! Si no ha fallado, ya tenemos nuestra tarjeta reconocida e instalada. Sólo queda rematar la faena.
  5. Configurar la tarjeta. Tiramos de ifconfig (parámetros de red - nivel IP) y iwconfig (parámetros wireless - nivel de enlace). O usamos las herramientas de nuestro Gnome, KDE… Este apartado (genérico, por otra parte) puede bien merecerse otro post.

Bueno, puede parecer difícil, pero os aseguro que es bien fácil. Además hay muchísimas tarjetas que así funcionan mejor aún que con el driver específico (para Linux) del fabricante. Espero que ésto ayude a más de uno a probar! Si tenéis cualquier duda, no dudéis en consultar en los comentarios. Aún así, las FAQs y la documentación de NdisWrapper son excelentes. Y para mi amigo Edu, comentarle que con NdisWrapper se puede usar WPA ;P

7 comentarios en “NdisWrapper, Wifi fácil en Linux”

  1. Edu® PR: 5dijo:

    Muchas gracias PIN! es muy muy interesante, al final vamos a tener que dejar el Windows, no nos estás dejando alternativa ;)

    Un abrazo.

  2. PIN PR: 4dijo:

    Cachis! Joder Edu, me has pillado en mi plan de dominar el mun…, digooo… de meteros a todos en Linux!! :P

  3. Miguel Gonzalez PR: 0dijo:

    Yo tengo la tarjeta Linksys WUSB11v4 802.11b USB 1.1 y su codigo USB es 13b1:000b, busco en la página que dices y encuentro esta tarjete y me bajo los drivers que dice pero lo unico que se baja es un .exe porque es a donde esta puesto el enlace y entonces como despues dices que nos metamos al directorio donde esta el .inf .sys y yo no me he bajado nada de eso, pues no se que hacer
    Si alguien sabe algo por favor que me lo diga que estoy desesperado con la tarjeta

    Muchisimas gracias

  4. fonsito PR: 0dijo:

    Hola, he seguido tu doc para instalar una conceptronic c54 pci como en debian, también me da 168c:0013 como a ti y el chip es Atheros o sea que supongo que los drivers que me he de bajar son los de DWL-520plus drv revALL, hasta esto todo correcto, instalo y bien, mprobe ndiswrapper y drivers instalados, pero de hay ya no paso, cuando intento meterle el ifconfig wlan0 essid me dice que no. Es posible que me haya bajado los drivers equivocados? Si me puedes hechar una mano te lo agradezco ya que estoy un poco desmoralizado, porque tambien intente instalarlos con madwifi y no he podido. Te lo pide al ver que tu tienes la misma tarjeta que yo, gracias por adelantado.

  5. Edu® PR: 5dijo:

    Hola Fonsito, la verdad es que tampoco te puedo ayudar con temas de Linux, pero lo que sí que he visto es que dices que la Conceptronic C54 tiene el chip Atheros y creo que no es así. El chip Atheros es algo más caro y estas son las más baratas del mercado. Yo tuve puesta una en un equipo con Ubuntu, que también está basado en debian y creo recordar que me la reconoció sin problemas.

    Un saludo.

    ********************************
    Eduardo Luque Portero
    Microsoft Certified Professional
    edu@bitacoradewebmaster.com
    http://www.bdw.es
    ********************************

  6. PIN PR: 4dijo:

    Pues es muy raro, fonsito, por que esa es exactamente la tarjeta que yo tengo. A mi me ha funcionado sin problemas…
    Voy a echar un vistazo a la lista, que ahora mismo no recuerdo exactamente los drivers que eran. Cuando lo mire te vuelvo a comentar aquí, o dejanos tu dirección de correo para ver si te puedo ayudar.

  7. Roberto PR: 0dijo:

    La Conceptronic c54ri (pci) lleva un chip Ralink, el driver es rt2500 (el mismo que para la version PCMCIA de la tarjeta). No es necesario bajarlo de la web de Ralink, ya que viene con la mayoria de distros.

    La Linksys WUSB11 v4.0 (usb) va con ndiswrapper y el WUSB11v4.inf (del CD o de la web de Linksys). La version (de ndiswrapper) que trae Ubuntu, y la mayoria de las distros (a dia de hoy), no funcionan bien con este driver, lo mejor es bajarse los fuentes de la ultima version de ndiswrapper y compilar.

    Yo tengo ambas tarjetas funcionando :)

    P.D. : ¡Ojo!, las WUSB11 v2.x van con el driver at76c503a, sin ndiswrapper. Las WUSB54 al llevar chip Ralink van con los drivers rt2xxx. La version se ve con lsusb (ej. Bus 001 Device 003: ID 13b1:000b Linksys WUSB11 v4.0 802.11b Adapter)

Deja tu comentario

XHTML: Puedes usar las etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>