Ubuntu – Problems working with Broadcom 4352 Wireless card

13.10broadcomcommand linewirelesswpa-supplicant

Not sure if this is a duplicate of Broadcom STA driver doesn't work well with BCM4313 or not. It's the same series I think but I've seen no explicit reference to 4352 or 43xx (implying it's applicable for all 43xx series).

Canonical claims support for this card over here and when I booted into the live install CD it worked after enabling the driver in software-properties. Admittingly I didn't use it enough to see if the connection was flaky. Instead I booted into a server install USB and I'm now attempting to configure it post install.

My current procedure is to run this script, which is built from snippets I've been reading about at various locations.

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wireless


echo "$CONF" | sudo tee $CONFFILE > /dev/null
wpa_passphrase "" "" | sudo tee -a $CONFFILE > /dev/null

sudo kill-all wpa_supplicant
sudo wpa_supplicant -B -Dwext -ieth0 -c$CONFFILE
sudo dhclient eth0

Now sometimes this runs in about 15 seconds, emits two errors (ioctl[SIOCSIWENCODEEXT]: Invalid argument), but works fine. Can't tell if the connection is flaky or I have selected a poor mirror in apt. However other times it takes > 5 minutes to run and emits no useful information before I kill it. I try to run the wpa_supplicant and dhclient lines by themselves and each take ages and report no useful errors. The end result in these cases is that iwconfig shows the interface as associated but ifconfig shows no ipv4 address and dhclient refuses to fetch one.

Here's some debugging info:

Kernel log is full of these:

Feb 16 20:59:49 ALPHA kernel: [ 3680.237755] ------------[ cut here ]-----------
Feb 16 20:59:49 ALPHA kernel: [ 3680.237805] WARNING: CPU: 1 PID: 476 at /build/
buildd/linux-3.11.0/net/wireless/sme.c:795 cfg80211_roamed+0x89/0x90 [cfg80211](
Feb 16 20:59:49 ALPHA kernel: [ 3680.237808] Modules linked in: michael_mic arc4
 snd_hda_codec_hdmi lib80211_crypt_tkip x86_pkg_temp_thermal coretemp wl(POF) kv
m crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel aes_x86_64 lrw g
f128mul glue_helper ablk_helper cryptd i915 snd_hda_codec_realtek joydev eeepc_w
mi snd_hda_intel drm_kms_helper lib80211 asus_wmi snd_hda_codec sparse_keymap sn
d_hwdep drm snd_pcm hid_generic snd_page_alloc snd_seq_midi snd_seq_midi_event c
fg80211 snd_rawmidi i2c_algo_bit psmouse snd_seq snd_seq_device usbhid mei_me sn
d_timer microcode mei hid serio_raw snd e1000e soundcore video ptp lpc_ich wmi p
ps_core mac_hid lp parport ahci libahci
Feb 16 20:59:49 ALPHA kernel: [ 3680.237888] CPU: 1 PID: 476 Comm: wl_event_handle Tainted: PF       W  O 3.11.0-15-generic #25-Ubuntu
Feb 16 20:59:49 ALPHA kernel: [ 3680.237891] Hardware name: ASUS All Series/Z87I-DELUXE, BIOS 0702 08/30/2013
Feb 16 20:59:49 ALPHA kernel: [ 3680.237895]  0000000000000009 ffff880210463d88 ffffffff816e7375 0000000000000000
Feb 16 20:59:49 ALPHA kernel: [ 3680.237903]  ffff880210463dc0 ffffffff81061dcd ffff88021436a000 ffff88020f4ad000
Feb 16 20:59:49 ALPHA kernel: [ 3680.237909]  00000000000000a3 ffff880213223f00 0000000000000001 ffff880210463dd0
Feb 16 20:59:49 ALPHA kernel: [ 3680.237916] Call Trace:
Feb 16 20:59:49 ALPHA kernel: [ 3680.237930]  [<ffffffff816e7375>] dump_stack+0x45/0x56
Feb 16 20:59:49 ALPHA kernel: [ 3680.237942]  [<ffffffff81061dcd>] warn_slowpath_common+0x7d/0xa0
Feb 16 20:59:49 ALPHA kernel: [ 3680.237949]  [<ffffffff81061eaa>] warn_slowpath_null+0x1a/0x20
Feb 16 20:59:49 ALPHA kernel: [ 3680.237975]  [<ffffffffa01c4409>] cfg80211_roamed+0x89/0x90 [cfg80211]
Feb 16 20:59:49 ALPHA kernel: [ 3680.238056]  [<ffffffffa0862ea5>] wl_bss_connect_done.isra.21+0x105/0x1b0 [wl]
Feb 16 20:59:49 ALPHA kernel: [ 3680.238124]  [<ffffffffa086314c>] wl_notify_connect_status+0x1fc/0x410 [wl]
Feb 16 20:59:49 ALPHA kernel: [ 3680.238189]  [<ffffffffa0862445>] wl_event_handler+0x55/0x1f0 [wl]
Feb 16 20:59:49 ALPHA kernel: [ 3680.238253]  [<ffffffffa08623f0>] ? wl_cfg80211_scan+0x350/0x350 [wl]

ifconfig (when the script works)

eth0      Link encap:Ethernet  HWaddr 24:0a:64:31:13:1b
          inet addr:  Bcast:  Mask:
          inet6 addr: fe80::260a:64ff:fe31:131b/64 Scope:Link
          RX packets:652 errors:0 dropped:1 overruns:0 frame:259012
          TX packets:493 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:83037 (83.0 KB)  TX bytes:69997 (69.9 KB)

iwconfig (again, when it works)

eth0      IEEE 802.11abg  ESSID:""
          Mode:Managed  Frequency:2.412 GHz  Access Point: 58:6D:8F:7E:7A:77
          Bit Rate=130 Mb/s   Tx-Power=200 dBm
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=58/70  Signal level=-52 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0


       description: Wireless interface
       product: BCM4352 802.11ac Wireless Network Adapter
       vendor: Broadcom Corporation
       physical id: 0
       bus info: pci@0000:03:00.0
       logical name: eth0
       version: 03
       serial: 24:0a:64:31:13:1b
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
       configuration: broadcast=yes driver=wl0 driverversion= (r415941) ip= latency=0 multicast=yes wireless=IEEE 802.11abg
       resources: irq:19 memory:f7a00000-f7a07fff memory:f7800000-f79fffff

wpa_supplicant -h (supported drivers)

  wext = Linux wireless extensions (generic)
  nl80211 = Linux nl80211/cfg80211
  wired = Wired Ethernet driver
  none = no driver (RADIUS server/WPS ER)

lspci -nn -d 14e4:

03:00.0 Network controller [0280]: Broadcom Corporation BCM4352 802.11ac Wireless Network Adapter [14e4:43b1] (rev 03)

sudo cat /etc/network/interfaces | grep -Ev '^#'

auto lo
iface lo inet loopback

auto em1
iface em1 inet dhcp

auto eth0
iface eth0 inet dhcp

Edit: added extra diagnostic info

Best Answer

I suggest the far simpler arrangement for /etc/network/interfaces. I also suggest, so that you can ssh and ftp into the server, that you use a static IP address. If 'em1' is your ethernet under the new naming scheme, you are asking both ethernet and wireless to start automatically. I'd change /etc/network/interfaces to:

auto lo
iface lo inet loopback

#auto em1
iface em1 inet dhcp

auto eth0
iface eth0 inet static
wpa-ssid <your_router>
wpa-psk <your_secret_key>

Of course, pick an address outside the DHCP pool in the router and substitute your details. Get the system to read and use the changes:

sudo ifdown eth0 && sudo ifup eth0

It may take a reboot.

If your cfg80211 warning persists, I suggest we troubleshoot after we get the wireless to connect smoothly.

Related Question