it turns out that this laptop has a Broadcom card, to be specific it has:
the open source b43 driver does not yet support the 4328 so plan on buying a usb dongle if you want anything more than basic functionality. you could use ndiswrapper for this card, but performance will suffer and i've been told you wont be able to spoof your MAC address. the best alternative is to use the linux_sta driver as stated on the wireless HCL over in the wiki. so go download the driver source compile it and load up the module right, no, not quite...Code:root@bt:/# lspci -nn | grep Broadcom 0b:00.0 Network controller [0280]: Broadcom Corporation BCM4328 802.11a/b/g/n [14e4:4328] (rev 05)
the card is detected out of the box in bt4 by the ssb driver:
notice after the kernel driver in use there is no line listing the module in use. turns out the ssb driver is statically linked into the bt4 kernel. what this means is that even if you were to compile and load the sta driver it will not be able to drive the card because ssb has already claimed it. to solve this dilema we'll need to recompile the bt4 kernel so that ssb isn't linked...Code:root@bt:/# lspci -v | grep -A13 Broadcom 0b:00.0 Network controller: Broadcom Corporation BCM4328 802.11a/b/g/n (rev 05) Subsystem: Apple Computer Inc. Device 008c Flags: bus master, fast devsel, latency 0, IRQ 16 Memory at 97300000 (64-bit, non-prefetchable) [size=16K] Capabilities: [40] Power Management version 3 Capabilities: [58] Vendor Specific Information <?> Capabilities: [e8] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable- Capabilities: [d0] Express Endpoint, MSI 00 Capabilities: [100] Advanced Error Reporting <?> Capabilities: [13c] Virtual Channel <?> Capabilities: [160] Device Serial Number 22-00-fc-ff-ff-41-92-44 Capabilities: [16c] Power Budgeting <?> Kernel driver in use: b43_pci_bridge
as a side note, if any bt4 devs are reading this, will you please make this change in bt4 final
make a copy of the kernel source to work with
update the config to remove ssb from the kernel. the B44 driver being statically linked causes ssb to as well, configure it to load as a module instead. the sky2 driver is for the lan card, change it from a module to statically linked so it loads before the new module we'll be compiling (i had issues with it switchiing from eth1 to eth0 and breaking stuff). the ssb driver can now be loaded as a module (my laptop doesn't need it for anything anyway)Code:cp -R /usr/src/linux/ ~/src/linux/
compile the kernel. if you get prompted for new options in make oldconfig just select defaults.Code:sed -i 's/CONFIG_B44=y/CONFIG_B44=m'/ ~/src/linux/.config sed -i 's/CONFIG_SKY2=m/CONFIG_SKY2=y'/ ~/src/linux/.config sed -i 's/CONFIG_SSB=y/CONFIG_SSB=m'/ ~/src/linux/.config
install the kernelCode:cd ~/src/linux make oldconfig make
and update lilo.confCode:mv /boot/vmlinuz /boot/vmlinuz-old cp ~/src/linux/arch/x86/boot/bzImage /boot/vmlinuz
re-initialize liloCode:lba32 boot=/dev/sda root=/dev/sda4 # bitmap=/boot/sarge.bmp # bmp-colors=1,,0,2,,0 # bmp-table=120p,173p,1,15,17 # bmp-timer=254p,432p,1,0,0 # install=bmp # delay=20 prompt timeout=50 # map=/boot/map vga=0x317 image=/boot/vmlinuz label="BT4" read-only initrd=/boot/splash.initrd append=quiet image=/boot/vmlinuz-old label="BT4 old" read-only initrd=/boot/splash.initrd append=quiet
reboot to make sure your new kernel is ok, if it isn't, you can choose to boot to the old one in the lilo menuCode:lilo -v -b /dev/sda4
take a look and see how your card looks now, it should be UNCLAIMED
i'll post the output of this when i reimage tomorrow, for now trust me, it shows up as unclaimedCode:lshw -C Network
now that the ssb driver is out of the way we can compile and setup the sta driver module
Code:mkdir ~/src/hybrid_wl cd ~/src/hybrid_wl wget http://www.broadcom.com/docs/linux_sta/hybrid-portsrc-x86_32-v5_10_27_14.tar.gz tar -xzf hybrid-portsrc-x86_32-v5_10_27_14.tar.gz
follow build instructions from the readme
before loading the new module we need to make sure other modules that conflict aren't loaded, none should be but might as well make sureCode:make -C /lib/modules/`uname -r`/build M=`pwd` clean make -C /lib/modules/`uname -r`/build M=`pwd`
now try loading to see if it worksCode:root@bt:~# rmmod b43 b43legacy bcm43xx ERROR: Module b43 does not exist in /proc/modules ERROR: Module b43legacy does not exist in /proc/modules ERROR: Module bcm43xx does not exist in /proc/modules
at this point you should be able to see your card (as eth1)Code:root@bt:~# insmod ~/src/hybrid_wl/wl.ko
and if you haven't alreadyCode:root@bt:~# iwconfig lo no wireless extensions. eth0 no wireless extensions. eth1 IEEE 802.11abgn ESSID:"blah" Nickname:"" Mode:Managed Frequency:2.462 GHz Access Point: 01:43:13:10:20:03 Bit Rate=48 Mb/s Tx-Power:32 dBm Retry min limit:7 RTS thr:off Fragment thr:off Power Managementmode:All packets received Link Quality=4/5 Signal level=-66 dBm Noise level=-90 dBm Rx invalid nwid:0 Rx invalid crypt:540 Rx invalid frag:0 Tx excessive retries:101 Invalid misc:0 Missed beacon:0 pan0 no wireless extensions.
and go configure up your connection.Code:/etc/init.d/NetworkManager start
if all that worked you still need to set things up so they happen automatically on reboot
make sure ssb doesn't load before wl (in my case i dont need it at all, if you do for an external card you'll have to google for the script that makes sure wl loads before ssb)
move the module to a better homeCode:root@bt:~# echo blacklist b43 | tee -a /etc/modprobe.d/blacklist root@bt:~# echo blacklist b43legacy | tee -a /etc/modprobe.d/blacklist
you should now be able to reboot have wireless come up automatically.Code:root@bt:~/src/hybrid_wl# cp wl.ko /lib/modules/2.6.28.1/net/ root@bt:~# depmod -a root@bt:~# rmmod wl root@bt:~# modprobe wl root@bt:~# echo wl | tee -a /etc/modules
next up: sound, keyboard stuff, backlights, and maybe more





