ฉันจะแก้ไข Broadcom driver Wifi ด้วยเคอร์เนล 4.15.0-xx บน Ubuntu 16.04 ได้อย่างไร


24

ฉันติดตั้งไดรเวอร์ใหม่อีกครั้งใน Windows สำหรับ Broadcom Network Adapter และหลังจากนั้น WiFi ของฉันก็หยุดทำงานบน Ubuntu (16.04) อย่างสมบูรณ์

ฉันพยายามติดตั้งไดรเวอร์อีกครั้งโดยใช้คำสั่งนี้:

1. sudo apt-get purge bcmwl-kernel-source
2. sudo apt-get install bcmwl-kernel-source

แต่มันก็ไม่ได้ช่วยอะไร

เอาต์พุตของคำสั่งที่สอง (ติดตั้ง 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'

โปรดแนบเนื้อหาของ/var/crash/bcmwl-kernel-source.0.crashและ/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/make.logสำหรับข้อมูลเพิ่มเติม
SudoSURoot

@SudoSURoot เสร็จสิ้น!
John Kent

ฉันเห็นบันทึกทั้งสองบอกว่า: โปรดติดตั้ง libelf-dev, libelf-devel หรือ elfutils-libelf-devel ลองเรียกใช้: sudo apt-get install libelf-devแล้วจึงล้างและติดตั้งอีกครั้ง
SudoSURoot

@Terrance ช่วยบอกฉันถึงวิธีการไปยังเคอร์เนลนั้น
John Kent

//, นี่คือข้อความเต็มของข้อผิดพลาดที่ฉันได้รับจาก "ระบบตรวจพบปัญหา" แจ้ง: bcmwl-kernel-source 6.30.223.271 + bdcom-0ubuntu1 ~ 1.2: โมดูล bcmwl kerne l ล้มเหลวในการสร้างฉันในตลาดสำหรับ คอมพิวเตอร์เครื่องใหม่และด้วย BS เช่นนี้ Mac OS ใหม่เริ่มดูน่าสนใจยิ่งขึ้น
Nathan Basanese

คำตอบ:


31

Canonical HWE ที่อัพเดตสำหรับ Ubuntu 16.04 เป็นเคอร์เนล 4.15 แต่พวกเขาลืมอัปเดตไดรเวอร์ไร้สายของ Broadcom เพื่อให้สามารถสร้างได้ มันเป็นข้อผิดพลาดที่สำคัญและโง่มากซึ่งจะทำให้เกิดปัญหากับคนจำนวนมากที่ใช้ LTS

ขณะนี้ปัญหากำลังได้รับการแก้ไขและมีการสร้างเวอร์ชั่นไดรเวอร์ที่เข้ากันได้

ปัญหานี้สามารถแก้ไขได้โดยการติดตั้งรุ่นที่เข้ากันได้bcmwl-kernel-sourceซึ่งควรจะสร้างใน 4.15 เมล็ด

ดาวน์โหลดhttp://archive.ubuntu.com/ubuntu/pool/restricted/b/bcmwl/bcmwl-kernel-source_6.30.223.271+bdcom-0ubuntu1~1.3_amd64.deb

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 คุณสามารถบูตด้วยเคอร์เนลก่อนหน้าโดยใช้เมนูด้วงและติดตั้งไดรเวอร์ มันควรสร้างสำหรับเมล็ดทั้งหมด


ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ได้รับการย้ายไปแชท
โธมัสวอร์ด

@DavidFoerster ฉันเปลี่ยนคำตอบและให้ลิงค์ไปยังไดรเวอร์ที่สร้างขึ้นสำหรับ 16.04 นี่เป็นเวอร์ชั่นที่จะถูกเพิ่มใน repos เร็ว ๆ นี้ ไม่มีความแตกต่างยกเว้นหมายเลขรุ่น แต่คุณถูกต้องว่าจะดีกว่าที่จะใช้อันนี้สำหรับการอัพเกรดที่เป็นไปได้ในอนาคตหากมี
Pilot6

พวกเขายังทำลายไดรเวอร์ r8168-dkms ดูคำตอบของฉันที่askubuntu.com/questions/1052971/…สำหรับรายละเอียดเพิ่มเติม
heynnema

@heynnema คุณทำอย่างไรถึงจะได้รับเคอร์เนล 4.15? เป็นproposedrepo เปิดใช้งาน ไม่มีอะไรเสียหายสำหรับผู้ที่ไม่ได้วิ่งก่อนรถไฟ
Pilot6

@ Pilot6 ตามที่คุณกล่าวถึงในคำตอบของคุณ "สแต็ก HWE ที่ปรับปรุงแล้วของ Canonical สำหรับ Ubuntu 16.04 ไปเป็นเคอร์เนล 4.15" ผู้ใช้รายอื่นกำลังพูดในสิ่งเดียวกัน ... ว่าพวกเขากำลังเรียกใช้ 4.15 บน 16.04 LTS และตามที่ลิงก์ของฉันแนะนำก็ต้องการให้ไดรเวอร์รุ่นใหม่ทำงานได้ 100% อีกครั้ง ฉันไม่ได้ถามว่าพวกเขากำลังเสนออยู่หรือไม่
heynnema

5

Apropos to Pilot6 เป็นคำตอบที่ดีสำหรับคำถามนี้ดูเหมือนว่าจะมีการเปิดตัวการแก้ไขอย่างเป็นทางการสำหรับxenial(เช่นไม่ต้องใช้หนึ่งในการติดตั้งแพ็กเกจbionic) (ถ้าคุณใช้แพ็คเกจbroadcom-sta) หรืออื่น ๆ (ถ้าคุณใช้แพ็คเกจbcmwlที่ให้บริการbcmwl-kernel-source)

สำหรับข้อมูลเพิ่มเติมดู:

broadcom-sta: https://bugs.launchpad.net/ubuntu/+source/broadcom-sta/+bug/1777444

bcmwl: https://bugs.launchpad.net/ubuntu/+source/bcmwl/+bug/1777646

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.