Hi, I purchased a router with a bcm4331 chip in it and flashed openwrt on it. Once I did that the wifi performance went from pretty good to horrible. At 7 feet from the router I am barely getting a signal on my phone. I posted to the openwrt list but the problem is with the b43 driver. So I am posting here to help get proper support in the kernel for this chip. The 3 largest problems are: 1) call trace as seen below 2) no 5Ghz support 3) horrible 2.4Ghz performance So what can I do to help? I am using Chaos Calmer so I am using a 3.18 .20 kernel. Trunk is up to 4.1.6. [ 0.300000] ------------[ cut here ]------------ [ 0.300000] WARNING: CPU: 0 PID: 1 at drivers/bcma/host_soc.c:140 0x801d0c04() [ 0.300000] Accessed core has no wrapper/agent [ 0.300000] Modules linked in: [ 0.300000] CPU: 0 PID: 1 Comm: swapper Not tainted 3.18.20 #1 [ 0.300000] Stack : 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 0.300000] 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 0.300000] 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 0.300000] 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 0.300000] 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 0.300000] ... [ 0.300000] Call Trace:[<80013dec>] 0x80013dec [ 0.300000] [<80013dec>] 0x80013dec [ 0.300000] [<801d0c04>] 0x801d0c04 [ 0.300000] [<800227dc>] 0x800227dc [ 0.300000] [<801d0c04>] 0x801d0c04 [ 0.300000] [<80022838>] 0x80022838 [ 0.300000] [<801d0c04>] 0x801d0c04 [ 0.300000] [<801cf138>] 0x801cf138 [ 0.300000] [<801cf1c4>] 0x801cf1c4 [ 0.300000] [<801cfac4>] 0x801cfac4 [ 0.300000] [<80305230>] 0x80305230 [ 0.300000] [<801c9578>] 0x801c9578 [ 0.300000] [<80307ab0>] 0x80307ab0 [ 0.300000] [<80305230>] 0x80305230 [ 0.300000] [<80307ad0>] 0x80307ad0 [ 0.300000] [<8000a184>] 0x8000a184 [ 0.300000] [<80189d88>] 0x80189d88 [ 0.300000] [<80037b34>] 0x80037b34 [ 0.300000] [<80305c18>] 0x80305c18 [ 0.300000] [<80305230>] 0x80305230 [ 0.300000] [<8002cfb4>] 0x8002cfb4 [ 0.300000] [<80005df0>] 0x80005df0 [ 0.300000] [<80005e00>] 0x80005e00 [ 0.300000] [<80005df0>] 0x80005df0 [ 0.300000] [<80001478>] 0x80001478 [ 0.300000] [ 0.300000] ---[ end trace aa136676d983549f ]--- Full kernel log: CFE version 5.100.138.20 based on BBP 1.0.37 for BCM947XX (32bit,SP,LE) Build Date: 五 1月 24 17:20:49 CST 2014 (yau@wireless-pub2) Copyright (C) 2000-2008 Broadcom Corporation. Init Arena Init Devs. Boot partition size = 262144(0x40000) et0: Broadcom BCM47XX 10/100/1000 Mbps Ethernet Controller 5.100.138.20 CPU type 0x19749: 600MHz Tot mem: 131072 KBytes CFE mem: 0x80700000 - 0x808358A0 (1267872) Data: 0x8072F6B0 - 0x80732910 (12896) BSS: 0x80732910 - 0x807338A0 (3984) Heap: 0x807338A0 - 0x808338A0 (1048576) Stack: 0x808338A0 - 0x808358A0 (8192) Text: 0x80700000 - 0x8072F6B0 (194224) Device eth0: hwaddr 10-C3-7B-9A-22-30, ipaddr 192.168.1.1, mask 255.255.255.0 gateway not set, nameserver not set Null Rescue Flag. Loader:raw Filesys:tftp Dev:eth0 File:: Options:(null) Loading: TFTP Server. Failed. Could not load :: Timeout occured Loader:raw Filesys:raw Dev:flash0.os File: Options:(null) Loading: .. 3712 bytes read Entry at 0x80001000 Closing network. Starting program at 0x80001000 [ 0.000000] Linux version 3.18.20 (buildbot@builder1) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r46450) ) #1 Fri Sep 4 15:10:42 CEST 2015 [ 0.000000] CPU0 revision is: 00019749 (MIPS 74Kc) [ 0.000000] bcm47xx: Using bcma bus [ 0.000000] bcma: bus0: Found chip with id 0x5300, rev 0x01 and package 0x00 [ 0.000000] Found 128 MiB of extra memory, but highmem is unsupported yet! [ 0.000000] Determined physical RAM map: [ 0.000000] memory: 07fff000 @ 00000000 (usable) [ 0.000000] Initrd not found or empty - disabling initrd [ 0.000000] Zone ranges: [ 0.000000] Normal [mem 0x00000000-0x07ffefff] [ 0.000000] HighMem empty [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x00000000-0x07ffefff] [ 0.000000] Initmem setup node 0 [mem 0x00000000-0x07ffefff] [ 0.000000] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes. [ 0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32511 [ 0.000000] Kernel command line: noinitrd console=ttyS0,115200 [ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes) [ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) [ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) [ 0.000000] Writing ErrCtl register=80000b70 [ 0.000000] Readback ErrCtl register=80000b70 [ 0.000000] Cache parity protection enabled [ 0.000000] Memory: 126300K/131068K available (2637K kernel code, 113K rwdata, 328K rodata, 172K init, 288K bss, 4768K reserved, 0K highmem) [ 0.000000] NR_IRQS:128 [ 0.000000] bcma: bus0: Core 0 found: BCM4706 ChipCommon (manuf 0x4BF, id 0x500, rev 0x1F, class 0x0) [ 0.000000] bcma: bus0: Core 1 found: BCM4706 GBit MAC (manuf 0x4BF, id 0x52D, rev 0x00, class 0x0) [ 0.000000] bcma: bus0: Core 2 found: BCM4706 GBit MAC (manuf 0x4BF, id 0x52D, rev 0x00, class 0x0) [ 0.000000] bcma: bus0: Core 3 found: MIPS 74K (manuf 0x4A7, id 0x82C, rev 0x00, class 0x0) [ 0.000000] bcma: bus0: Core 4 found: USB 2.0 Host (manuf 0x4BF, id 0x819, rev 0x04, class 0x0) [ 0.000000] bcma: bus0: Core 5 found: PCIe (manuf 0x4BF, id 0x820, rev 0x0E, class 0x0) [ 0.000000] bcma: bus0: Core 6 found: PCIe (manuf 0x4BF, id 0x820, rev 0x0E, class 0x0) [ 0.000000] bcma: bus0: Core 7 found: AMEMC (DDR) (manuf 0x4BF, id 0x52E, rev 0x00, class 0x0) [ 0.000000] bcma: bus0: Core 8 found: BCM4706 SOC RAM (manuf 0x4BF, id 0x50E, rev 0x05, class 0x0) [ 0.000000] bcma: bus0: Core 9 found: ALTA (I2S) (manuf 0x4BF, id 0x534, rev 0x00, class 0x0) [ 0.000000] bcma: bus0: Core 10 found: BCM4706 GBit MAC Common (manuf 0x43B, id 0x5DC, rev 0x00, class 0x0) [ 0.000000] bcma: bus0: Early bus registered [ 0.000000] MIPS: machine is Asus RT-N66U [ 0.000000] bcm47xx: Setting up vectored interrupts [ 0.070000] Calibrating delay loop... 299.82 BogoMIPS (lpj=1499136) [ 0.070000] pid_max: default: 32768 minimum: 301 [ 0.070000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.070000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.070000] NET: Registered protocol family 16 [ 0.070000] Switched to clocksource MIPS [ 0.080000] NET: Registered protocol family 2 [ 0.080000] TCP established hash table entries: 1024 (order: 0, 4096 bytes) [ 0.080000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes) [ 0.080000] TCP: Hash tables configured (established 1024 bind 1024) [ 0.080000] TCP: reno registered [ 0.080000] UDP hash table entries: 256 (order: 0, 4096 bytes) [ 0.080000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [ 0.080000] NET: Registered protocol family 1 [ 0.150000] can not parse nvram name (null)boardnum(null) with value 10:c3:7b:9a:22:30 got -22 [ 0.300000] ------------[ cut here ]------------ [ 0.300000] WARNING: CPU: 0 PID: 1 at drivers/bcma/host_soc.c:140 0x801d0c04() [ 0.300000] Accessed core has no wrapper/agent [ 0.300000] Modules linked in: [ 0.300000] CPU: 0 PID: 1 Comm: swapper Not tainted 3.18.20 #1 [ 0.300000] Stack : 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 0.300000] 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 0.300000] 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 0.300000] 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 0.300000] 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 0.300000] ... [ 0.300000] Call Trace:[<80013dec>] 0x80013dec [ 0.300000] [<80013dec>] 0x80013dec [ 0.300000] [<801d0c04>] 0x801d0c04 [ 0.300000] [<800227dc>] 0x800227dc [ 0.300000] [<801d0c04>] 0x801d0c04 [ 0.300000] [<80022838>] 0x80022838 [ 0.300000] [<801d0c04>] 0x801d0c04 [ 0.300000] [<801cf138>] 0x801cf138 [ 0.300000] [<801cf1c4>] 0x801cf1c4 [ 0.300000] [<801cfac4>] 0x801cfac4 [ 0.300000] [<80305230>] 0x80305230 [ 0.300000] [<801c9578>] 0x801c9578 [ 0.300000] [<80307ab0>] 0x80307ab0 [ 0.300000] [<80305230>] 0x80305230 [ 0.300000] [<80307ad0>] 0x80307ad0 [ 0.300000] [<8000a184>] 0x8000a184 [ 0.300000] [<80189d88>] 0x80189d88 [ 0.300000] [<80037b34>] 0x80037b34 [ 0.300000] [<80305c18>] 0x80305c18 [ 0.300000] [<80305230>] 0x80305230 [ 0.300000] [<8002cfb4>] 0x8002cfb4 [ 0.300000] [<80005df0>] 0x80005df0 [ 0.300000] [<80005e00>] 0x80005e00 [ 0.300000] [<80005df0>] 0x80005df0 [ 0.300000] [<80001478>] 0x80001478 [ 0.300000] [ 0.300000] ---[ end trace aa136676d983549f ]--- [ 0.300000] bcma: bus0: PCIEcore in host mode found [ 0.490000] PCI host bridge to bus 0000:00 [ 0.490000] pci_bus 0000:00: root bus resource [mem 0x08000000-0x0bffffff] [ 0.490000] pci_bus 0000:00: root bus resource [io 0x0100-0x047f] [ 0.490000] pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff] [ 0.490000] bcma: PCI: Fixing up bridge 0000:00:00.0 [ 0.490000] bcma: PCI: Fixing up device 0000:00:00.0 [ 0.490000] bcma: PCI: Fixing up bridge 0000:00:00.1 [ 0.490000] bcma: PCI: Fixing up device 0000:00:00.1 [ 0.490000] bcma: PCI: Fixing up addresses 0000:00:01.0 [ 0.490000] pci 0000:00:01.0: BAR 0: assigned [mem 0x08000000-0x08003fff 64bit] [ 0.490000] PCI: Enabling device 0000:00:01.0 (0000 -> 0002) [ 0.490000] bcma: PCI: Fixing up device 0000:00:01.0 [ 0.490000] bcma: change PCIe max read request size from 512 to 128 [ 0.490000] bcma: bus1: Found chip with id 0x4331, rev 0x02 and package 0x08 [ 0.490000] bcma: bus1: Core 0 found: ChipCommon (manuf 0x4BF, id 0x800, rev 0x25, class 0x0) [ 0.490000] bcma: bus1: Core 1 found: IEEE 802.11 (manuf 0x4BF, id 0x812, rev 0x1D, class 0x0) [ 0.490000] bcma: bus1: Core 2 found: PCIe (manuf 0x4BF, id 0x820, rev 0x13, class 0x0) [ 0.620000] bcma: bus1: Invalid SPROM read from the PCIe card, trying to use fallback SPROM [ 0.850000] bcma: bus1: Bus registered [ 0.850000] bcma: bus0: PCIEcore in host mode found [ 1.030000] PCI host bridge to bus 0000:01 [ 1.030000] pci_bus 0000:01: root bus resource [mem 0x40000000-0x43ffffff] [ 1.030000] pci_bus 0000:01: root bus resource [io 0x0480-0x07ff] [ 1.030000] pci_bus 0000:01: No busn resource found for root bus, will use [bus 01-ff] [ 1.030000] bcma: PCI: Fixing up bridge 0000:01:00.0 [ 1.030000] bcma: PCI: Fixing up device 0000:01:00.0 [ 1.030000] bcma: PCI: Fixing up bridge 0000:01:00.1 [ 1.030000] bcma: PCI: Fixing up device 0000:01:00.1 [ 1.030000] bcma: PCI: Fixing up addresses 0000:01:01.0 [ 1.030000] pci 0000:01:01.0: BAR 0: assigned [mem 0x40000000-0x40003fff 64bit] [ 1.040000] PCI: Enabling device 0000:01:01.0 (0000 -> 0002) [ 1.040000] bcma: PCI: Fixing up device 0000:01:01.0 [ 1.040000] bcma: change PCIe max read request size from 512 to 128 [ 1.040000] bcma: bus2: Found chip with id 0x4331, rev 0x02 and package 0x08 [ 1.040000] bcma: bus2: Core 0 found: ChipCommon (manuf 0x4BF, id 0x800, rev 0x25, class 0x0) [ 1.040000] bcma: bus2: Core 1 found: IEEE 802.11 (manuf 0x4BF, id 0x812, rev 0x1D, class 0x0) [ 1.040000] bcma: bus2: Core 2 found: PCIe (manuf 0x4BF, id 0x820, rev 0x13, class 0x0) [ 1.160000] bcma: bus2: Invalid SPROM read from the PCIe card, trying to use fallback SPROM [ 1.380000] bcma: bus2: Bus registered [ 1.380000] bcma: bus0: Bus registered [ 1.380000] futex hash table entries: 256 (order: -1, 3072 bytes) [ 1.380000] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 1.380000] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc. [ 1.380000] msgmni has been set to 246 [ 1.380000] io scheduler noop registered [ 1.380000] io scheduler deadline registered (default) [ 1.380000] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled [ 1.380000] console [ttyS0] disabled [ 1.400000] serial8250.0: ttyS0 at MMIO 0xb8000300 (irq = 2, base_baud = 1562500) is a U6_16550A [ 2.240000] console [ttyS0] enabled [ 2.270000] serial8250.0: ttyS1 at MMIO 0xb8000400 (irq = 2, base_baud = 1562500) is a U6_16550A [ 2.280000] physmap platform flash device: 02000001 at 1c000000 [ 2.280000] physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank. Manufacturer ID 0x0000c2 Chip ID 0x00227e [ 2.300000] Amd/Fujitsu Extended Query Table at 0x0040 [ 2.300000] Amd/Fujitsu Extended Query version 1.3. [ 2.310000] number of CFI chips: 1 [ 2.340000] 6 bcm47xxpart partitions found on MTD device physmap-flash.0 [ 2.350000] Creating 6 MTD partitions on "physmap-flash.0": [ 2.350000] 0x000000000000-0x000000040000 : "boot" [ 2.360000] 0x000000040000-0x000001fe0000 : "firmware" [ 2.370000] 0x00000004001c-0x00000004090c : "loader" [ 2.370000] 0x00000004090c-0x00000014b400 : "linux" [ 2.380000] 0x00000014b400-0x000001fe0000 : "rootfs" [ 2.390000] mtd: device 4 (rootfs) set to be root filesystem [ 2.390000] 1 squashfs-split partitions found on MTD device rootfs [ 2.400000] 0x000000380000-0x000001fe0000 : "rootfs_data" [ 2.400000] 0x000001fe0000-0x000002000000 : "nvram" [ 2.410000] bcm47xxnflash: Requested invalid id_data: 32 [ 2.420000] bcm47xxnflash: Requested invalid id_data: 64 [ 2.420000] nand: No NAND device found [ 2.430000] bcm47xxnflash: Could not scan NAND flash: -19 [ 2.430000] bcm47xxnflash: Initialization failed: -19 [ 2.440000] bgmac bcma0:1: Found PHY addr: 30 (NOREGS) [ 2.440000] bgmac bcma0:1: Support for Roboswitch not implemented [ 2.470000] libphy: bgmac mii bus: probed [ 2.620000] b53_common: found switch: BCM53125, rev 4 [ 2.630000] bgmac: Broadcom 47xx GBit MAC driver loaded [ 2.640000] bcm47xx-wdt bcm47xx-wdt.0: BCM47xx Watchdog Timer enabled (30 seconds) [ 2.640000] TCP: cubic registered [ 2.650000] NET: Registered protocol family 17 [ 2.650000] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this. [ 2.670000] Bridge firewalling registered [ 2.670000] 8021q: 802.1Q VLAN Support v1.8 [ 2.680000] VFS: Mounted root (squashfs filesystem) readonly on device 31:4. [ 2.690000] Freeing unused kernel memory: 172K (80305000 - 80330000) [ 3.570000] init: Console is alive [ 3.580000] init: - watchdog - [ 4.580000] init: - preinit - [ 5.000000] random: procd urandom read with 7 bits of entropy available Press the [f] key and hit [enter] to enter failsafe mode Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level [ 6.680000] eth0: Link is Up - 1Gbps/Full - flow control off [ 8.310000] jffs2: notice: (236) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found. [ 8.330000] mount_root: switching to jffs2 overlay [ 8.360000] procd: - early - [ 8.360000] procd: - watchdog - [ 9.180000] procd: - ubus - [ 10.190000] procd: - init - Please press Enter to activate this console. [ 11.570000] NET: Registered protocol family 10 [ 11.580000] ip6_tables: (C) 2000-2006 Netfilter Core Team [ 11.600000] Loading modules backported from Linux version master-2015-03-09-0-g141f155 [ 11.610000] Backport generated by backports.git backports-20150129-0-gdd4a670 [ 11.620000] ip_tables: (C) 2000-2006 Netfilter Core Team [ 11.630000] nf_conntrack version 0.5.0 (1976 buckets, 7904 max) [ 11.670000] xt_time: kernel timezone is -0000 [ 11.700000] cfg80211: Calling CRDA to update world regulatory domain [ 11.730000] cfg80211: World regulatory domain updated: [ 11.730000] cfg80211: DFS Master region: unset [ 11.740000] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time) [ 11.750000] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A) [ 11.750000] cfg80211: (2457000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A) [ 11.760000] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm), (N/A) [ 11.770000] cfg80211: (5170000 KHz - 5250000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A) [ 11.780000] cfg80211: (5250000 KHz - 5330000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (0 s) [ 11.790000] cfg80211: (5490000 KHz - 5730000 KHz @ 160000 KHz), (N/A, 2000 mBm), (0 s) [ 11.800000] cfg80211: (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A) [ 11.810000] cfg80211: (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm), (N/A) [ 11.860000] PPP generic driver version 2.4.2 [ 11.870000] NET: Registered protocol family 24 [ 11.890000] b43-phy0: Broadcom 4331 WLAN found (core revision 29) [ 11.900000] b43-phy0: Found PHY: Analog 9, Type 7 (HT), Revision 1 [ 11.900000] b43-phy0: Found Radio: Manuf 0x17F, ID 0x2059, Revision 0, Version 1 [ 11.910000] b43-phy1: Broadcom 4331 WLAN found (core revision 29) [ 11.990000] b43-phy1: Found PHY: Analog 9, Type 7 (HT), Revision 1 [ 11.990000] b43-phy1: Found Radio: Manuf 0x17F, ID 0x2059, Revision 0, Version 1 [ 12.000000] b43-phy1 warning: 5 GHz band is unsupported on this PHY [ 12.010000] b43-phy1 ERROR: b43 can't support any band on this device [ 12.010000] b43: probe of bcma2:1 failed with error -122 [ 12.020000] Broadcom 43xx driver loaded [ Features: NL ] [ 16.770000] eth0: Link is Up - 1Gbps/Full - flow control off [ 20.150000] device eth0.1 entered promiscuous mode [ 20.160000] device eth0 entered promiscuous mode [ 20.170000] br-lan: port 1(eth0.1) entered forwarding state [ 20.170000] br-lan: port 1(eth0.1) entered forwarding state [ 21.890000] eth0: Link is Up - 1Gbps/Full - flow control off [ 22.170000] br-lan: port 1(eth0.1) entered forwarding state [ 22.960000] b43-phy0: Loading firmware version 666.2 (2011-02-23 01:15:07) [ 23.670000] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready [ 23.680000] device wlan0 entered promiscuous mode [ 23.770000] br-lan: port 2(wlan0) entered forwarding state [ 23.780000] br-lan: port 2(wlan0) entered forwarding state [ 23.780000] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready [ 25.780000] br-lan: port 2(wlan0) entered forwarding state ��.n��������+%������w��{.n�����{���zW����ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f