I’ve spent a ridonculous amount of time trying to get my Lenovo S10 netbook’s Broadcom wireless chipset to work in OpenSolaris 2009.06 (build 111, actually.)
I wanted to record here the recipe I used to make this work, since working directions are spread out all over teh Interwebs.
First off, if you’re using the LiveCD or LiveUSB images from genunix.org to install your OpenSolaris system, you’ll need to find a wired connection and jack in to install the following filesets:
- SUNWgcc
- SUNWhea
- SUNWflexlex
- SUNWgm4
This is accomplished by doing something like:
$ pfexec pkg install SUNWgcc SUNWhea SUNWflexlex SUNWgm4
Next, download the current ndis code. The most current as of this blog post is ndis-1.2.3, which you can download from http://www.opensolaris.org/os/community/laptop/wireless/ndis/ndis-1.2.3-prelim.tar.gz
Unpack the tarball:
$ tar zxvf ndis-1.2.3-prelim.tar.gz
Figure out what kind of Windows driver you need to download. Instructions for doing this are pretty well covered on the ndis project page at OpenSolaris.org.
Download and unpack your Windows driver. In OpenSolaris, you can simply right-click on the .exe and choose “uncompress” from the context menu in the file manager. You’ll want to find and copy the appropriate Windows XP .sys and .inf drivers into ~/ndis-1.2.3/i386.
Convert the .inf file from Windows UTF-16 text into good old ASCII then copy of the driver.sys file to ndis.sys.
$ iconv -f utf-16 -t ascii bcmwl5.inf > ndis.inf $ cp bcmwl5.sys ndis.sys
Next (and this was an endless source of frustration for me) make sure that Sun’s make program (/usr/ccs/bin/make) not GNU make (typically /usr/bin/make) processes the ndis Makefile by setting your shell’s PATH variable correctly:
$ export PATH=/usr/ccs/bin:$PATH
If you do not do this step, you will get strange error messages complaining about not finding header files like cdef.h and bunch of other heartache.
Finally, you’ll want to start building the ndis wrapper.
$ cd ~/ndis-1.2.3/i386 $ make ndiscvt $ make ndis.h $ make ndis $ make ndisapi $ pfexec cp bcmndis /kernel/drv/bcmndis $ pfexec cp ndisapi /kernel/misc
Now we’re ready to load the ndis wrapped drivers into the kernel. Important: The PCI id information below 14e4,4315 is for my particular hardware. You will have to put in your own PCI id information when you want to insert the driver.
$ pfexec add_drv -i '"14e4,4315"' bcmndis $ pfexec ifconfig bcmndis0 plumb
The following things are broken in ndis-1.2.3 (patches welcome…
- 64 bit kernel support (you have to boot into 32 bit kernel to use ndis)
- WPA2 (WPA may or may not work – supplying my WPA2 password to nwam causes kernel panics on my netbook)
The good news is that nwam should pick up your new interface and help you get on to your wifi network and remember all of the relevant settings for that interface.
#1 by riko - May 25th, 2009 at 02:24
nice documentation. I wonder if the audio is working, speaker, internal microphone and jack microphone of of the box?