I'm not quite sure where else to put this information, so if anyone has any suggestions and it's useful I'll repost it elsewhere.
If have a 14E4:4312 BCM4311 mini pci wireless card for my netbook, it was originally from a laptop (so I'll not include my netbook specs).
I'm using F16 (Fedora 16) : Linux 3.2.2-1.fc16.i686 #1 SMP Thu Jan 26 03:38:31 UTC 2012 i686 i686 i386 GNU/Linux
Originally I couldn't connect to a WPA-Enterprise network so I used b43-fwcuter from the yum to try to cut in other firmware. I found that the b43-fwcutter in yum wasn't version 015 as it claimed and therefore could not install the latest broadcom firmware.
I managed to install the latest firmware version that is compatible with b43-fwcutter that comes with F16 but I had problems with 'destination host unreachable' on a ping google.com after a few minutes of being connected.
Following the "If you are using the b43 driver from 3.2 kernel or newer:" section of
http://linuxwireless.org/en/users/Drivers/b43 i was able to get the correct version of b43-fwcutter although it has to be run from it's installation directory /usr/sbin/b43-fwcutter (i believe).
At this point I had the 5.100.138 666.2 version firmware.
This solved my connection issue, but the NetworkManager was asking me for authorisation every few minutes, suggesting that it was losing the connection or something similar.
To solve this is looked at the iwconfig options and found that iwconfig wlan0 retry 40 worked well (20 also worked but I thought I'd jump it up just to be on the safe side). This is set to 7 normally.
I then added this to /etc/sysconfig/network-scripts/ifup-wireless so the file looks like the file at the bottom of this message.
This has completely solved my disconnect/reconnect/connection issues with WPA-enterprise. I had no problem connecting to WEP and unsecured networks earlier and still do not.
Hope this helps someone.
#!/bin/bash
# Network Interface Configuration System
# Copyright (c) 1996-2009 Red Hat, Inc. all rights reserved.
#
# Based on PCMCIA wireless script by (David Hinds/Jean Tourrilhes)
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2,
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
#
# Configure wireless network device options. See iwconfig(8) for more info.
# Valid variables:
# MODE: Ad-Hoc, Managed, etc.
# ESSID: Name of the wireless network
# NWID: Name of this machine on the network. Hostname is default
# FREQ: Frequency to operate on. See CHANNEL
# CHANNEL: Numbered frequency to operate on. See FREQ
# SENS: Sensitivity threshold for packet rejection.
# RATE: Transfer rate. Usually one of Auto, 11, 5, 2, or 1.
# KEY: Encryption key for WEP.
# RTS: Explicit RTS handshake. Usually not specified (auto)
# FRAG: Fragmentation threshold to split packets. Usually not specified.
# SPYIPS: List of IP addresses to "spy" on for link performance stats.
# IWCONFIG: Extra parameters to pass directly to IWCONFIG
# SECURITYMODE: Security mode, e.g: 'open' or 'restricted'
# IWPRIV: Extra parameters to pass directly to IWPRIV
# Only meant to be called from ifup.
# Mode need to be first : some settings apply only in a specific mode !
if [ -n "$MODE" ] ; then
iwconfig $DEVICE mode $MODE
fi
# Set link up (some cards require this.)
/sbin/ip link set dev ${DEVICE} up
# This is a bit hackish, but should do the job right...
if [ -n "$ESSID" -o -n "$MODE" ] ; then
NICKNAME=$(/bin/hostname)
iwconfig $DEVICE nick "$NICKNAME" >/dev/null 2>&1
fi
# Regular stuff...
if [ -n "$NWID" ] ; then
iwconfig $DEVICE nwid $NWID
fi
if [ -n "$FREQ" -a "$MODE" != "Managed" ] ; then
iwconfig $DEVICE freq $FREQ
elif [ -n "$CHANNEL" -a "$MODE" != "Managed" ] ; then
iwconfig $DEVICE channel $CHANNEL
fi
if [ -n "$SENS" ] ; then
iwconfig $DEVICE sens $SENS
fi
if [ -n "$RATE" ] ; then
iwconfig $DEVICE rate "$RATE"
fi
if [ -n "$KEY" -o -n "$KEY1" -o -n "$KEY2" -o -n "$KEY3" -o -n "$KEY4" ] ; then
[ -n "$KEY1" ] && iwconfig $DEVICE key "[1]" $KEY1
[ -n "$KEY2" ] && iwconfig $DEVICE key "[2]" $KEY2
[ -n "$KEY3" ] && iwconfig $DEVICE key "[3]" $KEY3
[ -n "$KEY4" ] && iwconfig $DEVICE key "[4]" $KEY4
[ -n "$DEFAULTKEY" ] && iwconfig $DEVICE key "[${DEFAULTKEY}]"
[ -n "$KEY" ] && iwconfig $DEVICE key $KEY
else
iwconfig $DEVICE key off
fi
if [ -n "$SECURITYMODE" ]; then
iwconfig $DEVICE enc $SECURITYMODE
fi
if [ -n "$RTS" ] ; then
iwconfig $DEVICE rts $RTS
fi
if [ -n "$FRAG" ] ; then
iwconfig $DEVICE frag $FRAG
fi
# More specific parameters passed directly to IWCONFIG
if [ -n "$IWCONFIG" ] ; then
iwconfig $DEVICE $IWCONFIG
fi
iwconfig $DEVICE retry 40
# ^ MY NEW LINE
if [ -n "$SPYIPS" ] ; then
for IP in $SPYIPS; do
iwspy $DEVICE + $IP
done
fi
if [ -n "$IWPRIV" ] ; then
iwpriv $DEVICE $IWPRIV
fi
# ESSID need to be last : most device re-perform the scanning/discovery
# when this is set, and things like encryption keys are better be
# defined if we want to discover the right set of APs/nodes.
if [ -n "$ESSID" ] ; then
iwconfig $DEVICE essid "$ESSID"
else
# use any essid
iwconfig $DEVICE essid any >/dev/null 2>&1
fi