Taming the Broadcom b43 wifi chip (specifically BCM43225)

Share your own howto's etc. Not for support questions!

Taming the Broadcom b43 wifi chip (specifically BCM43225)

Postby evoblade » 2016-07-02 03:33

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.
evoblade
 
Posts: 1
Joined: 2016-07-02 02:55

Return to Docs, Howtos, Tips & Tricks

Who is online

Users browsing this forum: No registered users and 3 guests

fashionable