[oi-dev] Emulation of NDIS wireless drivers for Windows

Jim Klimov jimklimov at cos.ru
Wed Jun 19 09:59:41 UTC 2013

On 2013-06-19 10:49, Jean-Pierre wrote:
> The emulator is a driver which executes in kernel space.
> It does not imply any kernel changes, just adding a kernel module
> by installing two binary files and associating to the wifi device.
> One of these files is generic (a kind of shared object), the other
> has to be built from a binary driver for Windows (interface NDIS5).
>> If you do need a modified kernel, will you be upstreaming your work to
>> Illumos? I'd like to help if I can.
> What do you mean by "upstreaming to Illumos" ? My own contribution
> for adapting the Windows driver is released as GPL, and the emulator
> proper which I had to adapt was CDDL.

I might add that the NDIS driver is likely to be never redistributable
in binary form, because the Windows driver authors don't allow that;
the end-users are free to get the NDIS emulator code and compile in
a driver according to instructions, however, to get their own binary.

The kernel itself does not need any changes, so there's likely
nothing to upstream nor provide with the distros (if only as part
of OS source code with no resulting binaries?)

Also, the emulator is developed to implement certain Windows API
routines as used by particular builds of binary drivers. That is,
it is not "a given" that any driver version, older or newer than
those tested during development, will work out of the box. Mostly,
mismatching drivers will fail to load and attach and write out the
missing functions in the dmesg logs. It is however possible that
mismatching drivers which formally comply to the linking requirements
but misbehave in a different manner would cause a kernel panic (for
me that was during driver loading or enablement of the interface).

Also, these drivers are not illumos-architected WiFi drivers; the
security (WEP/WPA) support for example is part of the Windows API
implementation and not really aligned with the OS. This version in
particular does not support WPA, and Jean-Pierre did not need that,
so it is up to some other developer to add the support if needed.

Things that do work include wificonfig along with its OS-supported
profiles, static and dynamic config with ifconfig and DHCP, as well
as IPMP over wifi and wired interfaces (as I did for my laptop).

Finally, I'll try to revise Jean-Pierre's final (currently posted)
distribution to see if it matches my local build tree - possibly,
I had some further enhancements to makefiles and/or scripts in order
to simplify the build and management of the bcmndis driver.

And maybe a clearer documentation on the building with my Makefile
additions is due from me, if nothing was added to the docs by JPA.

I am just not sure how long it will really take me to get to this...
//Jim Klimov

More information about the oi-dev mailing list