Scheduled Maintenance: We are aware of an issue with Google, AOL, and Yahoo services as email providers which are blocking new registrations. We are trying to fix the issue and we have several internal and external support tickets in process to resolve the issue. Please see: viewtopic.php?t=158230

 

 

 

Taming the Broadcom b43 wifi chip (specifically BCM43225)

Share your HowTo, Documentation, Tips and Tricks. Not for support questions!.
Post Reply
Message
Author
evoblade
Posts: 1
Joined: 2016-07-02 02:55

Taming the Broadcom b43 wifi chip (specifically BCM43225)

#1 Post by evoblade »

So I just spent several hours getting my Broadcom b43 wifi chip online on my Scooter computer that I made into a Linux router.
It was a frustrating experience. And I would like to save anyone who is trying to do some of the same things some of the headache I suffered. I want to make a standard disclaimer that I am not an expert, but what I will be going over worked for me.

The hardware:
* EGLOBAL single board PC with i5-5200U. Basically this one, but it might have been a different listing.

* Broadcom BCM43225 WIFI N + BT 3.0 chip (this was an inexpensive upgrade from whatever would have come with the computer otherwise, after all I went through, I am not necessarily convinced it is an upgrade.)

* 8GB RAM (Amazon)

* 120 GB Kingston SSD (Amazon)

---

Let me start off by saying, I wish I had not bothered with "upgrading" to the WIFI + BT module instead of the other WIFI module, because it probably would have been the one advertised as 300M, implying 5.0 GHz wifi and therefore probably a newer 802.11ab device. That said, lets get started.

I spent a long, frustrating evening trying to get this to work under CentOS 7.2. After that failed (attempting to the wl module, from Broadcom), I installed Debian, since some searching seemed to indicate that might work. Basically, I kept seeing a bunch of weird messages using the brmcsmac module and I really wanted to use the b43 one instead. brmcsmac could see APs, but I couldn't get it to connect.

It might be a good idea to go ahead and su to root, because all of these steps require it anyway. Your choice.

The main steps are:

1. install b43 firmware

Code: Select all

sudo apt-get install firmware-b43-installer
ref: http://linuxwireless.org/en/users/Drive ... u.2FDebian

2. blacklist brcsmac

Code: Select all

sudo modprobe -r brcmsmac bcma
sudo modprobe b43
echo "blacklist drivername" | sudo tee -a /etc/modprobe.d/blacklist-broadcom-wireless.conf
sudo update-initramfs -u
You might get an error saying bcma is in use and can't be unloaded. If that is the case, just issue the command again without bcma.

(Debian is often configured not to use sudo by default, in that case just get rid of the "sudo"s)

ref: https://help.ubuntu.com/community/WifiD ... en_drivers

3. Configure the b43 kernel module

create a file /etc/modprobe.d/local-b43.conf containing the lines

Code: Select all

# Activate experimental support for some hardware revisions
options b43 allhwsupport=1
To make the settings come into effect, turn off networking and unload then reload the module with the commands

Code: Select all

rmmod b43
modprobe b43
ref: http://ubuntuforums.org/showthread.php? ... st13037208 or its source: http://unix.stackexchange.com/questions ... iver-error

4. Manually bring up your interface

Find your wireless interface and bring it up:

Code: Select all

ip a
iwconfig
ip link set wlan0 up
Scan for available networks and get network details:

Code: Select all

iwlist scan
ref: https://wiki.debian.org/WiFi/HowToUse#Command_Line

5. wpa_supplicant install and make psk

Code: Select all

aptitude update
aptitude install wpasupplicant
Restrict the permissions of /etc/network/interfaces, to prevent pre-shared key (PSK) disclosure (alternatively use a separate config file such as /etc/network/interfaces.d/wlan0 on newer Debian versions):

Code: Select all

chmod 0600 /etc/network/interfaces
Use the WPA passphrase to calculate the correct WPA PSK hash for your SSID by altering the following example:

Code: Select all

wpa_passphrase myssid my_very_secret_passphrase
If you don't put the passphrase on the command line, it will be prompted for. The above command gives the output:
(If you need to find or confirm your desired SSID see here. The short version is to use iwconfig iwlist scan

Code: Select all

network={
        ssid="myssid"
        #psk="my_very_secret_passphrase"
        psk=ccb290fd4fe6b22935cbae31449e050edd02ad44627b16ce0151668f5f53c01b
}
you'll need to copy from "psk=" to the end of the line, to put in your /etc/network/interfaces file.

ref: https://wiki.debian.org/WiFi/HowToUse#wpa_supplicant

6. Open /etc/network/interfaces in a text editor (i prefer nano or vim):

Code: Select all

nano /etc/network/interfaces
Define appropriate stanzas for your wireless interface, along with the SSID and PSK HASH. For example :

Code: Select all

auto wlan0
iface wlan0 inet dhcp
        wpa-ssid myssid
        wpa-psk ccb290fd4fe6b22935cbae31449e050edd02ad44627b16ce0151668f5f53c01b
The "auto" stanza will bring your interface up at system startup. If not desired, remove or comment this line.
Save the file and exit the editor.

Bring your interface up. This will start wpa_supplicant as a background process.

Code: Select all

ifup wlan0
ref: https://wiki.debian.org/WiFi/HowToUse#wpa_supplicant

I hope this all makes sense. I included my references for two reasons. The first is that I want to give credit where credit is due and I pretty much copied the linked pages (with some minor modifications). Secondly, I may have missed something, but I'm pretty sure the links I provided will give you all of the information you will need to know.

Post Reply