# Struck a wall with Broadcom BCM4312 Wifi (using NDIS)



## heb (Mar 26, 2014)

I've struck a wall in my efforts to get the Broadcom BCM4312 Wifi in my laptop to work. 

With the handbook as a starting point I have tried the following:

Using the bwn(4) driver (remembering to load bwn_v4_ucode or bwn_v4_lp_ucode first). It produces the following output from ifconfig (using either module for firmware):


```
root@trygvelie:/boot/modules # kldload bwn_v4_ucode
root@trygvelie:/boot/modules # kldload if_bwn
root@trygvelie:/boot/modules # ifconfig
nfe0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=82008<VLAN_MTU,WOL_MAGIC,LINKSTATE>
	ether 00:1e:68:8b:aa:24
	inet 192.168.1.109 netmask 0xffffff00 broadcast 192.168.1.255 
	nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
	media: Ethernet autoselect (100baseTX <full-duplex>)
	status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
	options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
	inet6 ::1 prefixlen 128 
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2 
	inet 127.0.0.1 netmask 0xff000000 
	nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
root@trygvelie:/boot/modules #
```

and the following is added in /var/log/messages:


```
Mar 26 19:02:23 trygvelie kernel: siba_bwn0: <Unknown> mem 0xf2000000-0xf2003fff,0xf2500000-0xf25fffff irq 16 at device 0.0 on pci3
Mar 26 19:02:23 trygvelie kernel: siba_bwn0: warn: multiple PCI(E) cores
Mar 26 19:02:23 trygvelie kernel: siba_bwn0: unsupported coreid (USB 1.1 Host)
```

That not being much of a success I went to the Broadcom NDIS HOWTO on this forum. Following the steps in there I got a bit more success:


```
root@trygvelie:/boot/modules # kldload bcmwl564_sys.ko 
root@trygvelie:/boot/modules # ifconfig
nfe0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=82008<VLAN_MTU,WOL_MAGIC,LINKSTATE>
	ether 00:1e:68:8b:aa:24
	inet 192.168.1.109 netmask 0xffffff00 broadcast 192.168.1.255 
	nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
	media: Ethernet autoselect (100baseTX <full-duplex>)
	status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
	options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
	inet6 ::1 prefixlen 128 
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2 
	inet 127.0.0.1 netmask 0xff000000 
	nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
ndis0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 2290
	ether 00:21:00:1f:1c:f1
	nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
	media: IEEE 802.11 Wireless Ethernet autoselect (autoselect)
	status: no carrier
wlan0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
	ether 00:21:00:1f:1c:f1
	nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
	media: IEEE 802.11 Wireless Ethernet autoselect
	ssid "" channel 1 (2412 MHz 11b)
	country US authmode OPEN privacy OFF txpower 0 bmiss 7 scanvalid 60
	bintval 0
root@trygvelie:/boot/modules #
```

Loading the kernel modules does seem to generate some interesting stuff in /var/log/messages, which somehow does seem to relate, but I can't quite figure out how:


```
Mar 26 19:09:39 trygvelie kernel: ndis0: <Broadcom 802.11n Network Adapter> mem 0xf2000000-0xf2003fff,0xf2500000-0xf25fffff irq 16 at device 0.0 on pci3
Mar 26 19:09:39 trygvelie kernel: ndis0: NDIS API version: 5.1
Mar 26 19:09:40 trygvelie devd: Executing '/etc/pccard_ether ndis0 start'
Mar 26 19:09:40 trygvelie kernel: wlan0: Ethernet address: 00:21:00:1f:1c:f1
Mar 26 19:09:40 trygvelie devd: Executing '/etc/pccard_ether ndis0 start'
Mar 26 19:10:00 trygvelie devd: Executing 'logger Unknown USB device: vendor 0x0c45 product 0x62c0 bus uhub0'
Mar 26 19:10:00 trygvelie root: Unknown USB device: vendor 0x0c45 product 0x62c0 bus uhub0
Mar 26 19:10:00 trygvelie devd: Executing 'logger Unknown USB device: vendor 0x0c45 product 0x62c0 bus uhub0'
Mar 26 19:10:00 trygvelie root: Unknown USB device: vendor 0x0c45 product 0x62c0 bus uhub0
Mar 26 19:10:00 trygvelie devd: Executing 'logger Unknown USB device: vendor 0x08ff product 0x2580 bus uhub1'
Mar 26 19:10:00 trygvelie root: Unknown USB device: vendor 0x08ff product 0x2580 bus uhub1
Mar 26 19:10:00 trygvelie devd: Executing 'logger Unknown USB device: vendor 0x0c45 product 0x62c0 bus uhub0'
Mar 26 19:10:00 trygvelie root: Unknown USB device: vendor 0x0c45 product 0x62c0 bus uhub0
Mar 26 19:10:00 trygvelie devd: Executing 'logger Unknown USB device: vendor 0x0c45 product 0x62c0 bus uhub0'
Mar 26 19:10:00 trygvelie root: Unknown USB device: vendor 0x0c45 product 0x62c0 bus uhub0
Mar 26 19:10:00 trygvelie devd: Executing '/etc/pccard_ether wlan0 start'
```

And trying to do a scan does... well nothing:


```
root@trygvelie:/boot/modules # ifconfig wlan0 up list scan
root@trygvelie:/boot/modules #
```

I have then looked into wlandebug(8):


```
root@trygvelie:/boot/modules # wlandebug -i wlan0 scan+auth+assoc
net.wlan.0.debug: 0x0 => 0xe00000<assoc,auth,scan>
root@trygvelie:/boot/modules # ifconfig wlan0 list scan
root@trygvelie:/boot/modules #
```

That does generate a lot of stuff in /var/log/messages, but nothing useful as far as I can see:


```
Mar 26 19:18:04 trygvelie kernel: wlan0: sta_pick_bss: no scan candidate
Mar 26 19:18:04 trygvelie kernel: wlan0: scan_task: done, restart [ticks 674724, dwell min 20 scanend 2148155360]
Mar 26 19:18:04 trygvelie kernel: wlan0: scan_task: chan   1g ->   1g [active, dwell min 20ms max 200ms]
Mar 26 19:18:07 trygvelie kernel: wlan0: sta_pick_bss: no scan candidate
Mar 26 19:18:07 trygvelie kernel: wlan0: scan_task: done, restart [ticks 677754, dwell min 20 scanend 2148158375]
Mar 26 19:18:07 trygvelie kernel: wlan0: scan_task: chan   1g ->   1g [active, dwell min 20ms max 200ms]
Mar 26 19:18:10 trygvelie kernel: wlan0: sta_pick_bss: no scan candidate
Mar 26 19:18:10 trygvelie kernel: wlan0: scan_task: done, restart [ticks 680777, dwell min 20 scanend 2148161405]
Mar 26 19:18:10 trygvelie kernel: wlan0: scan_task: chan   1g ->   1g [active, dwell min 20ms max 200ms]
Mar 26 19:18:13 trygvelie kernel: wlan0: sta_pick_bss: no scan candidate
Mar 26 19:18:13 trygvelie kernel: wlan0: scan_task: done, restart [ticks 683810, dwell min 20 scanend 2148164428]
Mar 26 19:18:13 trygvelie kernel: wlan0: scan_task: chan   1g ->   1g [active, dwell min 20ms max 200ms]
Mar 26 19:18:16 trygvelie kernel: wlan0: sta_pick_bss: no scan candidate
Mar 26 19:18:16 trygvelie kernel: wlan0: scan_task: done, restart [ticks 686839, dwell min 20 scanend 2148167461]
Mar 26 19:18:16 trygvelie kernel: wlan0: scan_task: chan   1g ->   1g [active, dwell min 20ms max 200ms]
Mar 26 19:18:19 trygvelie kernel: wlan0: sta_pick_bss: no scan candidate
Mar 26 19:18:19 trygvelie kernel: wlan0: scan_task: done, restart [ticks 689873, dwell min 20 scanend 2148170490]
Mar 26 19:18:19 trygvelie kernel: wlan0: scan_task: chan   1g ->   1g [active, dwell min 20ms max 200ms]
Mar 26 19:18:22 trygvelie kernel: wlan0: sta_pick_bss: no scan candidate
Mar 26 19:18:22 trygvelie kernel: wlan0: scan_task: done, restart [ticks 692883, dwell min 20 scanend 2148173524]
Mar 26 19:18:22 trygvelie kernel: wlan0: scan_task: chan   1g ->   1g [active, dwell min 20ms max 200ms]
Mar 26 19:18:25 trygvelie kernel: wlan0: sta_pick_bss: no scan candidate
Mar 26 19:18:25 trygvelie kernel: wlan0: scan_task: done, restart [ticks 695930, dwell min 20 scanend 2148176534]
Mar 26 19:18:25 trygvelie kernel: wlan0: scan_task: chan   1g ->   1g [active, dwell min 20ms max 200ms]
Mar 26 19:18:28 trygvelie kernel: wlan0: sta_pick_bss: no scan candidate
Mar 26 19:18:28 trygvelie kernel: wlan0: scan_task: done, restart [ticks 698965, dwell min 20 scanend 2148179581]
Mar 26 19:18:28 trygvelie kernel: wlan0: scan_task: chan   1g ->   1g [active, dwell min 20ms max 200ms]
Mar 26 19:18:31 trygvelie kernel: wlan0: sta_pick_bss: no scan candidate
Mar 26 19:18:31 trygvelie kernel: wlan0: scan_task: done, restart [ticks 702002, dwell min 20 scanend 2148182616]
Mar 26 19:18:31 trygvelie kernel: wlan0: scan_task: chan   1g ->   1g [active, dwell min 20ms max 200ms]
Mar 26 19:18:34 trygvelie kernel: wlan0: sta_pick_bss: no scan candidate
Mar 26 19:18:34 trygvelie kernel: wlan0: scan_task: done, restart [ticks 705031, dwell min 20 scanend 2148185653]
Mar 26 19:18:34 trygvelie kernel: wlan0: scan_task: chan   1g ->   1g [active, dwell min 20ms max 200ms]
Mar 26 19:18:37 trygvelie kernel: wlan0: sta_pick_bss: no scan candidate
Mar 26 19:18:37 trygvelie kernel: wlan0: scan_task: done, restart [ticks 708058, dwell min 20 scanend 2148188682]
Mar 26 19:18:37 trygvelie kernel: wlan0: scan_task: chan   1g ->   1g [active, dwell min 20ms max 200ms]
```

I haven't gone into meddling with wpa_supplicant and dhclient as they as far as I can see, have no effect at this stage. I have also tried switching on and off the physical button on the laptop, but it doesn't seem to affect my scanning ability. It does generate the following in /var/log/messages, but I do believe that is related to the Bluetooth device and not the WiFi device:


```
Mar 26 19:24:05 trygvelie kernel: ubt0: ubt_bulk_read_callback:979: bulk-in transfer failed: USB_ERR_IOERROR
Mar 26 19:24:05 trygvelie kernel: ugen0.3: <Broadcom Corp> at usbus0 (disconnected)
Mar 26 19:24:05 trygvelie kernel: ubt0: ubt_intr_read_callback:879: interrupt transfer failed: USB_ERR_IOERROR
Mar 26 19:24:05 trygvelie kernel: ubt0: at uhub1, port 3, addr 3 (disconnected)
Mar 26 19:24:05 trygvelie devd: Executing '/etc/rc.d/bluetooth quietstop ubt0'
Mar 26 19:24:15 trygvelie kernel: ugen0.3: <Broadcom Corp> at usbus0
Mar 26 19:24:15 trygvelie kernel: ubt0: <Broadcom Corp HP Integrated Module, class 224/1, rev 2.00/1.00, addr 3> on usbus0
Mar 26 19:24:15 trygvelie devd: Executing 'env LD_PRELOAD=/usr/local/lib/libhal.so:/usr/local/lib/libdbus-1.so:/usr/local/lib/libcuse4bsd.so /usr/local/etc/rc.d/webcamd start ugen0.3'
Mar 26 19:24:15 trygvelie devd: Executing '/etc/rc.d/bluetooth quietstart ubt0'
Mar 26 19:24:15 trygvelie devd: Executing 'logger Unknown USB device: vendor 0x03f0 product 0x171d bus uhub1'
Mar 26 19:24:15 trygvelie root: Unknown USB device: vendor 0x03f0 product 0x171d bus uhub1
Mar 26 19:24:15 trygvelie devd: Executing 'logger Unknown USB device: vendor 0x03f0 product 0x171d bus uhub1'
Mar 26 19:24:15 trygvelie root: Unknown USB device: vendor 0x03f0 product 0x171d bus uhub1
```

As I have now run out of inspiration and ideas (and may simply have missed out on the obvious) on how to debug and progress further, any ideas and inspiration would be greatly appreciated.

System information:

HP Pavillion DV9700 (service code DV9820EO)


```
root@trygvelie:~ # uname -a
FreeBSD trygvelie.dyndns.dk 10.0-RELEASE FreeBSD 10.0-RELEASE #0 r260789: Thu Jan 16 22:34:59 UTC 2014     root@snap.freebsd.org:/usr/obj/usr/src/sys/GENERIC  amd64
root@trygvelie:~ #
```

pciconf identifies the device as:


```
none7@pci0:3:0:0:	class=0x028000 card=0x1367103c chip=0x432814e4 rev=0x03 hdr=0x00
    vendor     = 'Broadcom Corporation'
    device     = 'BCM4321 802.11a/b/g/n'
    class      = network
```

dmesg output

In kind regards,
Henrik


----------



## kusanagiyang (Aug 12, 2015)

Hello.
Have you ever got to the bottom of this?  I have a Dell D630 BCM4321 and can't get it to work ;(


----------



## allabtzz (Aug 12, 2015)

kusanagiyang said:


> Hello.
> Have you ever got to the bottom of this?  I have a Dell D630 BCM4321 and can't get it to work ;(



Hi
I got it working on a Dell 1545 laptop but it continuously filled the screen with

```
bwn0: RX decryption attempted (old 0 keyidx 0x1)
```
So I gave up and went back to the NIC card. I searched the net for days and found no answer why it does this.


----------

