Hangdog42, wish I would've saw your site before! Would've saved me some time!
I have an Inspiron 1000 with a Dell 1350 (Broadcomm 4306) and this is how I got it working:
1. I compiled a 2.6.29 kernel from scratch (the latest stable as of now)
2. made sure to enable the 802.11 stack stuff (modules) including the broadcomm module (don't remember the exact locations in the ui menu, but looking at my config file, seems like these are the relevant options):
Code:
CONFIG_IEEE80211=m
CONFIG_IEEE80211_DEBUG=y
CONFIG_IEEE80211_CRYPT_WEP=m
CONFIG_IEEE80211_CRYPT_CCMP=m
CONFIG_IEEE80211_CRYPT_TKIP=m
CONFIG_IEEE80211_SOFTMAC=m
CONFIG_IEEE80211_SOFTMAC_DEBUG=y
CONFIG_WIRELESS_EXT=y
CONFIG_BCM43XX=m
CONFIG_BCM43XX_DEBUG=y
CONFIG_BCM43XX_DMA=y
CONFIG_BCM43XX_PIO=y
CONFIG_BCM43XX_DMA_AND_PIO_MODE=y
# CONFIG_BCM43XX_DMA_MODE is not set
# CONFIG_BCM43XX_PIO_MODE is not set
# CONFIG_ZD1211RW is not set
CONFIG_NET_WIRELESS=y
I would assume you already have the right options in order to make pcmcia work. I don't know what every single option in the kernel does, but looking at the help for each option and some common sense should be fine (pci, hotplug, pcmcia stuff).
So after I got my kernel and bcm43xx module (and everything not-related to wireless works), you should be able to do a
and this is what I see:
Code:
# lsmod|grep bcm
bcm43xx 416416 0
firmware_class 7680 2 pcmcia,bcm43xx
ieee80211softmac 31232 1 bcm43xx
ieee80211 44008 2 bcm43xx,ieee80211softmac
Actually, once I put the card in the pcmcia slot, the bcm43xx and the other modules are automatically installed into the kernel. But if you see it listed under an lsmod command, so far so good.
3. So that's the kernel, now you have to do broadcomm-specific stuff. Like Hangdog42 mentioned, you need fwcutter and a driver file. I got fwcutter from:
http://bcm43xx.berlios.de/. do a configure && make. I go the driver file from Hangdog42's
site (wl_apsta.o). Now run ./bcm43xx_fwcutter wl_apsta.o assuming you have wl_apsta.o in the same dir as the fwcutter you just built. An ls now looks like:
Code:
bcm43xx-fwcutter bcm43xx_initval05.fw bcm43xx_microcode11.fw COPYING md5.c
bcm43xx-fwcutter.1 bcm43xx_initval06.fw bcm43xx_microcode2.fw fwcutter.c md5.h
bcm43xx_initval01.fw bcm43xx_initval07.fw bcm43xx_microcode4.fw fwcutter.h md5.o
bcm43xx_initval02.fw bcm43xx_initval08.fw bcm43xx_microcode5.fw fwcutter_list.h README
bcm43xx_initval03.fw bcm43xx_initval09.fw bcm43xx_pcm4.fw fwcutter.o
bcm43xx_initval04.fw bcm43xx_initval10.fw bcm43xx_pcm5.fw Makefile
...as you can see all the .fw files were created.
4. Then, make sure you're root, and do make installfw, which really just puts all those .fw files in /lib/firmware
5. I put bcm43xx inside of /etc/modules too so that it comes up on boot, but I've found that if the card is inserted in the slot, the module gets loaded automatically.
That should be all you have to as far as drivers and modules are concerned. Then the rest is all network configuration.
My network is just set up like this:
1. wireless router(ip of 192.168.1.1) with WEP enabled
2. laptop with dell 1350 wireless card
3. pc connected to router with wire
I use static ips as I only have 2 things on the network. This is how I configured my wireless connection:
(make sure you have wireless-tools. on debian a simple #apt-get install wireless-tools)
One thing I haven't figure out is where eth0 gets its name from. eth0 is my LAN connection while eth1 is my wireless card...I would like to name it something like wlan0, but no biggie.
If you are able to do #iwconfig and you see a device that doesn't say "no wireless extensions", that's your card and you have is usable. This is what I see (before I configure wireless)
Code:
# iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
Warning: Driver for device eth1 has been compiled with version 21
of Wireless Extension, while this program supports up to version 17.
Some things may be broken...
eth1 IEEE 802.11b/g ESSID:off/any Nickname:"Broadcom 4306"
Mode:Managed Frequency=2.437 GHz Access Point: FF:FF:FF:FF:FF:FF
Bit Rate=1 Mb/s Tx-Power=16 dBm
RTS thr:off Fragment thr:off
Encryption key:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
So now we must configure the wireless connection. For me, all I have to do is give the essid, usually specify a 54Mb/s rate just because, and give the wep key (I also specify Managed mode cause I'll sometime play around with Monitor mode and forget that I'm still in monitor mode).
So if my essid was: "homerouter", my wep key was: "thisismywpkey" (13 ascii characters...or 26 hex digits), this is how I would configure mine:
Code:
#iwconfig eth1 essid "homerouter" bitrate 54Mb/s key s:thisismywpkey
If I were to run iwconfig again and see that my access point didn't have MAC address of all FF-FF... (i.e., not associated), then it
probably worked. Output from dmesg confirms it:
Code:
SoftMAC: Sent Authentication Request to 00:0F:8f:a3:19:9f.
SoftMAC: Open Authentication completed with 00:0F:8f:a3:19:9f
SoftMAC: sent association request!
SoftMAC: associated!
Now, I have to configure IP. Since I use static IPs, it'll just be an ifconfig, a route statement, and a modification of /etc/resolv.conf to point to my router. With dhcp, I think all you have to do is run #dhclient eth1 which should make some DHCPDISCOVER commands and if successful, you'll see a DHCPOFFER reply. But here's how I do my static stuff:
Code:
# ifconfig eth1 192.168.1.2/24
or I could have done the standard netmask
# ifconfig eth1 192.168.1.2 netmask 255.255.255.0
Code:
# route (just to see what's already there)
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 eth1
# route add default gw 192.168.1.1 dev eth1
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 eth1
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth1
Then I open up /etc/resolve.conf and add this line(or modify if exists):
Code:
nameserver 192.168.1.1
Now, at this point that's all I have to do...
Do a #ifconfig eth1 up
and if the light on the card turns on and you can ping google.com, it worked. You
may have to do a #iwconfig eth1 essid "homerouter" again (no need to specify the other parameters).
Oh yeah, one other thing I forgot, you should probably add this stuff to /etc/network/interfaces so that it gets configured on boot. This is how my file looks (with regards to the wireless-related stuff):
Code:
iface eth1 inet static
name Wireless LAN card
address 192.168.1.2
netmask 255.255.255.0
broadcast 192.168.1.255
network 192.168.1.0
gateway 192.168.1.1
wireless_essid homerouter
wireless_key s:thisismywpkey
wireless_bitrate 54Mb/s
wireless_mode Managed
auto eth1
any option you can do with iwconfig, just add wirless_ in front of it.
This long post was mainly for me
I just got this all working last night!
Edit: and yes the numbers and keys are all fake