This post has already been read 4394 times!

Drivers :
Windows drivers necessary for Netgear WNA3100

Based on:

1. Connect the WNA3100 and:


It should list:

Bus 001 Device 003: ID 0846:9020 NetGear, Inc. WNA3100(v1) Wireless-N 300 [Broadcom BCM43231]

2. Get the latest ndiswrapper source:
At moment of writing: v1.58

3. Unpack in /usr/src or any other directory

4. Make sure to uninstall everyting you have on ndiswrapper:

 apt-get purge ndiswrapper-source ndiswrapper-dkms dniswrapper-utils-1.9 ndiswrapper-common ndisgtk mintwifi
(yes, even ndiskgtk and mintwifi because they have dependencies with ndiswrapper 1.56)

5. This step is not entirely necessary although it made my connection a bit more stable:

gksu gedit /usr/src/ndiswrapper-1.57/driver/usb.c

Edit USBD_InterfaceIsDeviceHighSpeed:
wstdcall BOOLEAN USBD_InterfaceIsDeviceHighSpeed(void *context)
/*struct wrap_device *wd = context;USBTRACE("wd: %p", wd);
if (wd->usb.udev->speed == USB_SPEED_HIGH)
USBEXIT(return FALSE);*/


Make sure the WNA3100 is NOT connected.

6. cd /usr/src/ndiswrapper-1.58

make uninstall (just to be sure)
make install
ndiswrapper -v

The displayed version should show v1.58

7. Copy the drivers (attached to this tutorial) to /drivers/wna3100 (or any other directory)

8. Connect the WNA3100


ndiswrapper -i /drivers/wna3100/bcmwlhigh5.inf
ndiswrapper -l

If "device (0846:9020) present" is not mentioned:

ndiswrapper -a 0846:9020 bcmwlhigh5

10. Try modprobe without actually installing:

modprobe -iv ndiswrapper
modprobe ndiswrapper

If modprobe hangs:

Look for messages with the tell-tale: RIP
[ 1046.538893] RIP [<ffffffffa116f0f2>] USBD_InterfaceGetUSBDIVersion+0x2d/0x2d [ndiswrapper]
In this case the USBD_InterfaceGetUSBDIVersion needs to be changed in usb.c

When changes are made:

modprobe -r ndiswrapper

Start from 5.

11. Check if your wlan is up:


12. If that all worked, make it more permanent:

Persistent Module Loading

Kernel modules are usually loaded directly by the facility that requires them, which is given correct settings in the /etc/modprobe.conf file. However, it is sometimes necessary to explicitly force the loading of a module at boot time.

Red Hat Enterprise Linux checks for the existence of the /etc/rc.modules file at boot time, which contains various commands to load modules. The rc.modules should be used, and not rc.local because rc.modules is executed earlier in the boot process.

For example, the following commands configure loading of the foo module at boot time (as root):

# echo modprobe -iv ndiswrapper >> /etc/rc.modules 
# chmod +x /etc/rc.modules

Tip: This approach is not necessary for network and SCSI interfaces because they have their own specific mechanisms.

Leave a Reply

Post Navigation