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.

NOTE:

NDIS wrapper toolkit V1.2.3 is now available. download. new

  • integrated with Brussels support.
  • better user experiences with OpenSolaris-0906 release.
  • It is recommended version for OpenSolaris build111+.

For ndis users have installed OpenSolaris build[105 – 110], please find ndis-1.2.3-prelim(contributed by George White:os0342). download.

NDIS wrapper toolkit V1.2.1 is now available. download. new features are as below:

  • integrated with Fastreboot support.
  • integrated with Suspend/Resume support.
This version supports OpenSolaris build[100, 104], it was contributed by George White (george at palisad dot com) (OS0342)

NDIS wrapper toolkit V1.2 can be downloaded here.

  • Enhanced to work in 802.11n mode for Broadcom new WiFi chipsets.
  • - Dell 1505 PCI Express 802.11 a/b/g/n Mini-Card product detail.
  • Need to install SUNWonbld package to compile it.

NDIS wrapper toolkit V1.1 can be downloaded here.

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

NDIS wrapper toolkit V0.1 can be downloaded here.

  • It bases on GLDv2.

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

Broadcom BCM43XX chipsets based PCI/PCIe/Cardbus adapters

    4301  BCM4303 802.11b Wireless LAN Controller
        1028 0407  TrueMobile 1180 Onboard WLAN
        1043 0120  WL-103b Wireless LAN PC Card
    4307  BCM4307 802.11b Wireless LAN Controller
    4311  BCM4311 802.11b/g WLAN
        1028 0007  Wireless 1390 WLAN Mini-Card
        1028 0008  Wireless 1390 WLAN ExpressCard
        103c 1363  BCM4311 802.11b/g Wireless LAN Controller
        103c 1364  BCM4311 802.11b/g Wireless LAN Controller
        103c 1365  BCM4311 802.11b/g Wireless LAN Controller
        103c 1374  BCM4311 802.11b/g Wireless LAN Controller
        103c 1375  BCM4311 802.11b/g Wireless LAN Controller
        103c 1376  BCM4311 802.11b/g Wireless LAN Controller
        103c 1377  BCM4311 802.11b/g Wireless LAN Controller
        103c 137f  BCM4322 802.11a/b/g/n Wireless LAN Controller
        103c 1380  BCM4322 802.11a/b/g/n Wireless LAN Controller
        14e4 4311  BCM94311MCG
    4312  BCM4312 802.11a/b/g
        1028 0007  Wireless 1490 Dual Band WLAN Mini-Card
        1028 0008  Wireless 1490 Dual Band WLAN ExpressCard
        103c 135a  Broadcom 802.11a/b/g WLAN
        103c 135f  Broadcom 802.11a/b/g WLAN
        103c 1360  Broadcom 802.11a/b/g WLAN
        103c 1361  Broadcom 802.11a/b/g WLAN
        103c 1362  Broadcom 802.11a/b/g WLAN
        103c 1370  Broadcom 802.11a/b/g WLAN
        103c 1371  Broadcom 802.11a/b/g WLAN
        103c 1372  Broadcom 802.11a/b/g WLAN
        103c 1373  Broadcom 802.11a/b/g WLAN
        103c 30b5  Presario V3242AU
        1371 103c  Broadcom 802.11 Multiband-netwerkadapter(6715s)
    4315  BCM4312 802.11b/g
        1028 000b  Wireless 1395 WLAN Mini-Card
        1028 000c  Wireless 1397 WLAN Mini-Card
        103c 137c  BCM4312 802.11b/g Wireless LAN Controller
        103c 137d  BCM4312 802.11b/g Wireless LAN Controller
    4318  BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller
        1028 0005  Wireless 1370 WLAN Mini-PCI Card
        1028 0006  Wireless 1370 WLAN PC Card
        103c 1355  Broadcom 802.11b/g WLAN
        103c 1356  Broadcom 802.11b/g WLAN
        103c 1357  Broadcom 802.11b/g WLAN
        1043 100f  WL-138G V2 802.11g WLAN PCI Card
        1043 120f  A6U notebook embedded card
        1154 0355  Buffalo WLI2-PCI-G54S High Speed Mode Wireless Adapter
        1468 0311  Aspire 3022WLMi, 5024WLMi, 5020
        1468 0312  TravelMate 2410
        14e4 0449  Gateway 7510GX
        14e4 4318  WPC54G version 3 [Wireless-G Notebook Adapter] 802.11g Wireless Lan Controller
        16ec 0119  U.S.Robotics Wireless MAXg PC Card
        1737 0042  WMP54GS version 1.1 [Wireless-G PCI Adapter]  802.11g w/SpeedBooster
        1737 0048  WPC54G-EU version 3 [Wireless-G Notebook Adapter]
    4319  BCM4311 [AirForce 54g] 802.11a/b/g PCI Express Transceiver
        1028 0005  Wireless 1470 Dual Band WLAN Mini-PCI Card
        1028 0006  Wireless 1470 Dual Band WLAN PC Card
        103c 1358  Broadcom 802.11a/b/g WLAN
        103c 1359  Broadcom 802.11a/b/g WLAN
        103c 135a  Broadcom 802.11a/b/g WLAN
    4320  BCM4306 802.11b/g Wireless LAN Controller
        1028 0001  TrueMobile 1300 WLAN Mini-PCI Card
        1028 0002  TrueMobile 1300 WLAN PC Card
        1028 0003  Wireless 1350 WLAN Mini-PCI Card
        1028 0004  Wireless 1350 WLAN PC Card
        103c 12f4  Broadcom 802.11b/g WLAN
        103c 12f8  Broadcom 802.11b/g WLAN
        103c 12fa  Broadcom 802.11b/g WLAN
        103c 12fb  Broadcom 802.11b/g WLAN
        1043 100f  WL-100G
        1057 7025  WN825G
        106b 004e  AirPort Extreme
        1154 0330  Buffalo WLI2-PCI-G54S High Speed Mode Wireless Desktop Adapter
        144f 7050  eMachines M6805 802.11g Built-in Wireless
        144f 7051  Sonnet Aria Extreme PCI
        14e4 4320  Linksys WMP54G PCI
        1737 4320  WPC54G
        1799 7000  F5D7000uk 54G Wireless Network Card
        1799 7001  Belkin F5D7001 High-Speed Mode Wireless G Network Card
        1799 7010  Belkin F5D7010 54g Wireless Network card
        1799 7011  F5D7011 54g+ Wireless Network card
        185f 1220  TravelMate 290E WLAN Mini-PCI Card
    4324  BCM4309 802.11a/b/g
        1028 0001  Truemobile 1400
        1028 0002  TrueMobile 1400 Dual Band WLAN PC Card
        1028 0003  Truemobile 1450 MiniPCI
        1028 0004  Wireless 1450 Dual Band WLAN PC Card
        103c 12f9  Broadcom 802.11a/b/g WLAN
        103c 12fc  Broadcom 802.11a/b/g WLAN
    4325  BCM43xG 802.11b/g
        1414 0003  Wireless Notebook Adapter MN-720
        1414 0004  Wireless PCI Adapter MN-730
    4328  BCM4328 802.11a/b/g/n
        1028 0009  Wireless 1500 Draft 802.11n WLAN Mini-Card
        1028 000a  Wireless 1500 Draft 802.11n WLAN Mini-card
        103c 1366  BCM4321 802.11a/b/g/n Wireless LAN Controller
        103c 1367  BCM4321 802.11a/b/g/n Wireless LAN Controller
        103c 1368  BCM4321 802.11a/b/g/n Wireless LAN Controller
        103c 1369  BCM4321 802.11a/b/g/n Wireless LAN Controller
        14e4 4328  BCM4328 802.11a/b/g/n
    432b  BCM4322 802.11a/b/g/n Wireless LAN Controller
        1028 000d  Wireless 1510 Wireless-N WLAN Mini-Card

Windows@ Driver and Device Id reported work

(14E4,432b)

(14E4,4328)

(14E4,4311)

(14E4,4315)

  • Above devices work under solaris 32bit kernel with HP Official Release Windows@ driver Downloadnew

(14E4,4320 rev2)

(14E4,4324)

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

(14E4,4320 rev2)

  • 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,4320 rev3)

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

(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.

Some Blogs