# Unable to Connect to Network with Broadcom 4311 NIC

## accy

Hello, I'd like to say I was looking forward to installing Gentoo without ever having to ask for help, but I'm about as stumped as I can be right now.   :Rolling Eyes: 

I have a Broadcom 4311 card and I'm running b43 and ssb. I have wireless connectivity, as in, I can scan for networks and see my home network from wpa_supplicant. I can even initiate a contact with it, but I can't actually connect to the network. I get a 169.254 IP address. Setting a static IP does not fix the issue, so I don't think DHCP is the issue.

If I run the command 

```
wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf
```

I see the following:

```
Successfully initialized wpa_supplicant

wlan0: SME: trying to associate with [bssid]

wlan0: associated with [bssid]

wlan0: ctrl-event-subnet-status-update status=0

wlan0: wpa: key negotiation completed with [bssid] [PTK=CCMP GTK=CCMP]

wlan0: ctrl-event-connected - connection to [bssid] completed

syslogd: /var/log/news/news.crit: no such file or directory

syslogd: /var/log/news/news.err: no such file or directory

syslogd: /var/log/news/news.notice: no such file or directory

syslogd: /dev/xconsole: no such file or directory

```

And it hangs here forever. So when I press CTRL+C I get the following output:

```
wlan0: ctrl-event-disconnected bssid=[bssid] reason=3 locally_generated=1

nl80211: failed to open /proc/sys/net/ipv4/conf/wlan0/drop_unicast_in_l2_multicast: No such file or directory

nl80211: failed to set IPv4 unicast in mulitcast filter

nl80211: failed to open /proc/sys/net/ipv4/conf/wlan0/drop_unicast_in_l2_multicast: No such file or directory

nl80211: failed to set IPv4 unicast in mulitcast filter

nl80211: failed to open /proc/sys/net/ipv4/conf/wlan0/drop_unicast_in_l2_multicast: No such file or directory

nl80211: failed to set IPv4 unicast in mulitcast filter

wlan0: deinit ifname=wlan0 disabled_11b_rates=0

wlan0: ctrl-event-terminating

```

Whatever is causing this error seems to be the issue, but I don't know what it could be. I googled it and found this thread:

https://forums.gentoo.org/viewtopic-t-1056252.html?sid=0da021ef4200c14c24da2707cf802a04

but it was not particularly helpful for my issue

I can start the wpa_supplicant service without any issue, but then when I run dhcpcd I get the IP: 169.254.159.160

I tried requesting a proper IP but it did not work. I then tried setting a static IP that would not interfere with the network, but it was still unable to ping other devices on the network.

My wpa_supplicant.conf file looks like this:

```

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

update_config=1

eapol_version=1

network={

ssid="ssid"

#psk="psk"

psk=912850928509125821095udlkfjf;ljasdf

key_mgmt=WPA_PSK

}
```

'

Also note that ndiswrapper and broadcom-sta do not work for me

----------

## Logicien

Hello,

You need to have the 80211 and the wext extensions activated in the kernel for wpa_supplicant. I compile in modules everything not absolutely needed to be in the kernel image to boot properly. It is particularly important if a support need some firmware files who are only available in the real root filesystem after it is mounted at boot time.

b43 need firmware files to work. If you compile it in the kernel image, you need to put these firmware files in the kernel image too. Otherwise b43 can fail to drive your Broadcom wireless card.

When compile in module you can see which firmware files b43 need and verify if they are available in /lib/firmware with the command

```
modinfo b43
```

Are you sure that these firmware files have been emerged?

You may need to pass some parameters to b43 like btcoex for Bluetooth. What you need to do is to verify if iwconfig say that you are associated after wpa_supplicant is started. If not, dhcpcd will not be able to receive an Ip configuration from the Dhcp server. So open a root session and do

```
wpa_supplicant -B -c /etc/wpa_supplicant/wpa_supplicant.conf -D nl80211,wext -dd -f /var/log/wpa.log -i wlan0 -t
```

Wait some seconds and do

```
iwconfig wlan0
```

If associated than do

```
dhcpcd wlan0
```

I suppose that /etc/dhcpcd.conf have not been personnalised. You can check wpa_supplicant messages with

```
less /var/log/wpa.log
```

If not associated, it may be /etc/wpa_supplicant/wpa_supplicant.conf who need changes. broadcom-sta generally work but the ndiswrapper often fail and should be use last.

----------

## charles17

 *accy wrote:*   

> ... I get a 169.254 IP address. Setting a static IP does not fix the issue, 

 For 169.254 IP address see https://wiki.gentoo.org/wiki/Wifi#Troubleshooting.

----------

## accy

Hello, thanks for the response. 

 *Logicien wrote:*   

> Hello,
> 
> You need to have the 80211 and the wext extensions activated in the kernel for wpa_supplicant. I compile in modules everything not absolutely needed to be in the kernel image to boot properly. It is particularly important if a support need some firmware files who are only available in the real root filesystem after it is mounted at boot time.
> 
> b43 need firmware files to work. If you compile it in the kernel image, you need to put these firmware files in the kernel image too. Otherwise b43 can fail to drive your Broadcom wireless card.
> ...

 

I have cgf80211, mac80211, and cfg80211 wext built in to the kernel. 

I have the firmware modinfo lists, and dmesg also says that I have loaded the b43 firmware.

 *Logicien wrote:*   

> 
> 
> You may need to pass some parameters to b43 like btcoex for Bluetooth. What you need to do is to verify if iwconfig say that you are associated after wpa_supplicant is started. If not, dhcpcd will not be able to receive an Ip configuration from the Dhcp server. So open a root session and do
> 
> ```
> ...

 

After initializing wpa_supplicant, I do associate with the network.

 *Logicien wrote:*   

> 
> 
> If associated than do
> 
> ```
> ...

 

This is where I get the bad IP, so it appears to be dhcpcd after all. I haven't edited the dhcpcd config file.

 *charles17 wrote:*   

>  *accy wrote:*   ... I get a 169.254 IP address. Setting a static IP does not fix the issue,  For 169.254 IP address see https://wiki.gentoo.org/wiki/Wifi#Troubleshooting.

 

I'm a little confused by this. The resource about 169.254 IP addresses seems to be an unresolved issue. He does seem to be having the same problem as me though.

----------

## charles17

Maybe you could check your router's log to find out what's wrong.  Are you dual booting and the device is already known to the router from another operating system?  Sometimes deleting the computer from the router's list of known devices helps to solve that kind of problem.

If not, could you please provide the lspci -k and dmesg info as described in https://wiki.gentoo.org/wiki/Wifi#dmesg?

----------

## NeddySeagoon

accy,

Put your entire dmesg output onto a pastebin site please.

If you have wired networking 

```
dmesg | wgetpaste
```

will work after you install wgetpaste.

Post the link.

----------

## accy

Greatly apologize for the late response; real life caught up with me for a hot second.

```
dmesg | grep -i -E '0c:00.0|b43|80211'
```

http://dpaste.com/3H552YN

```
dmesg
```

http://dpaste.com/0X4GVPF

```
lspci -k
```

http://dpaste.com/26PV2QR

"Dave'sNetwork Guest" is a bit of an inside joke if you were wondering

----------

## NeddySeagoon

accy,

That all looks good.

```
[   17.083437] wlan0: authenticate with 98:de:d0:21:4a:9d

[   17.102183] wlan0: send auth to 98:de:d0:21:4a:9d (try 1/3)

[   17.105031] wlan0: authenticated

[   17.106109] wlan0: associate with 98:de:d0:21:4a:9d (try 1/3)

[   17.112233] wlan0: RX AssocResp from 98:de:d0:21:4a:9d (capab=0x431 status=0 aid=1)

[   17.112611] wlan0: associated
```

That's the hard bit. It shows the the extra bits for wifi (over wired) have completed successfully.

You have the broadcom debug for your wifi on.  Turn that off as often, debug prevents normal operation.

Its intended for developers.

There are no signs in dmesg that wlan0 ever attempted to get an IP address. 

After the authentication and association, did the system turm off the wireless transmitter?

What does rfkill say?

----------

## Logicien

Maybe there is already a Dhcp client active who prevent to get a good Ip address. You must verify that no Dhcp client and no instance of wpa_supplicant are active before start wpa_supplicant and dhcpcd.

What I often do is to grep ps with network keywords

```
ps aux | grep -i -e dh -e net -e wpa
```

You need to stop those processes.

As charles17 said, I would poweroff the computer, reset or poweroff and poweron the router to be sure that the MAC address of your wireless card is not already busy in the router.  Only than I would boot to Gentoo. Check your router configuration too.

----------

## NeddySeagoon

Logicien,

As the wifi did the authentication and association, wpa_supplicant did its thing.

There is no disconnect/reconnect cycle, which is common when several network managers try to control the same interface.

From dmesg, it looks like wpa_supplicant did its thing, then everything stopped.

However, the interface has a link-local address, so its not that simple either.

----------

## Logicien

True NeddySeagoon,

I was just saying the method I use. Maybe accy should show us the output of

```
iwconfig wlan0
```

after wpa_supplicant associated the interface and before he start dhcpcd. Instead, he can try to get an Ip configuration with

```
dhclient -v wlan0
```

dhclient tell in the output when he receive no offer.

----------

## accy

I reset my router and am sure the device isn't busy.

```
iwconfig
```

```
IEEE 802.11bg     ESSID:"Dave'sNetwork"

Mode:Managed     Frequency:2.427 GHz   Access Point: 98:DE:D0:21:4A:9D

Bit Rate=9 Mb/s     Tx-Power=20 dBm

Retry short limit:7         RTS thr:off   Fragment thr:off

Encryption key:off

Power Management:off

Link Quality=70/70   Signal level=-16 dBm

Rx invalid nwid:0   Rx invalid crypt:0   Rx invalid frag:0

Tx excessive retries:0   Invalid misc:57      Missed beacon:0
```

```
dhclient -v wlan0
```

```
Listening on LPF/wlan0/00:1a:92:ab:b2

Sending on LPF/wlan0/00:1a:92:ab:b2

Sending on Socket/fallback

DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7

DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 11

DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 15

DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 13

DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 15

No DHCPOFFERS received.

No working leases in persistent database - sleeping.
```

This one seems to show that there is at least a problem!

I will try connecting to a friend's wifi sometime today and let you guys know how that goes.

----------

## accy

It worked from my friend'a house! I guess the problem then lies with my router, but I can't imagine why it would. My wireless had no problem when running Arch Linux.

----------

## Logicien

If your router had registrated the MAC address of your Broadcom wireless card for ArchLinux it may not be available for any other operating system using this wireless card unless you reset the router or you enter in it's configuration interface to remove the busy MAC address of your Broadcom wireless card. Than Gentoo can registrate this MAC address for itself and get an Ip configuration from the router.

An alternative possibility is to boot on a live media and try to get connected to your router and get an Ip configuration using your Broadcom wireless card. If the live media succeed, your problem can come from your Gentoo configuration.

----------

## NeddySeagoon

accy,

I suspect its as Logicien says.  Your router believes your WiFi has a valid lease, so its refusing to give out another lease to the same MAC address..

That can happen when the system does not surrender its lease on shutdown.

There is a hack/test for this.

Run ifconfig -a and make a note of the wlan0 MAC address. 

```
ether 00:e0:4c:69:15:09  txqueuelen 1000  (Ethernet)
```

Edit /etc/conf.d/net to contain a line like

```
mac_wlan0="b8:27:eb:7d:65:ab"
```

So its different to the MAC address from ifconfig.

Your router will believe its a new device asking for network settings.

The real fix is to make the router drop the lease.  It will probably do that if you power cycle it.

----------

## accy

 *NeddySeagoon wrote:*   

> accy,
> 
> I suspect its as Logicien says.  Your router believes your WiFi has a valid lease, so its refusing to give out another lease to the same MAC address..
> 
> That can happen when the system does not surrender its lease on shutdown.
> ...

 

I do not believe this to be the issue.

I have power cycled the router, changed my MAC address, and even tried reserving an IP for my interface's MAC address in the router. Still get a link local IP.

The router config only shows two devices connected (my phone and desktop pc) and the DHCP leases are set to only last 120 minutes anyway.  

At least we can take comfort in the fact that broadcom went out of business   :Laughing: 

Here's something of interest. 

When I use DHClient now, I see I get a DHCPNAK from 192.168.0.1 (router IP). I also see this in the system log:

http://i.imgur.com/BSi8Mcy.png

The router is recognizing my DHCPDISCOVERS and trying to give me an IP. It will even honor it if I give this MAC a reserved IP.

Yet I don't get an IP on my laptop and DHClient closes with "No DHCPOFFERS received."

----------

