概括
我正在尝试用较新版本替换少量固件二进制文件,修复错误影响我的硬件。我按照应该加载新固件的程序操作,但似乎没有这样做。我该如何加载新固件?
将软件包更新linux-firmware
至 24.04 (Noble Numbat) 正在开发的版本也可能一个可以接受的解决方案。如果可行,我可以问一个关于如何做的新问题。
系统详细信息
- 操作系统:Ubuntu 22.04(Jammy Jellyfish)
- 核心:6.5.0-15-通用#15~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC
- 安全启动:在
固件加载过程
以下是我尝试过的固件更新程序(目的是解决这个问题):
- 将默认二进制文件移出其目录。
这特定二进制文件是:
/lib/firmware/mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin /lib/firmware/mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin /lib/firmware/mediatek/WIFI_RAM_CODE_MT7961_1.bin
- 用较新的版本替换已删除的二进制文件。
- 调用
sudo update-initramfs -u
以重新生成初始 RAM 磁盘。 - 重启。
意想不到的结果
我认为新的二进制文件没有运行。原因如下。
- 相关内核模块日志中的构建时间
dmesg
没有改变:[ 2.302579] mt7921e 0000:01:00.0: enabling device (0000 -> 0002) [ 2.311065] mt7921e 0000:01:00.0: ASIC revision: 79220010 [ 2.399380] mt7921e 0000:01:00.0: HW/SW Version: 0x8a108a10, Build Time: 20221227123154a [ 2.778037] mt7921e 0000:01:00.0: WM Firmware Version: ____000000, Build Time: 20221227123243 [ 3.867760] mt7921e 0000:01:00.0 wlp1s0: renamed from wlan0
srcversion
相关modinfo
输出( )中的数字modinfo mt7921e
没有改变 - 虽然我不确定如果加载新固件它是否会改变,因为它似乎不是来自替换的二进制文件。
⋮filename: /lib/modules/6.5.0-15-generic/kernel/drivers/net/wireless/mediatek/mt76/mt7921/mt7921e.ko
firmware: mediatek/WIFI_MT7922_patch_mcu_1_1_hdr.bin firmware: mediatek/WIFI_RAM_CODE_MT7922_1.bin firmware: mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin firmware: mediatek/WIFI_RAM_CODE_MT7961_1.bin srcversion: 6691EA96F8FB6412FC35FFB
- 我没有注意到硬件行为有任何变化。
故障排除检查
- 新的二进制文件与旧的不同,但具有相同的名称(用 检查
diff
)。 - 新旧二进制文件的权限匹配。
- 我从 ( ) 启动的初始 RAM 磁盘的修改日期
/boot/initrd.img-6.5.0-15-generic
与我上次运行的日期相符update-initramfs
。 - 根据 @DanielT 的建议,我尝试跳过程序中的第 2 步,这应该会使
mt7921e
模块缺少一些固件。这仍然不会影响dmesg
输出或硬件行为(尽管它确实会改变modprobe
输出)。