Broadcom Network Adapter用のドライバーをWindowsに再インストールした後、Ubuntu(16.04)でWiFiが完全に機能しなくなりました。
次のコマンドを使用して、ドライバーを再インストールしようとしました。
1. Sudo apt-get purge bcmwl-kernel-source
2. Sudo apt-get install bcmwl-kernel-source
しかし、それは助けにはなりませんでした
2番目のコマンドの出力(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).
このコマンドlspci -nn -d 14e4
の出力:
08:00.0 Network controller [0280]: Broadcom Limited BCM43142 802.11b/g/n [14e4:4365] (rev 01)
問題を解決する方法を教えてください。
/ 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'
Canonicalは、Ubuntu 16.04のHWEスタックを4.15カーネルに更新しました。しかし、Broadcomワイヤレスドライバーを更新するのを忘れていたため、ビルドすることができます。これは重大かつ非常に愚かなバグであり、LTSを使用している多くの人々に問題を引き起こします。
現在、問題は修正されており、互換性のあるドライバーバージョンが構築されています。
この問題は、4.15カーネル上でビルドする必要があるbcmwl-kernel-source
の互換バージョンをインストールすることで解決できます。
dkpg
を使用してインストールします。
これは
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はまったく関係ありません。
問題は、ドライバーと互換性のないカーネルがあることです。
重要:Broadcom Wi-Fi以外に他のネットワーク接続がない場合は、grubメニューを使用して以前のカーネルで起動し、インストールできますドライバ。すべてのカーネル用にビルドする必要があります。
この質問に対するPilot6のいい答えは、xenial
(つまり、bionic
からパッケージをインストールする必要はない)の公式な修正のようです(パッケージbroadcom-sta
を使用する場合) 、またはコミット済み(bcmwl-kernel-source
を提供するパッケージbcmwl
を使用する場合)。
詳細については、以下を参照してください。
broadcom-sta: https://bugs.launchpad.net/ubuntu/+source/broadcom-sta/+bug/1777444
bcmwl: https://bugs.launchpad.net/ubuntu/+source/bcmwl/+bug/1777646