Linux Broadcom Wireless Issue 5.x kernel
Broadcom Wireless Issue
Recent update caused wireless to stop working. Seems like PopOS (20.04 flavor and likely other distros) does not have a new enough bcmwl-kernel-source for 5.6 or 5.8 kernels.
LINKS:
- https://packages.ubuntu.com/search?keywords=bcmwl-kernel-source
- https://bugs.launchpad.net/ubuntu/+source/broadcom-sta/+bug/1866697
NOTE: I tried to install a different kernel to see if that will work but that showed me the issue at least.
root cause
# apt install linux-image-5.8.0-23-generic
...
make -j4 KERNELRELEASE=5.8.0-23-generic -C /lib/modules/5.8.0-23-generic/build M=/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build....(bad exit status: 2)
ERROR (dkms apport): kernel package linux-headers-5.8.0-23-generic is not supported
Error! Bad return status for module build on kernel: 5.8.0-23-generic (x86_64)
Consult /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/make.log for more information.
hold a kernel that works just for safety
# dpkg -l | grep linux-image-
ii linux-image-5.4.0-7642-generic 5.4.0-7642.46~1598628707~20.04~040157c amd64 Linux kernel image for version 5.4.0 on 64 bit x86 SMP
ii linux-image-5.8.0-23-generic 5.8.0-23.24~20.04.1 amd64 Signed kernel image generic
ii linux-image-5.8.0-7625-generic 5.8.0-7625.26~1603389471~20.04~f6b125f amd64 Linux kernel image for version 5.8.0 on 64 bit x86 SMP
ii linux-image-generic 5.8.0.7625.26~1603389471~20.04~f6b125f amd64 Generic Linux kernel image
# echo linux-image-5.4.0-7642-generic hold | dpkg --set-selections
# dpkg -l | grep linux-image-
hi linux-image-5.4.0-7642-generic 5.4.0-7642.46~1598628707~20.04~040157c amd64 Linux kernel image for version 5.4.0 on 64 bit x86 SMP
ii linux-image-5.8.0-23-generic 5.8.0-23.24~20.04.1 amd64 Signed kernel image generic
ii linux-image-5.8.0-7625-generic 5.8.0-7625.26~1603389471~20.04~f6b125f amd64 Linux kernel image for version 5.8.0 on 64 bit x86 SMP
ii linux-image-generic 5.8.0.7625.26~1603389471~20.04~f6b125f amd64 Generic Linux kernel image
NOTE: set grub with longer timeout, show the boot menu and save last booted item
patches
Looking at the patches it appears we may need 0028? or something for newer than 5.1 kernels?
# ls /usr/src/bcmwl-6.30.223.271+bdcom/patches/
0001-MODULE_LICENSE.patch 0008-add-support-for-linux-3.9.0.patch 0015-add-support-for-Linux-3.18.patch 0022-add-support-for-Linux-4.8.patch
0002-Makefile.patch 0009-add-support-for-linux-3.10.0.patch 0016-repair-make-warnings.patch 0023-add-support-for-Linux-4.11.patch
0003-Make-up-for-missing-init_MUTEX.patch 0010-change-the-network-interface-name-from-eth-to-wlan.patch 0017-add-support-for-Linux-4.0.patch 0024-add-support-for-Linux-4.12.patch
0004-Add-support-for-Linux-3.2.patch 0011-do-not-define-__devinit-as-__init-in-linux-3.8-as-__.patch 0018-cfg80211_disconnected.patch 0025-add-support-for-Linux-4.14.patch
0005-add-support-for-linux-3.4.0.patch 0012-add-support-for-Linux-3.15.patch 0019-broadcom-sta-6.30.223.248-3.18-null-pointer-fix.patch 0026-add-support-for-Linux-4.15.patch
0006-add-support-for-linux-3.8.0.patch 0013-gcc.patch 0020-add-support-for-linux-4.3.patch 0027-add-support-for-linux-5.1.patch
0007-nl80211-move-scan-API-to-wdev.patch 0014-add-support-for-Linux-3.17.patch 0021-add-support-for-Linux-4.7.patch
Install Ubuntu 20.10 (groovy) package
Looking at the file list in the newer Ubuntu 20.10 source I see at least a 5.6 patch although I need 5.8.
# wget http://mirrors.kernel.org/ubuntu/pool/restricted/b/bcmwl/bcmwl-kernel-source_6.30.223.271+bdcom-0ubuntu7_amd64.deb
...
2020-10-29 08:14:10 (656 KB/s) - ‘bcmwl-kernel-source_6.30.223.271+bdcom-0ubuntu7_amd64.deb’ saved [1545816/1545816]
# dpkg -i bcmwl-kernel-source_6.30.223.271+bdcom-0ubuntu7_amd64.deb
(Reading database ... 283701 files and directories currently installed.)
Preparing to unpack bcmwl-kernel-source_6.30.223.271+bdcom-0ubuntu7_amd64.deb ...
Removing all DKMS Modules
Done.
Unpacking bcmwl-kernel-source (6.30.223.271+bdcom-0ubuntu7) over (6.30.223.271+bdcom-0ubuntu5) ...
Setting up bcmwl-kernel-source (6.30.223.271+bdcom-0ubuntu7) ...
Loading new bcmwl-6.30.223.271+bdcom DKMS files...
Building for 5.4.0-7642-generic 5.8.0-7625-generic
Building for architecture x86_64
Building initial module for 5.4.0-7642-generic
Done.
wl.ko:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/5.4.0-7642-generic/updates/
depmod...
DKMS: install completed.
Building initial module for 5.8.0-7625-generic
Done.
wl.ko:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/5.8.0-7625-generic/updates/
depmod........
DKMS: install completed.
update-initramfs: deferring update (trigger activated)
Processing triggers for initramfs-tools (0.136ubuntu6.3) ...
update-initramfs: Generating /boot/initrd.img-5.8.0-7625-generic
cryptsetup: WARNING: Resume target cryptswap uses a key file
looks like rebuild wl.ko ok
# ls /lib/modules/5.8.0-7625-generic/updates/
dkms wl.ko
# find /lib/modules/5.4.0-7642-generic/ -name wl.ko
/lib/modules/5.4.0-7642-generic/updates/wl.ko
# find /lib/modules/5.8.0- -name wl.ko
5.8.0-23-generic/ 5.8.0-7625-generic/
# find /lib/modules/5.8.0-23-generic/ -name wl.ko
# find /lib/modules/5.8.0-7625-generic/ -name wl.ko
/lib/modules/5.8.0-7625-generic/updates/wl.ko
cleanup the 5.8.0-23 kernel I tried
# apt purge linux-image-5.8.0-23-generic
...
rmdir: failed to remove '/lib/modules/5.8.0-23-generic': Directory not empty
NOTE: PopOS may not be cleaning up /lib/modules because of the additional module.
# rm -rf /lib/modules/5.8.0-23-generic
# apt purge linux-headers-5.8.0-23-generic
# apt purge linux-modules-5.8.0-23-generic
# ls /boot
config-5.4.0-7642-generic grub initrd.img-5.4.0-7642-generic initrd.img.old System.map-5.8.0-7625-generic vmlinuz-5.4.0-7642-generic vmlinuz.old
config-5.8.0-7625-generic initrd.img initrd.img-5.8.0-7625-generic System.map-5.4.0-7642-generic vmlinuz vmlinuz-5.8.0-7625-generic
check
Rebooted with 5.8 kernel and it works
# dkms status
bcmwl, 6.30.223.271+bdcom, 5.4.0-7642-generic, x86_64: installed
bcmwl, 6.30.223.271+bdcom, 5.8.0-7625-generic, x86_64: installed
nvidia-340, 340.108, 5.4.0-7642-generic, x86_64: installed
system76, 1.0.9~1597073326~20.04~5b01933, 5.4.0-7642-generic, x86_64: installed
system76, 1.0.9~1597073326~20.04~5b01933, 5.8.0-7625-generic, x86_64: installed