1

Background

I have a Dell Inspiron 1525 laptop from 2008, which has a Broadcom wireless chip. I have previously successfully used Ubuntu/Kubuntu on it by installing the firmware-b43-installer package, certainly on 14.04, I can't recall if I've installed 16.04 before on this laptop.

Recently, I installed Ubuntu 16.04, and installed firmware-b43-installer as before. Running sudo modprobe b43 makes the wireless work, but this does not persist after reboot.

The b43 module is blacklisted by /etc/modprobe.d/blacklist-bcm43.conf, which is autogenerated by bcmwl-kernel-source. This blacklisting doesn't stop sudo modprobe b43 from working - it loads the module anyway and WiFi then works until reboot.

What I've tried

  1. Adding b43, preceeded by its dependencies, in /etc/modules, running sudo update-initramfs -u, and rebooting. The module does not get loaded.
  2. Adding b43, preceeded by its dependencies, in /etc/initramfs-tools/modules, running sudo update-initramfs -u, and rebooting. The module does not get loaded.
  3. Adding b43, preceeded by its dependencies, in both /etc/modules and /etc/initramfs-tools/modules, running sudo update-initramfs -u, and rebooting. The module does not get loaded.
  4. Uninstalling bcmwl-kernel-source in order to remove /etc/modprobe.d/blacklist-bcm43.conf, in combination with 1, 2, and 3 above. The module does not get loaded, and running sudo modprobe b43 manually no longer works, so I presume that the bcmwl-kernel-source package is necessary for b43 to work, despite the fact that bcmwl-kernel-source blacklists b43.
  5. Leaving bcmwl-kernel-source installed, but manually deleting /etc/modprobe.d/blacklist-bcm43.conf, in combination with 1, 2, and 3 above. The module does not get loaded, but running sudo modprobe b43 manually once booted works.
  6. Adding a script to root's crontab on @reboot that loops running modprobe b43 until lsmod indicates that it is loaded. The script runs, and keeps running indefinitely, but the module never gets loaded, despite the fact that the script works when run manually from a terminal once booted.
Mark Raymond
  • 812
  • 1
  • 8
  • 15
  • @MichaelBay So far as I can tell, all the answers there are related to getting it working in the first place, which I have already done, indeed in the same way as that answer. Keeping it working post-reboot is the problem I have, which is a problem others in that thread don't seem to be having in the first place. – Mark Raymond Sep 05 '17 at 12:42
  • Please read carefully and follow all the instructions specific for your Broadcom chipset. –  Sep 05 '17 at 12:44
  • I have now done so; the module still doesn't load post-reboot. One thing I noticed when reading through was that Luis Alvarado's answer appears to assume than neither bcmwl-kernel-source nor firmware-b43-installer is installed by default, which was not the case for me; bcmwl-kernel-source was already installed on a clean install of 16.04.3. – Mark Raymond Sep 05 '17 at 13:00
  • 1
    The guide also tells you to uninstall bcmwl-kernel-source if you need b43, before installing firmware-b43-installer. Also mentions that in same cases after installing the firmware-b43-installer you need to remove the b43 module, enable it again and even proceed to unblock with rfkill. –  Sep 05 '17 at 13:11
  • Ah, some of the later answers do; the main answer by Luis Alvarado does not say to uninstall bcmwl-kernel-source if you need b43, it only says to uninstall bcmwl-kernel-source if you had already manually installed it, which I had not. Also, I had already discovered that uninstalling bcmwl-kernel-source broke b43 for me (despite the fact that they are supposed to be incompatible...) – Mark Raymond Sep 05 '17 at 13:20
  • Also here: https://ubuntuforums.org/showthread.php?t=2214110 . It doesn't matter how bcmwl-kernel-source was installed (it probably was via Additional Drivers). What matters is if it's there it needs to be uninstalled/purged. –  Sep 05 '17 at 13:35

1 Answers1

0

So, moving my script that called modprobe b43 until lsmod indicates that it is loaded from being called by root's crontab to being called by /etc/rc.local fixed this for me. Why this makes any difference I have no idea though.

Mark Raymond
  • 812
  • 1
  • 8
  • 15