近期某型号苹果一体机,在 Arch Linux 系统上配置无线网卡时遇到了一些曲折,最终通过移除黑名单并使用内核自带驱动成功解决,整理如下,供后续参考。
背景与硬件信息
该机型配备的无线网卡为 Broadcom BCM43602(802.11ac),PCI 总线识别信息如下:
03:00.0 Network controller: Broadcom Inc. and subsidiaries BCM43602 802.11ac Wireless LAN SoC (rev 01)
Subsystem: Apple Inc. Device 016f
Kernel modules: brcmfmac, wl
在 Arch Linux 系统中,这款无线网卡通常有两种驱动方案:
- 使用内核自带的开源模块
brcmfmac - 安装闭源的
broadcom-wlDKMS 驱动(AUR 包broadcom-wl-dkms)
遇到的问题
系统早期曾通过 /etc/modprobe.d/blacklist-broadcom.conf 文件写入以下内容,对 Broadcom 系列驱动进行了黑名单设置:
blacklist brcmfmac
blacklist bcma
blacklist b43
blacklist b43legacy
blacklist brcmsmac
blacklist ssb
此举会导致内核自带的 brcmfmac 模块无法加载,系统无法检测到无线接口(未生成 wlp* 设备)。后续尝试安装闭源 broadcom-wl-dkms 驱动时,出现以下现象:
- PCI 设备可以正确检测到无线网卡
wl模块被编译并加载成功(可见lsmod | grep wl输出)lspci -k无法显示Kernel driver in use: wl- 无法生成无线接口,
ip link和iw dev均无对应网卡
系统日志 dmesg 并未提示 PCI ID 不支持或固件错误,仅提示 wl 驱动与内核安全补丁不完全兼容的警告信息。
解决思路
排查后发现,问题根本原因是早期遗留的黑名单配置阻止了内核开源驱动的加载,而闭源 wl 驱动在该特定苹果子设备 ID 上未能成功绑定,导致无线功能无法正常使用。
实际解决步骤
1️⃣ 卸载闭源驱动并移除 DKMS 安装记录:
sudo dkms remove broadcom-wl/6.30.223.271 --all
yay -Rns broadcom-wl-dkms
2️⃣ 删除黑名单配置文件:
sudo rm /etc/modprobe.d/blacklist-broadcom.conf
3️⃣ 重新生成 initramfs:
sudo mkinitcpio -P
4️⃣ 卸载并重新加载内核自带模块:
sudo modprobe -r wl
sudo modprobe -r brcmfmac
sudo modprobe brcmfmac
5️⃣ 重启系统:
sudo reboot
重启后的结果
系统重启后,内核会自动检测 PCI 总线上的 BCM43602,无需额外配置即可加载 brcmfmac 模块,生成无线接口(如 wlp3s0)。通过以下命令可验证:
lsmod | grep brcmfmac
ip link
最终,在无线测速工具(如 Netflix Fast)中,测试结果可稳定达到 200 Mbps 以上,性能表现优异,连接稳定,无需依赖闭源驱动。
总结
对于配备 BCM43602 无线芯片的苹果一体机,在 Arch Linux 等滚动发行版中,优先推荐使用内核自带的 brcmfmac 驱动,无需安装闭源 broadcom-wl,也不需要进行复杂的黑名单配置。
注意事项
- 如曾设置过黑名单,需彻底移除后重建 initramfs,确保驱动自动加载。
- 建议在内核更新后检查
lsmod和无线接口状态,确认网络可用性。 - 若系统层面有 EFI 或硬件无线开关,需要先在 macOS 或 EFI 配置中启用。
参考
- Arch Wiki — Broadcom wireless
- Linux Kernel Documentation — brcm80211