I went thru something similar quite a long a go. I copied the instructions that helped me thru. I don't recall the site where I copied it from, but here I post it, hopefully it will help:
You need a recent kernel at, least 2.6.6 or 2.4.26, with kernel
headers. Make sure that /lib/modules/VERSION/build is a link to the
kernel source, where VERSION is the version of the kernel you are
running; this should be setup automatically by distribution package.
If this path is not valid, kernel modules can't be compiled. Also make
sure gcc and associated packages (e.g., libc6-dev on Debian based
distributions) are installed so C programs can be compiled. For help
with these steps, refer to your distribution documents.
Some vendors ship ndiswrapper in their distributions. It may be easier
to locate and install ndiswrapper package(s) from your distribution.
However, ndiswrapper available for your distribution may be quite old
and may not work. In that case, proceed with installation below.
It is always a good idea to uninstall the current version and
reinstall the new version. This way, if there are changes in formats
of configuration files, etc., the new version will work without
Download the latest version of the ndiswrapper sources from
and extract it with
tar -zxvf ndiswrapper-version.tar.gz
This will create the ndiswrapper-version directory. Change to that
If you are having problems with the release version, or you want to
try the bleeding-edge version, you can either get the latest SVN
svn co https://ndiswrapper.svn.sourceforge....nk/ndiswrapper
or if you already have SVN code, with
Note that the snapshot tar balls and SVN versions may or may not work
- they may not even compile. If you have problems with these, please
don't complain, except to provide feedback/debug trace to help fix
bugs. However, sometimes, these may work better than release versions,
as bugs are fixed, features are added, etc.
Compile and install
Go to the source-directory and run make distclean and make. As root,
run make install. This should compile and install both the kernel
module and the userspace utilities. If you don't need USB support in
ndiswrapper, with recent versions, you can compile with make
DISABLE_USB=1 and install with make DISABLE_USB=1 install.
NOTE: Source-directory is for the ndiswrapper directory that you just
created. (NOT the /usr/src directory)
Install Windows driver
Important: Not all Windows drivers are tested / stable. If the Windows
driver that you use is problematic, try alternate Windows drivers that
others have tested, especially those in List. Always, try Windows XP
drivers and if Windows XP drivers are not available, try Windows
2000/2003 drivers. Windows Vista drivers are not supported (yet) -
using Windows Vista driver will result in many 'unknown symbol' error
messages when loading ndiswrapper.
To identify the driver that you need from List, first identify the
card you have with lspci and note the first column such as
0000:00:0c.0 and then find out the PCI ID of the card by running lspci
-n and locating the entry corresponding to the first column of lspci
output. The PCI ID is third column or fourth in some distributions and
of the form 104c:8400. Now you need to get the Windows driver for this
chipset. In the List, find out an entry for the same PCI ID, and
download the driver corresponding to it. Unpack the Windows driver
with unzip/cabextract/unshield tools, and find the INF file (.INF or
.inf extension) and the SYS file (.SYS or .sys extension). If there
are multiple INF/SYS files, you may look in the List if there are any
hints about which of them should be used. Make sure the INF file, SYS
file and any BIN files (For example, TI drivers use BIN firmware)
files are all in one directory.
If you already have your device working in Windows you can try that
driver. Open the device manager and find the name of the .sys driver
file listed for the device. You need the .sys file and the .inf file.
To find the .inf file search in the \Windows\inf\ directory for a file
containing the name of the .sys file. You will need to do an advanced
search to search for text within the files. Now use the 'ndiswrapper'
tool to install the driver with
ndiswrapper -i filename.inf
This copies all necessary files to /etc/ndiswrapper and creates the
config files for your card. After installing you can run ndiswrapper
-l to see the status of your installed drivers. If you have installed
the correct driver you should see something like this
bcmwl5: driver installed
device (14E4:4320) present
Where 'present' means that you have a card that can be used with the
driver installed. In this case, broadcom driver bcmwl5 is used. If you
see 'cannot locate lspci. Unable to see if hardware is present', you
need to install the pciutils package.
If you get something like
bcmwl5: driver installed
device (14E4:4320) present (alternate driver: bcm43xx)
then you / kernel may use bcm43xx module for that device. If that
module is loaded, then ndiswrapper wouldn't be able to use that
device; see Troubleshooting.
Errors on Installation
If you get an error with ndiswrapper -i filename.inf along the lines
of "couldn't copy filename.inf at line xxx", then 'filename.inf' most
probably does not exist. Check your spelling carefully and remember to
use upper / lower case where appropriate. You will have to correct
this failed installation with ndiswrapper -r filename (note: not
filename.inf) before trying again.
Extracting drivers from EXEs or CAB files
If there's no windows driver listed for your card, or your card isn't
there at all, you might as well try to locate a driver, and add it if
you succeed. The drivers you find may be packaged as an executable
file. These notes were extracted from the List of cards, there may be
more there. Some of the EXE files are just zip files, so you can run
unzip and obtain driver files. Some EXE files are CAB files, so run
cabextract and/or unshield on CAB file, typically named data2.cab.
Before you load the module, DO NOT FORGET to type depmod -a. If there
is no error, continue.
To load the module type modprobe ndiswrapper. If you get no error, the
driver should now be loaded. You can verify this by checking the
system log produced by dmesg. If the driver is loaded successfully,
you should see a message in the system log ndiswrapper version version
loaded Make sure the version version here matches the version of
ndiswrapper package that you downloaded and installed. If you get a
different version, you have an old version of package, which you
should uninstall, and then go back to step 1.
If after modprob'ing, the system is locked up (no response to
keyboard, etc.), it indicates that kernel has crashed. See
distributions and the FAQ for hints on what may cause problems for
If you have successfully installed the windows drivers earlier with
ndiswrapper -i "INFfile", the ndiswrapper module will load them all.
You should then see the following messages in system log ndiswrapper:
driver "driver1" loaded for each of the drivers. If you don't see
these messages, it usually means that there are no usable drivers
installed in /etc/ndiswrapper directory. Check if the /etc/ndiswrapper
directory has one sub-directory for each driver and if in each
driver's directory there are inf, sys and conf files. Otherwise, you
may need to repeat step 2.
If this does not bring up the lights on the card, try ejecting it and
If the system has a card that works with one of the loaded drivers,
you should see the following message in the system log
wlan0: ndiswrapper ethernet device xx:xx:xx:xx:xx:xx
Use iwconfig to configure wireless network interface. First, see if
the interface is available, with iwconfig. This tool is not likely to
be present on your system: it is part of the package
Wireless Tools for Linux, which you should install.
This will print the wireless interface e.g., wlan0. In the examples
below, wlan0 is used. Replace wlan0 with the interface reported by
iwconfig above. The wireless configuration to be used should match
what your access point uses. First, find out if you can see your
access point (AP) with iwlist wlan0 scan Note: You may have to set the
network name before the scan can find your Access Point. If the scan
does not find your AP, try issuing the command iwconfig wlan0 essid
ESSID before using the command iwlist wlan0 scan. If this lists your
AP, you can continue. Otherwise, you may have one of two problems:
Your AP doesn't broadcast SSID. See the FAQ for more information, or
if the radio of the card is off again, see the FAQ for details.
If you see the AP in the scan above, set the operating mode of the
interface according to your setup. In most cases, it is Managed
iwconfig wlan0 mode Managed If you use encryption WEP, set the key:
iwconfig wlan0 key restricted XXXXXXXX You can use 10 hex digits for
40-bit encryption or 26 hex digits for 128-bit encryption. You may
need to use open security mode instead of restricted depending on the
setup of your AP. If you want to write the key in ASCII use s: e.g.
iwconfig wlan0 key restricted s
Set the network name iwconfig wlan0 essid ESSID Replace ESSID with the
network name used by your AP.
At this point, check to make sure that the ESSID is set in the output
of iwconfig wlan0. If you see the ESSID as you set, you can proceed to
the next step. If you see ESSID: off/any, then your card is not
associated to the AP. Check if WEP encryption is set exactly as used
by the AP, and that the AP broadcasts ESSID. See the FAQ for more
details. Until ESSID is set in output of iwconfig wlan0, you may not
use wlan0 as a network interface.
Now, setup the network parameters for the interface wlan0. This varies
from distribution to distribution. Refer to your distribution's
documents on how to do this. Once this is done, you can use network
tools to bring up the network e.g., ifconfig wlan0 up or dhclient
wlan0 or dhcpcd wlan0 etc.
Remember, if you have a firewall, let it know that wlan0 is an
external interface, and allow it to pass traffic. Otherwise you won't
even be able to ping your AP.
Once everything works fine you can write the correct modprobe settings
to load ndiswrapper automatically when the wlan0 interface is used, by
running ndiswrapper -m Note that this doesn't automatically load
ndiswrapper module at boot time. If you want the module to be loaded
automatically at boot time, you should configure your module setup,
which depends on the distribution. Most distributions will load all
modules listed in /etc/modules at boot time. Mandrake 10.x uses
/etc/modprobe.preload. For them, you can add a line ndiswrapper in
/etc/modules. For Fedora Core5, add a line alias wlan0 ndiswrapper in
If this does not work, instead add a line modprobe ndiswrapper in
If this does not work either, you can find a couple of other possible
solutions at http://www.linuxquestions.org/questi...d.php?t=431575