How can I fix Broadcom driver Wifi with 4.15.0-xx kernel on Ubuntu 16.04
Solution 1
Canonical updated HWE stack for Ubuntu 16.04 to the 4.15 kernel. But they forgot to update the Broadcom wireless driver, so it can be built. It is a critical and a very stupid bug, that will cause trouble for many people using the LTS.
Now the issue is being fixed and a compatible driver version has been built
This issue can be solved by installing a compatible version of bcmwl-kernel-source
that should build on the 4.15 kernels.
and install it using dkpg
.
This can be done by
wget http://archive.ubuntu.com/ubuntu/pool/restricted/b/bcmwl/bcmwl-kernel-source_6.30.223.271+bdcom-0ubuntu1~1.3_amd64.deb
sudo dpkg -i bcmwl-kernel-source_6.30.223.271+bdcom-0ubuntu1~1.3_amd64.deb
Windows is not related at all.
The problem is that you have a kernel that is not compatible with the driver.
Important: If you don't have any other network connection but the Broadcom Wi-Fi, you can boot with a previous kernel using grub menu and install the driver. It should build for all kernels.
Solution 2
Apropos to Pilot6's nice answer to this question, it looks like an official fix for xenial
(i.e. not requiring one to install packages from bionic
) has been released (if you use package broadcom-sta
), or else committed (if you use package bcmwl
which provides bcmwl-kernel-source
).
For further info, see:
broadcom-sta: https://bugs.launchpad.net/ubuntu/+source/broadcom-sta/+bug/1777444
bcmwl: https://bugs.launchpad.net/ubuntu/+source/bcmwl/+bug/1777646
Related videos on Youtube
John Kent
Updated on September 18, 2022Comments
-
John Kent over 1 year
I reinstalled a driver on Windows for Broadcom Network Adapter and after that my WiFi stopped working on Ubuntu(16.04) completely.
I tried to reinstall drivers, using this commands:
1. sudo apt-get purge bcmwl-kernel-source 2. sudo apt-get install bcmwl-kernel-source
But it didn't help
Output of the second command(install bcmwl-kernel-source):
Unpacking bcmwl-kernel-source (6.30.223.271+bdcom-0ubuntu1~1.2) ... Setting up bcmwl-kernel-source (6.30.223.271+bdcom-0ubuntu1~1.2) ... Loading new bcmwl-6.30.223.271+bdcom DKMS files... First Installation: checking all kernels... Building only for 4.15.0-24-generic Building for architecture x86_64 Building initial module for 4.15.0-24-generic ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/bcmwl-kernel-source.0.crash' Error! Bad return status for module build on kernel: 4.15.0-24-generic (x86_64) Consult /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/make.log for more information. modprobe: FATAL: Module wl not found in directory /lib/modules/4.15.0-24-generic update-initramfs: deferring update (trigger activated) Processing triggers for initramfs-tools (0.122ubuntu8.11) ... update-initramfs: Generating /boot/initrd.img-4.15.0-24-generic W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915 W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915 root@roman-Lenovo-G510:~# apt-get install bcmwl-kernel-source Reading package lists... Done Building dependency tree Reading state information... Done bcmwl-kernel-source is already the newest version (6.30.223.271+bdcom-0ubuntu1~1.2).
This command
lspci -nn -d 14e4
outputs:08:00.0 Network controller [0280]: Broadcom Limited BCM43142 802.11b/g/n [14e4:4365] (rev 01)
Could you tell me how to fix my problem?
/var/crash/bcmwl-kernel-source.0.crash
ProblemType: Package DKMSBuildLog: DKMS make.log for bcmwl-6.30.223.271+bdcom for kernel 4.15.0-24-generic (x86_64) Вт июл 3 16:26:40 MSK 2018 make: Entering directory '/usr/src/linux-headers-4.15.0-24-generic' Makefile:976: "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel" CFG80211 API is prefered for this kernel version Using CFG80211 API CC [M] /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.o /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c: In function ‘osl_os_get_image_block’: /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c:1083:26: warning: passing argument 2 of ‘kernel_read’ makes pointer from integer without a cast [-Wint-conversion] rdlen = kernel_read(fp, fp->f_pos, buf, len); ^ In file included from ./include/linux/huge_mm.h:7:0, from ./include/linux/mm.h:463, from /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/include/linuxver.h:65, from /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c:25: ./include/linux/fs.h:2858:16: note: expected ‘void *’ but argument is of type ‘loff_t {aka long long int}’ extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *); ^ /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c:1083:37: warning: passing argument 3 of ‘kernel_read’ makes integer from pointer without a cast [-Wint-conversion] rdlen = kernel_read(fp, fp->f_pos, buf, len); ^ In file included from ./include/linux/huge_mm.h:7:0, from ./include/linux/mm.h:463, from /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/include/linuxver.h:65, from /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c:25: ./include/linux/fs.h:2858:16: note: expected ‘size_t {aka long unsigned int}’ but argument is of type ‘char *’ extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *); ^ /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c:1083:42: warning: passing argument 4 of ‘kernel_read’ makes pointer from integer without a cast [-Wint-conversion] rdlen = kernel_read(fp, fp->f_pos, buf, len); ^ In file included from ./include/linux/huge_mm.h:7:0, from ./include/linux/mm.h:463, from /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/include/linuxver.h:65, from /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c:25: ./include/linux/fs.h:2858:16: note: expected ‘loff_t * {aka long long int *}’ but argument is of type ‘int’ extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *); ^ CC [M] /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.o /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c: In function ‘wl_init_timer’: /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:2359:2: error: implicit declaration of function ‘init_timer’ [-Werror=implicit-function-declaration] init_timer(&t->timer); ^ /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:2360:10: error: ‘struct timer_list’ has no member named ‘data’ t->timer.data = (ulong) t; ^ /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:2361:20: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types] t->timer.function = wl_timer; ^ cc1: some warnings being treated as errors scripts/Makefile.build:332: recipe for target '/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.o' failed make[1]: *** [/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.o] Error 1 Makefile:1552: recipe for target '_module_/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build' failed make: *** [_module_/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build] Error 2 make: Leaving directory '/usr/src/linux-headers-4.15.0-24-generic' DKMSKernelVersion: 4.15.0-24-generic Date: Tue Jul 3 16:26:46 2018 DuplicateSignature: dkms:bcmwl-kernel-source:6.30.223.271+bdcom-0ubuntu1~1.2:/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:2359:2: error: implicit declaration of function ‘init_timer’ [-Werror=implicit-function-declaration] Package: bcmwl-kernel-source 6.30.223.271+bdcom-0ubuntu1~1.2 PackageVersion: 6.30.223.271+bdcom-0ubuntu1~1.2 SourcePackage: bcmwl Title: bcmwl-kernel-source 6.30.223.271+bdcom-0ubuntu1~1.2: bcmwl kernel module failed to build
/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/make.log
DKMS make.log for bcmwl-6.30.223.271+bdcom for kernel 4.15.0-24-generic (x86_64) Чт июл 5 16:26:16 MSK 2018 make: Entering directory '/usr/src/linux-headers-4.15.0-24-generic' Makefile:976: "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel" CFG80211 API is prefered for this kernel version Using CFG80211 API CC [M] /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.o /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c: In function ‘osl_os_get_image_block’: /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c:1083:26: warning: passing argument 2 of ‘kernel_read’ makes pointer from integer without a cast [-Wint-conversion] rdlen = kernel_read(fp, fp->f_pos, buf, len); ^ In file included from ./include/linux/huge_mm.h:7:0, from ./include/linux/mm.h:463, from /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/include/linuxver.h:65, from /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c:25: ./include/linux/fs.h:2858:16: note: expected ‘void *’ but argument is of type ‘loff_t {aka long long int}’ extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *); ^ /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c:1083:37: warning: passing argument 3 of ‘kernel_read’ makes integer from pointer without a cast [-Wint-conversion] rdlen = kernel_read(fp, fp->f_pos, buf, len); ^ In file included from ./include/linux/huge_mm.h:7:0, from ./include/linux/mm.h:463, from /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/include/linuxver.h:65, from /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c:25: ./include/linux/fs.h:2858:16: note: expected ‘size_t {aka long unsigned int}’ but argument is of type ‘char *’ extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *); ^ /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c:1083:42: warning: passing argument 4 of ‘kernel_read’ makes pointer from integer without a cast [-Wint-conversion] rdlen = kernel_read(fp, fp->f_pos, buf, len); ^ In file included from ./include/linux/huge_mm.h:7:0, from ./include/linux/mm.h:463, from /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/include/linuxver.h:65, from /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c:25: ./include/linux/fs.h:2858:16: note: expected ‘loff_t * {aka long long int *}’ but argument is of type ‘int’ extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *); ^ CC [M] /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.o /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c: In function ‘wl_init_timer’: /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:2359:2: error: implicit declaration of function ‘init_timer’ [-Werror=implicit-function-declaration] init_timer(&t->timer); ^ /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:2360:10: error: ‘struct timer_list’ has no member named ‘data’ t->timer.data = (ulong) t; ^ /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:2361:20: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types] t->timer.function = wl_timer; ^ cc1: some warnings being treated as errors scripts/Makefile.build:332: recipe for target '/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.o' failed make[1]: *** [/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.o] Error 1 Makefile:1552: recipe for target '_module_/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build' failed make: *** [_module_/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build] Error 2 make: Leaving directory '/usr/src/linux-headers-4.15.0-24-generic'
-
SudoSURoot almost 6 yearsPlease attach the contents of
/var/crash/bcmwl-kernel-source.0.crash
and/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/make.log
for more information. -
John Kent almost 6 years@SudoSURoot Done!
-
SudoSURoot almost 6 yearsI see both logs say: please install libelf-dev, libelf-devel or elfutils-libelf-devel. Try running:
sudo apt-get install libelf-dev
and then purge and install again. -
John Kent almost 6 years@Terrance Could hint me how to go to that kernel?
-
Nathan Basanese almost 6 years// , Here's the full text of the error I got from the "system problem detected" prompt: bcmwl-kernel-source 6.30.223.271+bdcom-0ubuntu1~1.2: bcmwl kerne l module failed to build I'm in the market for a new computer, and with BS like this the new mac OS is starting to look more and more attractive.
-
Ufos almost 6 years
-
-
Thomas Ward almost 6 yearsComments are not for extended discussion; this conversation has been moved to chat.
-
Pilot6 almost 6 years@DavidFoerster I changed the answer and gave a link to the driver built for 16.04. This is the version that will be added soon to the repos. There is no difference except the version number, but you are correct that it is better to use this one for future possible upgrades if any.
-
Boris Hamanov almost 6 yearsThey also broke the r8168-dkms driver. See my answer at askubuntu.com/questions/1052971/… for more details.
-
Pilot6 almost 6 years@heynnema How do you all getn the 4.15 kernel? Is the
proposed
repo enabled. Nothing is broken for those who are not running before the train. -
Boris Hamanov almost 6 years@Pilot6 as you mention in your answer, "Canonical updated HWE stack for Ubuntu 16.04 to the 4.15 kernel.". Other users are saying the same thing... that they're running 4.15 on 16.04 LTS, and as my link suggests, are also requiring newer drivers to be 100% functional again. I haven't asked if they're running proposed, or not.
-
Pilot6 almost 6 yearsTHe fact that Canonical really did NOT update to 4.15 yet. They uploaded it to 'proposed' for testing and now they are fixing this kind of troubles.
-
Nathan Basanese almost 6 years// , "It is a critical and a very stupid bug" I can't help but agree
-
Miguel Espeso almost 6 yearsWould this work in Ubuntu 18.04, or should I follow another path? Thank you.
-
Pilot6 almost 6 yearsThere is no such problem on 18.04.