我有一台 MacBook Pro 16,并决定在其上安装Pop!_OS
。
我的系统信息是:
OS: Pop!_OS 22.04 LTS x86_64
Host: MacBookPro16,2 1.0
Kernel: 6.2.6-76060206-generic
我的网络控制器是 Broadcom 无线网络适配器 ( Broadcom Inc. and subsidiaries BCM4364 802.11ac Wireless Network Adapter
)。我在 ArchWiki 上找到了一个有用的页面。
运行sudo lspci -vnn -d 14e4:
找出我需要哪些驱动程序会产生以下结果:
e5:00.0 Network controller [0280]: Broadcom Inc. and subsidiaries BCM4364 802.11ac Wireless Network Adapter [14e4:4464] (rev 04)
Subsystem: Apple Inc. BCM4364 802.11ac Wireless Network Adapter [106b:07bf]
Flags: fast devsel, IRQ 255
Memory at 81400000 (64-bit, non-prefetchable) [disabled] [size=32K]
Memory at 81000000 (64-bit, non-prefetchable) [disabled] [size=4M]
Capabilities: [48] Power Management version 3
Capabilities: [58] MSI: Enable- Count=1/16 Maskable- 64bit+
Capabilities: [68] Vendor Specific Information: Len=44 <?>
Capabilities: [ac] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [13c] Device Serial Number 1d-b9-fb-ff-ff-ba-3c-22
Capabilities: [150] Power Budgeting <?>
Capabilities: [160] Virtual Channel
Capabilities: [1b0] Latency Tolerance Reporting
Capabilities: [220] Physical Resizable BAR
Capabilities: [240] L1 PM Substates
Kernel modules: brcmfmac, wl
引用 archwiki:
内核包含两个内置开源驱动程序:用于本机 FullMAC 的 brcmfmac 和用于基于 mac80211 的 SoftMAC 的 brcmsmac。它们应该在启动时自动加载。
所以它应该有效(?)但事实并非如此。
当查看列入黑名单的内核模块时,我发现brcmfmac
被列入黑名单。
pop-os:~$ cat /etc/modprobe.d/blacklist-bcm43.conf
# Warning: This file is autogenerated by bcmwl. All changes to this file will be lost.
blacklist b43
blacklist b43legacy
blacklist ssb
blacklist bcm43xx
blacklist brcm80211
blacklist brcmfmac
blacklist brcmsmac
blacklist bcma
我将其注释掉,保存并运行sudo update-initramfs -u
,但没有帮助。
因为网卡似乎接受wl
驱动程序,所以我检查了它是否已加载($ lsmod | grep wl
),并且似乎已加载。
wl 6488064 0
cfg80211 1241088 1 wl
然而 brcmfmac 没有加载($ lsmod | grep brcmfmac
什么也不产生)。
运行$ sudo modprobe brcmfmac
加载模块。
$ lsmod | grep brcmfmac
brcmfmac 503808 0
brcmutil 20480 1 brcmfmac
cfg80211 1241088 2 wl,brcmfmac
这当然很酷,但我的 wifi 仍然无法使用。
此时我不知道该怎么办。
这里有一些更详细的网络信息:
$ sudo lshw -c network
*-network UNCLAIMED
description: Network controller
product: BCM4364 802.11ac Wireless Network Adapter
vendor: Broadcom Inc. and subsidiaries
physical id: 0
bus info: pci@0000:e5:00.0
version: 04
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress cap_list
configuration: latency=0
resources: memory:81400000-81407fff memory:81000000-813fffff
*-network
description: Ethernet interface
physical id: 7
bus info: usb@2:1.4
logical name: enx00e04c680604
serial: 00:e0:4c:68:06:04
size: 1Gbit/s
capacity: 1Gbit/s
capabilities: ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=r8152 driverversion=v1.12.13 duplex=full firmware=rtl8153a-4 v2 02/07/20 ip=192.168.0.129 link=yes multicast=yes port=MII speed=1Gbit/s
这就是设置中无法使用的 wifi 的样子:
您的 MacBookPro16,2 配备了 T2 芯片,这显然会导致一系列新的复杂情况。幸运的是,你的内核似乎足够新,因此它可能不需要补丁,但显然你的 WiFi 芯片的固件必须从 MacOS 中提取:
https://wiki.t2linux.org/guides/wifi-bluetooth/
好吧,事实证明,我使用的 mac book 有 T2 芯片。我不知道为什么,但这会引起问题。有些人修补了内核并修复了 wifi。
所有这些型号都有这个芯片
如果除了 Linux 安装之外,您还安装了 Mac 操作系统,请按照本指南进行操作。感谢这个答案如果你不这样做,那就会有点困难。
如果您遇到此问题,并且使用 Ubuntu 或基于 Ubuntu 的发行版,则可以将内核更改为支持 T2 芯片的版本。
以下是执行此操作的说明。
安装新内核后,您需要使用启动管理器在其中启动。对我来说它是 systemd-boot,所以我可以简单地更改默认启动项。我不知道你是如何在 grub 中做到这一点的,但它应该是直接的。
重新启动后,检查内核名称是否包含
T2
,我的如下所示:6.1.40-t2-jammy
如果更换内核后不起作用,您可以尝试使用
sudo modprobe brcmfmac
. 如果这有效,您应该检查您是否已brcmfmac
列入黑名单/etc/modprobe.d/blacklist-bcm43.conf
。如果这样做,请将其取消黑名单并运行sudo update-initramfs -u
。如果重启后不起作用,那么您的硬件将与我的不同。加载新内核后,您可能需要检查您是否已
brcmfmac
列入黑名单。注释掉就可以了 对我来说它被列入黑名单了/etc/modprobe.d/blacklist-bcm43.conf
。将其取消列入黑名单后运行sudo update-initramfs -u
,然后祈祷。如果这修复了您的 WiFi,但它不稳定,您可以在此处找到修复方法。