-
-
Save torresashjian/e97d954c7f1554b6a017f07d69a66374 to your computer and use it in GitHub Desktop.
sudo apt-get purge bcmwl-kernel-source | |
sudo apt update | |
sudo update-pciids | |
sudo apt install firmware-b43-installer | |
sudo reboot #note that this will restart your computer | |
sudo iwconfig wlp3s0 txpower 10dBm | |
#sudo iwconfig wlp2s0 txpower 10dBm |
Thanks, this worked great!
How can this step possibly work?
- sudo apt install firmware-b43-installer
The installer goes and tries to download this file:
https://www.lwfinger.com/b43-firmware/broadcom-wl-6.30.163.46.tar.bz2
Which is impossible if you don't already have wifi connection to begin with...
@satellite73 same for me -- I have to run the command
sudo iwconfig wlp2s0 txpower 10dBm
after each reboot. I have not yet found a solution.
This worked for me:
sudo nano /etc/systemd/system/set-wifi-power.service
Enter the following:
[Unit]
Description=Set Wi-Fi transmit power
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/sbin/iwconfig wlp3s0 txpower 10dBm
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Now enable the service:
sudo systemctl enable set-wifi-power.service
reboot
I had the problem on my old i7 MacBook Pro 2016 (MacBookPro13,3), running Ubuntu 24.04.2 LTS. The Macbook did have WiFi, could detect access points, etc., but simply wouldn't accept the password and would refuse to connect, asking me for the password over and over again.
So I set out to fix it and found this post. I'll give my experiences.
I took the exact following steps in a shell, as per the recommendations:
sudo apt-get purge bcmwl-kernel-source
sudo apt update
sudo update-pciids
sudo apt install firmware-b43-installer
sudo reboot
After reboot, typed:
sudo iwconfig wlp3s0 txpower 10dBm
Connected, and it worked, my password was accepted and I had the internet connection working fine.
Then I did what phpmaven did, because I wanted this to be permanent (but using vi, I'm a vi-man ;)):
sudo vi /etc/systemd/system/set-wifi-power.service
Entered following:
[Unit]
Description=Set Wi-Fi transmit power
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/sbin/iwconfig wlp3s0 txpower 10dBm
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Enabled the service:
sudo systemctl enable set-wifi-power.service
Rebooted.
And now my WiFi fully works.
However, after doing all that, I got to think a bit more. I think that the problem was not the firmware at all, because my system could scan the WiFi access points even before installing the b43 driver. It might have simply been that the WiFi was in some low-power or simply some unsupported power TX mode, which caused timeouts or drops on the communication with the access point (I saw some messages about timeouts in the system journal). Even though my laptop is only 1 meter away from the access point.
To test my theory, I went back to an older install from before I installed the b43 driver and only typed this into a shell:
sudo iwconfig wlp3s0 txpower 10dBm
And then I could connect fine as well.
So most probably, it's not even necessary to install the b43 driver. Which means that I actually only had to do what phpmaven did.
I checked by typing just iwconfig
, and saw that the TX-Power is set to 31dBm by default. Setting the TX-Power to 10dBm is probably the only thing necessary.
Be aware that I was doing this on Ubuntu 24.04.2 LTS. For other versions it could still be necessary to install the b43 drivers. If setting the TX Power doesn't fix your problem, you should probably only then try installing the b43 driver.
Cheers!
This worked for me! 2014 Macbook air using the Broadcom BCM 4360 WiFi card, Ubuntu 24.04.2. WiFi did not even appear as an option before, now it does and works perfectly!
How can this step possibly work?
- sudo apt install firmware-b43-installer
The installer goes and tries to download this file: https://www.lwfinger.com/b43-firmware/broadcom-wl-6.30.163.46.tar.bz2
Which is impossible if you don't already have wifi connection to begin with...
First of all: If your WiFi chip is detected, i.e. you have the WiFi option in Linux and if you choose it, you see a list of access points, but just can't seem to connect to any, then you will not need to package
Well, I think there are these options.
Use a USB network dongle to connect to a wired network (this is what I did)
Try using your phone as access point, it might be more lenient (or less, you won't know until you try).
-
On a computer with internet connectivity, download the broadcom installer package (.deb) file and all its dependent packages from the following locations:
- bzip2 - https://packages.debian.org/trixie/amd64/bzip2/download
- pciutils - https://packages.debian.org/trixie/amd64/pciutils/download
- b43-fwcutter - https://packages.debian.org/trixie/amd64/b43-fwcutter/download
- firmware-b43-installer - https://packages.debian.org/trixie/all/firmware-b43-installer/download
Remember the names of the downloaded files. The names change with version updates. But for my example, I'll use the current versions.
- bzip2 - bzip2_1.0.8-6_amd64.deb
- pciutils - pciutils_3.14.0-1_amd64.deb
- b43-fwcutter - b43-fwcutter_019-14_amd64.deb
- firmware-b43-installer - firmware-b43-installer_019-14_all.deb
-
Copy these files to a USB stick and copy them to the computer without network connection. Remember where you copied them. ;)
-
Open a shell and cd to the folder where you copied the files to.
-
Then one by one manually install the packages. Be sure to keep to this order because some packages depend on others to be installed first.
sudo apt install ./bzip2_1.0.8-6_amd64.deb
sudo apt install ./pciutils_3.14.0-1_amd64.deb
sudo apt install ./b43-fwcutter_019-14_amd64.deb
sudo apt install ./firmware-b43-installer_019-14_all.deb
You might get some messages about 'package already installed' (maybe bzip2 is already installed). That's great, all you did was waste a little time, but nothing more serious.
-
Reboot
-
After reboot, type:
sudo iwconfig wlp3s0 txpower 10dBm
Now you should expect your WiFi to work.
The next steps should be to do what phpmaven did. It creates a script that will be run as a service at every reboot, and will automatically set the transmit power after every reboot.
One important caveat is that I have never tried to do option #3 myself. I have never had to, and I am restating what I did for other packages at one time.
It might be that apt will ask for more dependencies. But the mechanism to install those will be the same, you only have to identify the missing dependencies and install them as mentioned above. Here you can see the list of dependent packages:
I got the same procedure to work for Kali Linux 2023.3 on a late 2013 MBP. The only difference is the adapter designation in Kali is simply wlan0. However, the procedure is solid and worked on the first attempt. Thanks for posting this!