近期某型号苹果一体机,在 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-wl DKMS 驱动(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 linkiw 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

Leave a Reply

Your email address will not be published. Required fields are marked *