Since apparently linux kernel no longer supports bcm43xx, and for some reason 2.6.27-gentoo-r7 doesn't include b43 or b43legacy, I was pleasantly surprised when I learned Broadcom released native linux drivers [finally]: http://www.broadcom.com/support/802.11/linux_sta.php
I couldn't find any directions for v 5.10.27.11 - everything was for v 5.10.27.6 (and the patch file for that hosted by jaux.net didn't work for the new version released in Dec 2008)
credit for these directions goes to:
http://www.broadcom.com/docs/linux_sta/README.txt
http://mann-linuxproject.blogspot.com/2008/11/configuring-broadcom-corporation.html
http://jaux.net/uploads/2008/10/hybrid_wl-5.10.27.6_patch-2.6.27-ARCH
http://djkaos.wordpress.com/2008/10/25/installing-broadcom-80211-linux-sta-driver/
1] Download driver from http://www.broadcom.com/support/802.11/linux_sta.php
my file was "hybrid-portsrc-x86_32_5_10_27_11.tar.gz"
2] Create and enter workspace:
~ # mkdir /usr/src/wlan
~ # cd /usr/src/wlan/
wlan # mkdir build
3] Extract Broadcom download
wlan # tar -zxvf /path/to/hybrid-portsrc-x86_32_5_10_27_11.tar.gz
4] Get patch hybrid_wl-5.10.27.11_patch-2.6.27-ARCH
NOTE: this is NOT hybrid_wl-5.10.27.6_patch-2.6.27-ARCH
You can find this patch at the very bottom of this page.
wlan # cp /path/to/hybrid_wl-5.10.27.11_patch-2.6.27-ARCH /usr/src/wlan/
5] Install the patch:
wlan # patch -p1 < hybrid_wl-5.10.27.11_patch-2.6.27-ARCH output: patching file src/wl/sys/wl_iw.c
6] Compile the patched Broadcom source
wlan # make -C /lib/modules/2.6.27-gentoo-r7/build M=`pwd` clean
wlan # make -C /lib/modules/2.6.27-gentoo-r7/build M=`pwd`
output: make: Entering directory `/usr/src/linux-2.6.27-gentoo-r7' CC [M] /usr/src/wlan/src/wl/sys/wl_iw.o CC [M] /usr/src/wlan/src/shared/linux_osl.o LD [M] /usr/src/wlan/wl.o Building modules, stage 2. MODPOST 1 modules WARNING: modpost: missing MODULE_LICENSE() in /usr/src/wlan/wl.o see include/linux/module.h for more information CC /usr/src/wlan/wl.mod.o LD [M] /usr/src/wlan/wl.ko make: Leaving directory `/usr/src/linux-2.6.27-gentoo-r7'
7] Check to make sure the module works:
wlan # insmod wl.ko]
8] Ensure b43/b43legacy/bcm43xx are not in use by adding them to the blacklist in /etc/modprobe.d/blacklist:
wlan # echo "blacklist b43" >> /etc/modprobe.d/blacklist
wlan # echo "blacklist b43legacy" >> /etc/modprobe.d/blacklist
wlan # echo "blacklist bcm43xx" >> /etc/modprobe.d/blacklist
9] Check to make sure it actually is working:
There should be a new wireless interface...eth1 or wlan0:
wlan # iwconfig
wlan # iwlist scanning
10] Install the new driver:
wlan # mkdir -p /lib/modules/2.6.27-gentoo-r7/build/drivers/net/wireless/
wlan # cp wl.ko /lib/modules/2.6.27-gentoo-r7/build/drivers/net/wireless/
wlan# depmod -a
wlan # rmmod wl
wlan # modprobe wl
hybrid_wl-5.10.27.11_patch-2.6.27-ARCH:
--- hybrid-portsrc-x86-32_5_10_27_11/src/wl/sys/wl_iw.c 2008-12-26 17:34:08.000000000 -0500
+++ patched/src/wl/sys/wl_iw.c 2008-12-26 18:06:17.000000000 -0500
@@ -943,12 +943,12 @@
iwe.cmd = SIOCGIWAP;
iwe.u.ap_addr.sa_family = ARPHRD_ETHER;
memcpy(iwe.u.ap_addr.sa_data, &bi->BSSID, ETHER_ADDR_LEN);
- event = iwe_stream_add_event(event, end, &iwe, IW_EV_ADDR_LEN);
+ event = iwe_stream_add_event(info, event, end, &iwe, IW_EV_ADDR_LEN);
iwe.u.data.length = dtoh32(bi->SSID_len);
iwe.cmd = SIOCGIWESSID;
iwe.u.data.flags = 1;
- event = iwe_stream_add_point(event, end, &iwe, bi->SSID);
+ event = iwe_stream_add_point(info, event, end, &iwe, bi->SSID);
if (dtoh16(bi->capability) & (DOT11_CAP_ESS | DOT11_CAP_IBSS)) {
iwe.cmd = SIOCGIWMODE;
@@ -956,7 +956,7 @@
iwe.u.mode = IW_MODE_INFRA;
else
iwe.u.mode = IW_MODE_ADHOC;
- event = iwe_stream_add_event(event, end, &iwe, IW_EV_UINT_LEN);
+ event = iwe_stream_add_event(info, event, end, &iwe, IW_EV_UINT_LEN);
}
iwe.cmd = SIOCGIWFREQ;
@@ -964,13 +964,13 @@
CHSPEC_CHANNEL(bi->chanspec) <= CH_MAX_2G_CHANNEL ? WF_CHAN_FACTOR_2_4_G : WF_CHAN_FACTOR_5_G); iwe.u.freq.e = 6; - event = iwe_stream_add_event(event, end, &iwe, IW_EV_FREQ_LEN); + event = iwe_stream_add_event(info, event, end, &iwe, IW_EV_FREQ_LEN); iwe.cmd = IWEVQUAL; iwe.u.qual.qual = rssi_to_qual(dtoh16(bi->RSSI));
iwe.u.qual.level = 0x100 + dtoh16(bi->RSSI);
iwe.u.qual.noise = 0x100 + bi->phy_noise;
- event = iwe_stream_add_event(event, end, &iwe, IW_EV_QUAL_LEN);
+ event = iwe_stream_add_event(info, event, end, &iwe, IW_EV_QUAL_LEN);
#if WIRELESS_EXT > 17
@@ -982,7 +982,7 @@
if ((ie = bcm_parse_tlvs(ptr, ptr_len, DOT11_MNG_RSN_ID))) {
iwe.cmd = IWEVGENIE;
iwe.u.data.length = ie->len + 2;
- event = iwe_stream_add_point(event, end, &iwe, (char *)ie);
+ event = iwe_stream_add_point(info, event, end, &iwe, (char *)ie);
}
ptr = ((uint8 *)bi) + sizeof(wl_bss_info_t);
while ((ie = bcm_parse_tlvs(ptr, ptr_len, DOT11_MNG_WPA_ID))) {
@@ -990,7 +990,7 @@
if (ie_is_wps_ie(((uint8 **)&ie), &ptr, &ptr_len)) {
iwe.cmd = IWEVGENIE;
iwe.u.data.length = ie->len + 2;
- event = iwe_stream_add_point(event, end, &iwe, (char *)ie);
+ event = iwe_stream_add_point(info, event, end, &iwe, (char *)ie);
break;
}
}
@@ -1001,7 +1001,7 @@
if (ie_is_wpa_ie(((uint8 **)&ie), &ptr, &ptr_len)) {
iwe.cmd = IWEVGENIE;
iwe.u.data.length = ie->len + 2;
- event = iwe_stream_add_point(event, end, &iwe, (char *)ie);
+ event = iwe_stream_add_point(info, event, end, &iwe, (char *)ie);
goto done;
}
}
@@ -1015,7 +1015,7 @@
else
iwe.u.data.flags = IW_ENCODE_DISABLED;
iwe.u.data.length = 0;
- event = iwe_stream_add_point(event, end, &iwe, (char *)event);
+ event = iwe_stream_add_point(info, event, end, &iwe, (char *)event);
if (bi->rateset.count) {
value = event + IW_EV_LCP_LEN;
@@ -1024,7 +1024,7 @@
iwe.u.bitrate.fixed = iwe.u.bitrate.disabled = 0;
for (j = 0; j <>rateset.count && j < value =" (bi-">rateset.rates[j] & 0x7f) * 500000;
- value = iwe_stream_add_value(event, value, end, &iwe,
+ value = iwe_stream_add_value(info, event, value, end, &iwe,
IW_EV_PARAM_LEN);
}
event = value;
Subscribe to:
Comments (Atom)