【教程】在FydeOS 22上驱动 博通BCM43xx 网卡

FydeOS 下驱动 BCM43xx 无线网卡完整教程

本帖记录了在 FydeOS 系统上成功驱动 Broadcom BCM43xx 无线网卡(PCIe 接口)的完整流程。适用于内核已包含 b43 驱动模块但缺少对应固件的场景。


1. 问题诊断

1.1 确认硬件与驱动状态

首先,在 FydeOS 终端(Ctrl+Alt+Tshell)中执行以下命令,确认系统是否识别到网卡硬件并已加载驱动模块。

# 检查驱动模块是否加载
lsmod | grep b43

# 检查 PCI 设备列表
lspci -nn | grep -i network

预期结果

  • lsmod 输出中应包含 b43mac80211 等模块。
  • lspci 应显示类似 Broadcom BCM43228 802.11a/b/g/n 的设备。

1.2 检查内核日志以定位固件缺失问题

执行以下命令,查看 b43 驱动的详细加载日志。

dmesg | grep -i b43

关键错误信息(以本文为例):

b43-phy0: Broadcom 43228 WLAN found (core revision 30)
b43-phy0 ERROR: Firmware file "b43/ucode30_mimo.fw" not found
b43-phy0 ERROR: Firmware file "b43/n16initvals30.fw" not found

解读:硬件已被识别,但驱动所需的固件文件(.fw)缺失。错误码 -2 表示文件不存在。


2. 获取正确的固件文件

2.1 确定所需固件清单

根据日志中的 core revision(本例为 30)和错误提示,BCM43228 至少需要以下文件:

文件名 用途
ucode30_mimo.fw 微码(Microcode)
n16initvals30.fw 初始化表(Initvals)
n16bsinitvals30.fw 初始化表(备用)

注意:不同核心版本的网卡所需固件文件名中的数字会变化,请以 dmesg 实际提示为准。

2.2 下载固件文件

推荐源:LibreELEC 的固件仓库(CDN 加速,稳定可靠)。

打开FydeOS终端(Ctrl+Alt+T)
输入shell
输入sudo -i
在 FydeOS 终端中执行:

# 创建目标目录
sudo mkdir -p /lib/firmware/b43
cd /lib/firmware/b43

# 下载固件(如果 wget 不可用,将 wget 替换为 curl -O)
sudo wget https://cdn.jsdelivr.net/gh/LibreELEC/wlan-firmware@master/firmware/b43/ucode30_mimo.fw
sudo wget https://cdn.jsdelivr.net/gh/LibreELEC/wlan-firmware@master/firmware/b43/n16initvals30.fw
sudo wget https://cdn.jsdelivr.net/gh/LibreELEC/wlan-firmware@master/firmware/b43/n16bsinitvals30.fw

3. 加载固件与验证

3.1 重新加载驱动模块

下载完成后,执行以下命令让系统重新识别网卡并加载固件。

# 卸载 b43 模块(及其依赖)
sudo modprobe -r b43

# 重新加载 b43 模块
sudo modprobe b43

3.2 验证固件是否成功加载

再次检查内核日志。

dmesg | grep -i b43 | tail -20

成功标志

b43-phy3: Broadcom 43228 WLAN found (core revision 30)
b43-phy3: Found PHY: Analog 9, Type 4 (N), Revision 16
b43-phy3: Loading firmware version 666.2 (2011-02-23 01:15:07)

出现 Loading firmware version... 即表示固件已成功加载,网卡准备就绪。

3.3 检查网络接口

ip link show | grep -i wl
# 或
iwconfig

如果看到类似 wlan0wlpXsY 的接口,说明无线网卡已可用。


4. 常见问题与解决方案

4.1 写入 /lib/firmware/ 时提示“只读文件系统”

原因:FydeOS 根分区默认以只读方式挂载。
解决

sudo mount -o remount,rw /

若提示权限不足,可在开发者模式下执行。

4.2 wgetcurl 命令不可用

  • 解决:在 FydeOS 的 Linux 子系统(Termina)中执行,或通过 U 盘从其他电脑拷贝固件文件。
  • 子系统文件路径:宿主机的 /mnt/stateful_partition/crostini/ 目录可访问子系统文件。

4.3 下载的固件版本不匹配

  • 现象dmesg 仍然报错 Direct firmware load for ... failed with error -2,但文件名已正确。
  • 解决:确保下载的文件完整,且文件名与日志中提示的完全一致(区分大小写)。可从多个镜像源尝试。
2 个赞