NDISwrapper

NDISwrapper
NDISwrapper
Ndiswrapper.png
ndiswrapper command line
Developer(s) Jan Kiszka, Giridhar Pemmasani, Pontus Fuchs
Stable release 1.56 / February 11, 2010; 20 months ago (2010-02-11)
Operating system Linux on IA-32 and x86-64 architectures only
Type driver wrapper
License GNU GPL
Website The NDISwrapper wiki, NDISwrapper Download Area

NDISwrapper, is a free software driver wrapper that enables the use of Windows XP drivers for network devices (PCI cards, USB modems, and routers), on Linux only operating systems. NDISwrapper works by implementing the Windows kernel and NDIS APIs, and dynamically linking the Windows drivers to this implementation. It therefore works only on systems based on the architectures supported by Windows, namely IA-32 or x86-64.

Native NDIS drivers for Linux are not available for some network adapters, as manufacturers supply neither drivers nor the information required to write them. NDISwrapper allows to use Windows drivers available for virtually all adapters under Linux.

Contents

Use

NDISwrapper requires at least the ".inf" and the ".sys" files invariably supplied as parts of the Windows driver. For example, if the driver is called "mydriver", with the files mydriver.inf and mydriver.sys and vendorid:productid 0000:0000, then NDISwrapper installs the driver to /etc/ndiswrapper/mydriver/. This directory contains three files:

  • 0000:0000.conf, which contains information extracted from the inf file
  • mydriver.inf (the original inf file)
  • mydriver.sys (the driver file)

Graphical frontends

Ndisgtk graphical interface

There are graphical frontends to NDISwrapper, such as Ndisgtk and NdisConfig, which allow NDISwrapper to be installed using a graphical user interface rather than console commands.

Architecture

NDISwrapper enables a Unix-like system to use Windows drivers of type NDIS and WIFI. It was useful at a time where there were no Linux WIFI drivers for common WIFI cards. It works only on X86 computers because it uses Windows drivers which are only developed for X86 at the moment. It is composed of:

  • An NDIS driver, which is a kind of overlay for Ethernet drivers.
  • A WIFI manager, to control the radio and security part of the WIFI card.
  • A USB manager and a PnP manager to make it possible to use WIFI card embedded in USB sticks. The USB manager is composed of two parts, first a tiny USBD implementation (USB stack) then a simple WDM USB driver that is itself composed of two parts: The front part will receive calls from the NDISWrapper USB stack (in fact from calls coming from the original Windows driver that were normally intended to go to the Windows USB stack) and the rear part is using Linux USB stack.
  • A minimal Ntoskrnl simulating the DDK for:
    • managing calls from the Windows driver.
    • managing IRP to the Windows driver (WDM only at the moment)
    • managing filter drivers in a simplistic way
    • loading/unloading Windows drivers
  • A wrapper converting Linux calls to Windows and the other way round, also managing results and error codes

How it works

When a Linux application calls a device which is registered on Linux as an NDISwrapper device, the NDISwrapper determines which Windows driver is targeted. It then converts the Linux query into Windows parlance, it calls the Windows driver, waits for the result and translates it into Linux parlance then sends the result back to the Linux application. It's possible from a Linux driver (NDISwrapper is a Linux driver) to call a Windows driver because they both execute in the same address space (the same as the Linux kernel). If the Windows driver is composed of layered drivers (for example one for Ethernet above one for USB) it's the upper layer driver which is called, and this upper layer will create new calls (IRP in Windows parlance) by calling the "mini ntoskrnl". So the "mini ntoskrnl" must know there are other drivers, it must have registered them in its internal database a priori by reading the Windows ".inf" files.

Similar programs

DriverLoader is a commercial tool produced by Linuxant for Linux which seems to provide the same functionality as NDISwrapper.

Independently of but roughly simultaneously with the NDISwrapper project, Bill Paul of Wind River Systems developed a similar system, known as Project Evil or The NDISulator, for FreeBSD. It has since been ported to DragonFly BSD and NetBSD.

Limitations

  • Since NDISWrapper relies on Windows drivers it only supports i386 and x86_64 architectures[1].
  • NDISwrapper does not implement NDIS 6 (Windows Vista version) yet, limiting drivers to Windows XP[2]. While it is not a major problem for the x86 architecture because of the popularity of Windows XP x86-32, many vendors choose to make 64-bit driver versions only for Windows Vista — which means that Linux systems using the x86-64 architecture are unable to use such networking devices (either NDIS5 32 bits because they are 64bits systems or NDIS6 64bit drivers because they can't use NDIS6). It's possible to use Windows XP 64 bit drivers which implement NDIS5[3], however, there are fewer available drivers for xp64 (NDIS5/64 bit) than for XP32(NDIS5/32 bit). An implementation of NDIS 6 is underway, under the name of ndis6wrapper, but it is not close to being functional.[4]

See also

References

External links


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Look at other dictionaries:

  • Ndiswrapper — NdisWrapper en l …   Wikipédia en Français

  • NdisWrapper — en lignes de commandes …   Wikipédia en Français

  • NdisWrapper — Bildschirmfoto des Kommandozeilenprogramms Basisdaten Entwickler: Pontus Fuchs, Giridhar Pemmasani u. a. Aktuelle  …   Deutsch Wikipedia

  • Ndiswrapper — Bildschirmfoto des Kommandozeilenprogramms Basisdaten Entwickler: Pontus Fuchs, Giridhar Pemmasani u. a. Aktuelle  …   Deutsch Wikipedia

  • NDISwrapper — NDISwrapper, línea de comandos Desarrollador Jan Kiszka, Giridhar Pemmasani, Pontus Fuchs …   Wikipedia Español

  • NDISwrapper — Bildschirmfoto des Kommandozeilenprogramms Basisdaten Entwickler Pontus Fuchs, Giridhar Pemmasani u. a …   Deutsch Wikipedia

  • NDISwrapper — Тип Оболочка драйверов Операционная система …   Википедия

  • Linuxant — NDISwrapper Bildschirmfoto des Kommandozeilenprogramms Basisdaten Entwickler: Pontus Fuchs, Giridhar Pemmasani u. a. Aktuelle  …   Deutsch Wikipedia

  • Ndisconfig — NDISwrapper Bildschirmfoto des Kommandozeilenprogramms Basisdaten Entwickler: Pontus Fuchs, Giridhar Pemmasani u. a. Aktuelle  …   Deutsch Wikipedia

  • Ndisgtk — NDISwrapper Bildschirmfoto des Kommandozeilenprogramms Basisdaten Entwickler: Pontus Fuchs, Giridhar Pemmasani u. a. Aktuelle  …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”