OpenSolaris

You are not signed in. Sign in or register.

Solaris NDIS Wrapper Toolkit

The Solaris NDIS Wrapper Toolkit was designed to allow native binary Windows® drivers to be used in Solaris. NDIS stands for Network Driver Interface Standard, and refers to the set of APIs that are commonly used by the Windows® network drivers. With this toolkit, Solaris network drivers can only be built from Windows® network drivers that were built for the same architecture. So a 32-bit Windows® driver cannot be used to build a 64-bit Solaris driver – you'll need to obtain a native 64-bit Windows® driver for that.

This toolkit is a derivative work from the Project Evil on FreeBSD, and is provided under the same BSD license terms.

Where to get NDIS drivers?

Network cards usually come with CDs that contain Windows® drivers. If you don't have a CD with drivers for your card, then you can try finding drivers on your computer or network card vendor's web site. The NDIS wrapper was designed to emulate NDIS APIs for different releases of Windows®, but it works best with drivers designed for NDIS 5.0 or later. Even though drivers for Windows 2000 should work, for best results drivers designed for Windows XP of Windows Server 2003 should be used instead.

What is needed?

You'll need to have two driver files to build a Solaris driver:

  • .INF file (ASCII text file). It contains information that tells the Windows® installer what devices this driver supports and what registry keys should be created to control driver's configuration. Note that sometimes the .INF file is supplied in a UNICODE format, so it must be converted to ASCII before it can be used by the Solaris NDIS Wrapper Toolkit. This can be done by running "iconv -f utf-16 -t ascii driver.inf > ndis.inf".
  • .SYS file (binary file). This file contains the actual driver executable code in Windows® Portable Executable (PE) format.

You'll need to have GCC compiler v3.4.3 or newer to generate both 32-bit and 64-bit Solaris/x86 binaries. Solaris 10 comes with just the right version installed in /usr/sfw/bin, so that's what provided Makefiles are using by default.

You'll also need to have flex installed somewhere in your $PATH to build the ndiscvt binaries. There is one in /usr/sfw/bin.

NDIS wrapper toolkit version-0.1 can be downloaded here.

  • It bases on GLDv2.

NDIS wrapper toolkit version-1.1 can be downloaded here. new

  • It bases on GLDv3. Support OpenSolaris build54 and higher.
  • Support IBSS mode at 32bit kernel.
  • Support more bcm43xx chipsets than ndis-0.1.
  • Support both 64bit and 32bit kernel.

How to build a driver?

Here's an example of how to build a Solaris network driver for the Broadcom wireless card assuming you've got all necessary components (bcm32.inf, bcm32.sys, bcm64.inf, bcm64.sys). You can also refer to Carlton's ndiswrapper setup experience.

# wget http://www.opensolaris.org/os/community/laptop/downloads/ndis-0.1.tar.gz
Or
# wget http://www.opensolaris.org/os/community/laptop/downloads/ndis-1.1.tar.gz
# gzip -dc ndis-0.1.tar.gz | tar xvf -
# cd ndis-0.1/i386
(copy bcm32.inf and bcm32.sys here, then rename to ndis.inf and ndis.sys)
# make ndiscvt
# ./ndiscvt -i ndis.inf -s ndis.sys -o ndis.h
# make ndis
# cp bcmndis /kernel/drv/bcmndis
# make ndisapi
# cp ndisapi /kernel/misc

To build a 64-bit version of the driver, you'll also need to do the following steps under 64bit kernel:

# cd ../amd64
# make ndiscvt
(copy bcm64.inf and bcm64.inf here, then rename to ndis.inf and ndis.sys)
# ./ndiscvt -i ndis.inf -s ndis.sys -o ndis.h
# make ndis
# cp bcmndis /kernel/drv/amd64/bcmndis
# make ndisapi
# cp ndisapi /kernel/misc/amd64

Now you can try loading ndisapi module and attaching the driver to your network card, for example:

# add_drv -i '"pci14e4,4320"' bcmndis

PCI ID in the example above consists of the Vendor ID (14e4) and the Device ID (4320) used by the Broadcom's BCM4306 chipset. To find out the right PCI ID for your network card, try using "/usr/X11/bin/scanpci -v", or visit this site with thousands of well known PCI IDs.

After that, you should be able to plumb bcmndis0 interface using ifconfig. The driver can also be configured with wificonfig or inetmenu

Laptops with the following Broadcom chipset-based network cards have been tested:

Laptop/DesktopBroadcom ChipsetType
Dell Latitude D80014E4,4320mini-PCI
Dell Latitude D80014E4,4324mini-PCI
Dell Inspiron m51014E4,4320mini-PCI
Fujitsu N301014E4,4320mini-PCI
Acer Ferrari 3200/340014E4,4320mini-PCI
Pioneer 835514E4,4320mini-PCI
Asus WL-100G14E4,4324Cardbus
Asus WL-103B14E4,4303Cardbus
Buffalo WLI-CB-G54A14E4,4324Cardbus
Dell Precision 38014E4,4311mini-PCIe
Dell Precision 38014E4,4318mini-PCI
Dell Precision 38014E4,4319mini-PCI
Dell Precision 38014E4,4301mini-PCI
Dell Precision 38014E4,4320mini-PCI
Dell Precision 38014E4,4324mini-PCI

Windows@ Driver and Device Id reported work with ndis-1.1

(14E4,4320)

(14E4,4324)

  • Above devices work under solaris 32bit kernel with Dell Official Release Windows@ driver Download.

(14E4,4320)

  • Above device work under solaris 32bit kernel with Acer Official Release Windows@ driver (ftp://ftp.support.acer-euro.com/notebook/ferrari_3200/driver/winxp/Broadcom 802.11g Wireless Lan driver 3.30.15.0.zip).

(14E4,4311)

(14E4,4312)

(14E4,4318)

(14E4,4319)

  • Above devices work under solaris 32bit kernel with HP Official Release Windows@ driver Download.
  • For HP dv6000 and dv9500z laptop, higher version XP driver is required to make bcm4311 work under 32bit OpenSolaris kernel Download

(14E4,4301)

  • Above device work under solaris 32bit kernel with Linksys Official Release Windows@ driver Download.(Select firmware version V2.7).

(14E4,4301)

(14E4,4303)

(14E4,4307)

(14E4,4320)

(14E4,4325)

  • Above devices work under solaris 64bit kernel with "64-bit Broadcom 54g_Drivers", netbc564.inf Version 10/01/2002,3.70.17.6, provided by Microsoft.