Reported at GitHub. Please comment there.
If your Broadcom wireless adapter driver is detected as "bcma-pci-bridge" or "b43-pci-bridge", your driver has likely been installed incorrectly.
Examples:
Kernel driver in use: bcma-pci-bridge
Kernel modules: bcma
Kernel driver in use: b43-pci-bridge
Kernel modules: ssb
If your WiFi connection is not working correctly you will need an alternate means to connect to the internet. You can use a wired LAN connection if your computer has a wired NIC (and a connection is available). The other alternative for wired connectivity is a USB to Ethernet adapter if you have one available.
If a wired connection is not an option then you have at least several other wireless connectivity options. If you have an older (but slower) USB WiFi dongle available with built in kernel support this is a good option to use temporarily. The other option that is widely used is Android USB phone tethering. Ensure you have an alternate working connection to install required packages before attempting to replace any currently installed driver.
Drivers detected as "bcma-pci-bridge"
If your driver is detected as "bcma-pci-bridge", use the following steps below to hopefully improve your WiFi. For this procedure to work your adapter should be included in the broadcom-wl supported chipsets list below.
You will need to uninstall the currently installed dysfunctional driver to correct this issue.
The driver most likely installed by default is the broadcom-wl driver. You can check if the broadcom-wl driver is already installed with the following command:
mhwd -li
If the broadcom-wl driver is installed then uninstall it with the command below:
sudo mhwd -r pci network-broadcom-wl
If you have a different broadcom WiFi driver installed you can remove it through your graphical package manager (Octopi or Pamac). Driver modules such as b43, brcm80211, brcmfmac, brcmsmac, bcma, and ssb are included in the kernel and can not be uninstalled. Kernel modules must be blacklisted rather than uninstalled. The install script for the broadcom-wl-dkms driver should automatically create the required blacklist file.
Before proceeding with the driver install, make sure your system is fully up to date with this command:
sudo pacman-mirrors -f 5 && sudo pacman -Syyu
Broadcom drivers have been experiencing breakages on some kernels recently. I would suggest installing the two most recent kernels to test WiFi operation. If after testing the two most recent kernels your WiFi is still not working satisfactorily then install older LTS kernels for testing. Install kernels through Manjaro Settings Manager, and always keep at least two working kernels installed.
If you need to switch kernels reboot. If you do not see the grub boot screen press the ESC, SHIFT or F8 key. This should show the GRUB boot menu if it doesn't appear automatically. As soon as you see the grub boot screen, press the down arrow. Select the "advanced" menu from the choices and press enter. In the next menu you can select the different kernels you have installed to boot from. Select the kernel version you wish boot into (not the fallback version), and then press enter to complete the kernel change.
Installing the required Linux kernel headers:
To automatically install the Linux headers packages for all installed kernels, use the following command:
sudo pacman -S $(pacman -Qsq "^linux" | grep "^linux[0-9]*[-rt]*$" | awk '{print $1"-headers"}' ORS=' ')
*command courtesy of @dalto
Once you have completed the linux-headers package installation, install the "dkms" package with the following command:
sudo pacman -S dkms
After all those steps are complete unplug any tethering, LAN, or other alternate internet connections and reboot.
After rebooting, your WiFi may be working with the native modules already included in the kernel. Conduct performance assessments on your WiFi connection using the kernel modules. If you find the kernel driver works satisfactorily you may simply want to continue using it.
If your WiFi is not working (or the kernel driver performs poorly), then continue with the directions below to install the proprietary broadcom-wl-dkms driver.
Reconnect to an alternate internet source to perform the broadcom-wl-dkms driver installation.
Install the "broadcom-wl-dkms" driver package from the Manjaro extra repo with this command:
sudo pacman -S broadcom-wl-dkms
After the driver has finished installing, unplug any tethering, LAN, or other alternate internet connections and reboot.
After rebooting, if your WiFi is still not working then follow these additional steps.
Check that a blacklist file exists in /etc/modprobe.d/
with the following contents.
blacklist b43
blacklist b43legacy
blacklist ssb
blacklist bcm43xx
blacklist brcm80211
blacklist brcmfmac
blacklist brcmsmac
blacklist bcma
If a file does not already exist with those contents, create it.
You can automatically add the required entries to /etc/modprobe.d/blacklist.conf file with the following command:
sudo echo -e "blacklist b43\nblacklist b43legacy\nblacklist ssb\nblacklist bcm43xx\nblacklist brcm80211\nblacklist brcmfmac\nblacklist brcmsmac\nblacklist bcma" | sudo tee -a /etc/modprobe.d/blacklist.conf
Then, issue these commands separately:
sudo rfkill unblock all
sudo depmod -a
sudo mkinitcpio -P
Run the following list of commands in its entirety, regardless of any errors received. Issue the commands individually one at a time allowing several seconds between commands:
sudo systemctl stop NetworkManager
sudo rmmod b43 b43legacy ssb brcm80211 brcmfmac brcmsmac bcma
sudo modprobe -r wl
sudo modprobe wl
DEVICE=$(hwinfo --wlan | grep "Device File" | cut -d " " -f5) && sudo ip link set $DEVICE up
sudo rfkill unblock all
sudo systemctl start NetworkManager
Once those commands have finished running test your connection again.
If your WiFi is still not working correctly, reboot.
Hopefully after a restart your new wl driver will be working correctly.
This method will not necessarily work for all Broadcom chips. This method should work for most cards compatible with the broadcom-wl driver. Not all Broadcom adapters work best with the wl drivers, (but the majority do).
The broadcom-wl driver should work correctly with the following Wireless chipsets.
broadcom-wl supported chipsets:
BCM4311
BCM4312
BCM4313
BCM4321
BCM4322
BCM4331
BCM4352
BCM436O
BCM43142
BCM43224
BCM43225
BCM43227
BCM43228
Linux Broadcom adapter driver support reference lists:
https://wireless.wiki.kernel.org/en/users/drivers/brcm80211
https://wireless.wiki.kernel.org/en/users/drivers/b43
If your adapter is not on the above list, this method may not work for your adapter. If the wl driver does not work (or performs poorly) it may be better to follow the method below to use the built in kernel drivers.
Drivers detected as "b43-pci-bridge"
Generally if you see your WiFi drivers listed as "b43-pci-bridge" you have conflicting drivers installed. In a minority of instances a driver detected as "b43-pci-bridge" may function adequately. However, drivers installed this way tend to be unreliable in the long term.
In these cases the drivers included in the kernel may be the better choice. You may find your driver issues can be corrected by simply uninstalling the "broadcom-wl" drivers. You can uninstall the wl drivers through the Manjaro Settings Manager. Open Manjaro Settings Manager -> Hardware configuration -> right click on your device driver and select “Remove”. Once the "broadcom-wl" drivers are uninstalled you can test the b43 driver:
sudo rmmod wl
sudo rmmod ssb
sudo rmmod b43
sudo modprobe b43
Then:
sudo rfkill unblock all
sudo systemctl restart NetworkManager
sudo depmod -a
sudo mkinitcpio -P
Test your wifi for connectivity.
Then reboot you computer. After restarting, the kernel drivers should automatically load.
If the kernel modules do not load automatically you must ensure they are not blacklisted. Check that no blacklist file exists in any of these locations:
/etc/modprobe.d/
/etc/modules-load.d/
/usr/lib/modprobe.d/
Any blacklist on the broadcom kernel modules (as in the blacklist example above), must either be deleted, or commented out. The blacklist entries can be made to be ignored by adding a pound sign "#" (hash tag ) before any entry line. This is what is referred to as "commenting out" an entry.
There is no guarantee the correct kernel module will automatically be loaded for your adapter model. As different adapters may use different modules you may need to research which modules are required. A different blacklist may be required for different kernel modules, so this can get complicated. If the installation steps listed here do not resolve your broadcom driver issues a support request on the forum may be helpful.
Unfortunately, Broadcom drivers are well known for being problematic in Linux. If you can't get the kernel modules working, then perhaps installing the "broadcom-wl-dkms" driver may be worth attempting. If you have no luck with either the native or proprietary drivers you may find purchasing a USB adapter with good Linux support is your best alternative.
Directions for opening a help request
If your WiFi connection is still not working after following all the above steps, then you will need to open a help request on the forum. Follow the instructions below to create a help request that will have the best chance of helping resolve your issue.
Disconnect any LAN cable, USB LAN adapter, USB WiFi tethering, or any other network devices connected to your computer. Once you have disconnected all other network devices, reboot your computer.
Once restarted, you will need to run extensive diagnostic commands to help identify why your WiFi is not working. Numerous diagnostic outputs and logs are required to properly diagnose complicated WiFi issues. Please run all the following commands individually in the terminal:
Please post the outputs of the following commands:
inxi -Fxxxza
dkms status
rfkill list all
lsmod | sort
sudo mhwd-kernel -li
sudo dmesg | grep -Ei 'b43|bcma|brcm|wl|[F]irm|deauth'
grep -r "blacklist\|install\|options" /etc/modprobe.d/
pacman -Qsq linux | grep linux | grep -v -E '(arch|util|sys|api|firmware)' | grep -v nvidia
hwinfo --netcard --wlan --bluetooth | grep -Ei "model\:|driver\:|status\:|cmd\:|file\:|detected\:" | grep -v "Config Status"
Unless there is absolutely no alternative, do not post any terminal outputs as a picture.
Please post all terminal outputs as text with code tags.
Information on how to properly post hardware specs and logs:
Please format any terminal output with three backticks before and after, as shown in this picture:
Does it happen with other kernels + linuxXY-broadcom-wl ?
(You can post the results at github, I will read.)
@eugen-b I've found that every time bcma-pci-bridge shows up as the broadcom driver the driver install is borked. Switching kernels will be very unlikely to help. I've helped 3 or 4 people in the last couple weeks where this issue has shown up with a variety of broadcom chips. The solution was the same on all of them. The miss-detected driver needed to be uninstalled and replaced. Depending on the card and proper driver that was required, a blacklisting might also be in order. It's a dead giveaway now, when I see the bcma-pci-bridge driver I know it's a conflicting drivers issue. On Windows they actually identify it as a bug and even have removal tool to fix the problem. So its not just Linux where this issue occurs with the Broadcom drivers. At least that's what I've been able to piece together from a lot of searching.
Uninstall the current driver is part of any solution with a Broadcom driver which doesn't work.
My recommendation was based on this topic:
Ah, in that post the OP installed the wrong headers!
So, ok Alberto might try your proposal
sudo pacman -S linux414-headers
reboot
sudo pacman -S broadcom-wl-dkms
@eugen-b From the link you posted:
I totally agree with the above quote. I've suspected the mhwd hardware detection has been installing broadcom drivers incorrectly for a little while now. I first noticed this issue about three weeks ago, and started researching it. After reading a thread that was linked from your original reference, I now think this is an even bigger issue than I first suspected. According to a post on that thread the mhwd scripts miss-detection of broadcom adapters is actually causing the calamares installer to hang on some Manjaro installs.
From searching bcma-pci-bridge I found some information on this issue. I did not find a lot of hits on Linux. It wasn't until I found the hit on Windows identifying this as a bug that I realized that seeing the bcma-pci-bridge is a sure sign the driver install was botched. I'm simply trying to let others know that if you see bcma-pci-bridge listed as the driver your driver install has gone sideways and needs to be corrected.
I will no longer be able to research this myself, as I solt the affected computer.
Too bad, I'm almost 100% sure that would have fixed your wifi issue.
The GPU was damaged
This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.