ndiswrapper
is inherently flawed, and will always be incompatible with the vast majority of WiFi drivers out there. Internally, it uses a form of emulation similar to wine
does for general userspace applications. It is an imperfect science because of the varying semantics and function call usage of NDIS device drivers, and because ndiswrapper
historically has only implemented support for function calls that are absolutely required for drivers that were targeted for support, i.e. the bare minimum. So a lot of function calls are still not implemented, and may not be implementable due to the design of the Linux kernel networking stack.
You're likely not doing anything "wrong", except that I think you need to load ndiswrapper
kernel module first, then run ndiswrapper -l
. But if you aren't getting the interface, then it's just not working. This is pretty much the norm for ndiswrapper
.
Like wine
, individual driver versions for individual wireless cards have to be specifically "targeted", and development teams (volunteer or commercial) have to analyze the driver's NDIS calls and determine how to modify ndiswrapper
to support said driver. This is a standard development methodology for emulation layers, since implementing an entire emulation layer is very labor-intensive and will come chock-full of bugs out of the box anyway, due to semantic mismatches, layering mismatches, and so on.
You should search harder for the existence of an open source, native driver for your chipset. Failing that, you are probably out of luck. ndiswrapper
is not a solution; it's a temporary placeholder to give a small subset of users with unusual chipsets basic wireless functionality until an open source driver can be written. Don't rely on it; don't expect it to work; insist on a native driver or just flat-out replace your hardware with something that is supported out of the box. Sorry.