HOWTO: FreeBSD 6.2 ndisgen with Acer Aspire 5100 5102 WLMi with Broadcom Wlan chipset 4318 Rev 2
I tried to do it with the OpenSuse 10.2, but it was too complicated, and never worked, since it needs a firmware ..etc.
So I dropped OpenSuse choice.
So I went back to my lovely OS FreeBSD.
I installed FreeBSD 6.2-RC1 since 6.1-RELEASE refused to boot due to the bugs in the Aspire 5102 WLMi bios.
I honestly have had very hard time with my new laptop Acer Aspire 5102 WLMi which comes with Broadcom Wirless Lan chip model 4318 Rev 2.
I hate Broadcom policy against the FreeBSD, and Open source community as well, since they don’t make native drivers for their chips to work in FreeBSD, and *BSD OS beside the Linux community.
If they support more OSes, more sale and power for them, take Atheros as an example, it has many good words in the FreeBSD community since it supports FreeBSD, and there are drivers for it in the OS itself.
Anyway, I tried to use ndisgen to make a kernel module for my broadcom Wlan chipset 4318, and downloaded the drivers from the Acer support site but with no luck, don’t ask me why? it just makes errors, and ndisgen isn’t able to deal with it, since it has unicode stuff on it, and I wasn’t able to fix them, I’m not a coder, and I hate to code a single line.
Step 1:
pciconf -lv
And here I see:
none@pci6:2:0: class=0×028000 card=0×03121468 chip=0x431814e4 rev=0x02 hdr=0×00
vendor = ‘Broadcom Corporation‘
class = network
Step 2:
I looked for drivers to support the same chip from other vendors, like HP, and Dell, ..etc.
You have to pull this off web site yourself. Bonus points when the driver is packaged in a self-extracting archive, then you have to borrow a Windows machine to get the .sys and .inf files, but FreeBSD allows you to open them if you have some nice tools from the FreeBSD /usr/ports/archive/
So I found the right driver in Dell, Dell re-brands the Broadcom driver as a Dell driver, so I download the “http://ftp.us.dell.com/network/R94827.EXE” from their web site, extracted, and select the bcmwl5.inf and bcmwl5.sys
I put them in my own shell as /usr/home/arabian/tmp/
step 3:
Log as super user to be able to use ndisgen
$ su
Password:
#cd /home/arabian/tmp
#ndisgen bcmwl5.inf bcmwl5.sys
You’ll get ndisgen screen with some questions, just keep pressing enter till it creates the kernel module bcmwl5_sys.ko
But!
I got this error
ndiscvt: line 13: e: syntax error. ÿþ[#
Okay, don’t panic! I have seen this before.
Ndisgen works on ASCII files, but many a crafty driver has been distributing stuff in Unicode. If I look at bcmwl5.inf, I see:
# hd bcmwl5.inf | head -3 00000000 ff fe 3b 00 3b 00 0d 00 0a 00 3b 00 3b 00 20 00 |..;.;.....;.;. .| 00000010 62 00 63 00 6d 00 77 00 6c 00 35 00 2e 00 69 00 |b.c.m.w.l.5...i.| 00000020 6e 00 66 00 0d 00 0a 00 3b 00 3b 00 0d 00 0a 00 |n.f.....;.;.....|
For your edification, if a file looks like null-padded ASCII characters, then it is probably UTF-16.
So I need to convert the unicode to ASCII
So I typed
# iconv -c -f utf-16 -t ascii bcmwl5.inf > bcmwl5.inf.ascii
Let's heck it out now.
# head -3 bcmwl5.inf.ascii ;; ;; bcmwl5.inf ;;
It looks ok now![]()
Let's del the old bcmwl5.inf
#rm bcmwl5.inf
Now let's copy bcmwl5.inf.ascii as bcmwl5.inf
#cp bcmwl5.inf.ascii bcmwl5.inf
Now let's do the step 3 again
#ndisgen bcmwl5.inf bcmwl5.sys
This will generate bcmwl5_sys.ko
Step 4:
#cp bcmwl5_sys.ko /boot/modules/
#ee /etc/rc.conf
then add these line if you are using wlan network with no security.
ifconfig_ndis0="DHCP" ssid="WeArab.Net"
I'm using WeArab.Net since it's the ssid of my home wlan.
So we will make sure it will work with the next reboot.
Now, I'll also need to add some lines to load the bcm module with the next reboot beside other kernel modules for the WLAN.
# ee /boot/loader.conf
bcmwl5_sys_load="YES"
Then save and exit.
now the last step is to reboot, I rebooted and finally my wokan works.
Hey one more thing I discovered later, the mode supported in bcmwl5.inf is 802.11b and not g![]()
The fix is easy thou![]()
#ee bcmwl5.inf
Then search for IBSSGMode by using ctrl+y in the ee editor
You'll find "1" beside it, change it to "2"
Then reboot creating the kernel module, then don't forget to copy it again to /boot/modules/
That's it!![]()
12.22.06




