If you are trying to get a device working with ndiswrapper, please help ndiswrapper project wiki by contributing your findings. See HowToContribute
Troubleshooting HowTo
If things are not working as expected, follow instructions below.
- Make sure you have latest stable version installed; see downloads for latest versions available. Run ndiswrapper -v to check that you indeed have latest version. Follow instructions in Installation to install. You may want to Uninstall and install again if you think there is a problem with your current installation or you have older version.
- Make sure you have compatible module and utils: With version 1.45 and later, ndiswrapper -v shows the version of utils installed and the version of utils required by ndiswrapper module. If these two are not same, Windows drivers can’t be loaded.
- FAQ has answers to many common questions.
- Make sure you have the correct drivers. For example, if you are on a 64 bit machine, if the folder containing the files also as 32 bit drivers then ndiswrapper will install the 32 bit drivers by default.
- Run ndiswrapper -l to make sure that Windows drivers are installed properly. You should get similar to
bcmwl5 : driver installed device (14E4:4320) present
If you get “alternate driver” information, such as,
bcmwl5 : driver installed device (14E4:4320) present (alternate driver: bcm43xx)
then the kernel may load bcm43xx instead of ndiswrapper to initialize the device. If you want to use ndiswrapper, you must unload the alternate driver (in this case bcm43xx) e.g., ‘rmmod bcm43xx. * If you get “invalid driver” for any driver in the output of ndiswrapper -l, then remove that driver (with ndiswrapper -r) and reinstall the Windows driver as per instructions in Installation. * Unload and reload ndiswrapper with ‘rmmod ndiswrapper; modprobe ndiswrapper. If there are errors, there could be many reasons for this. If you get “unresolved symbols”, you may be using old kernel; upgrade the kernel and recompile ndiswrapper and reinstall. If you get ‘loadndisdriver’ failed, then you may have older version of ndiswrapper module in kernel modules directory. See Uninstall to remove all ndiswrapper files and reinistall again. See also FAQ for more details on common issues with loading ndiswrapper module.
- Now check system messages with ‘dmesg | grep ndiswrapper’. At the end, you should see messages from ndiswrapper. If everything works fine, you should see something like
ndiswrapper version 0.11 loaded (preempt=no,smp=no) ACPI: PCI interrupt 0000:00:0c.0[A] -> GSI 10 (level, low) -> IRQ 10 ndiswrapper: using irq 10 wlan0: ndiswrapper ethernet device 00:c0:49:d7:b6:e4 using driver netwg311.sys ndiswrapper device wlan0 supports WPA with TKIP cipher ndiswrapper: driver netwg311.sys (NETGEAR, Inc.,04/04/2004,6.0.2.23) added
If, instead, the module loading never finishes or immediately you see “Disabling IRQ”, then you have issues with interrupts in the kernel (nothing ndiswrapper can do about it). You may try booting with “acpi=noirq” if ACPI is being used. Alternately, try a different kernel or disable ACPI.
- If you don’t see ‘wlan0: ndiswrapper ethernet device xx:xx:...’ message, then either card is not present or the driver is not for your card or alternate driver is using the card. As mentioned above, run ndiswrapper -l and make sure you get “device present” and any alternate drivers reported are not loaded in the kernel.
- If the module is loaded and you see that ndiswrapper found the card, then check if wlan0 interface is present: ‘iwconfig’ should list wlan0 interface. Depending on other drivers and cards, this may be wlan1 or wlan2 also. Now, if you are using Managed (also known as Infrastructure) mode, set the mode with ‘iwconfig wlan0 mode Managed’; otherwise, set the mode to Ad-Hoc with ‘iwconfig wlan0 mode Ad-Hoc’ (note that ndiswrapper doesn’t support other modes of operation, such as Master, Repeater etc.). Now see if there are other stations (routers, other ad-hoc nodes) with ‘iwlist wlan0 scan’. If you don’t see any nodes, read FAQ for common problems for this.
- If scan shows the node that you want to connect to, then you need to associate with it. First, set the essid of the node with ‘iwconfig wlan0 essid ESSID’, where ESSID is the essid of the node. Note that you shouldn’t give quotes around ESSID. If any encryption is not being used, this should associate. If WEP (encryption) is being used, first set the encryption key and encryption mode with ‘iwconfig wlan0 key restricted 123456789A’ where encryption mode is ‘restricted’ and key is ‘123456789A’. If the encryption setting is correct, the card should now be associated with the node. Check output of ‘iwconfig wlan0’ to see that it is indeed associated (ESSID should be the ESSID you set earlier and Access Point should be like the ethernet address of the card: hexadecimal integers, and not all of them should be 00). For example:
wlan0 IEEE 802.11g ESSID:"ESSID" Mode:Managed Frequency:2.412 GHz Access Point: 00:09:5B:9F:8F:00 Bit Rate:11 Mb/s Tx-Power:10 dBm Sensitivity=0/3 RTS thr:4096 B Fragment thr:4096 B Encryption key:1234-5678-9A Security mode:restricted Power Management:off Link Quality:100/100 Signal level:-40 dBm Noise level:-256 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
If ESSID shows “off/any”, then the card is not associated to the node. If scan (see above) shows the node and ESSID is not set, then most likely encryption is not correctly. Make sure both mode and key are correct. Many nodes are set to use open encryption mode, so you should set the mode as “iwconfig wlan0 key open 123456789A” in that case.
- If the card is not associated with the node even after the encryption settings match, it might be a case for an unsupported/weakly supported/buggy driver ( ala Belkin F5D6020 PCMCIA card). In such cases look at the List page for workarounds/solutions before giving up on your hardware. If your wireless network works on windows without the AP (Access Point) mode, then it should work in linux too.
- If the card is associated, then wlan0 interface can be used as any other network interface, so you should configure network parameters using dhclient/pump/dhcpcd/ifconfig etc. This depends on your setup and if you need help, look in distribution documentation or forums for the distribution.
- If you can’t find the 4KSTACK option in your kernel config. In newer kernel versions the option is hidden in the kernel hacking section(Kernel Hacking/Kernel debugging/Use 4Kb for kernel stacks instead of 8Kb).
- If you still can’t resolve the problem, simplify your setup. For example, don’t use distribution specific tools such as ‘ifup’; instead, use ‘iwconfig’ to configure wireless parameters. If you can associate this way, then probably your distribution configuration is not correct. If even that doesn’t work, disable encryption on the AP and reload the module and set essid.
When alternate (linux kernel) drivers are installed and if you would rather disable that and use ndiswrapper, you can do so by blacklisting the module. For example, if bcm43xx is the alternate driver, to disable it, add blacklist bcm43xx to module configuration file (typically /etc/modprobe.conf).