在 Ubuntu 22.04 上加载手动安装的固件

在 Ubuntu 22.04 上加载手动安装的固件

概括

我正在尝试用较新版本替换少量固件二进制文件,修复错误影响我的硬件。我按照应该加载新固件的程序操作,但似乎没有这样做。我该如何加载新固件?

将软件包更新linux-firmware至 24.04 (Noble Numbat) 正在开发的版本也可能一个可以接受的解决方案。如果可行,我可以问一个关于如何做的新问题。

系统详细信息

  • 操作系统:Ubuntu 22.04(Jammy Jellyfish)
  • 核心:6.5.0-15-通用#15~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC
  • 安全启动:

固件加载过程

以下是我尝试过的固件更新程序(目的是解决这个问题):

  1. 将默认二进制文件移出其目录。
    • 特定二进制文件是:

      /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
      
  2. 用较新的版本替换已删除的二进制文件。
  3. 调用sudo update-initramfs -u以重新生成初始 RAM 磁盘。
  4. 重启。

意想不到的结果

我认为新的二进制文件没有运行。原因如下。

  • 相关内核模块日志中的构建时间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输出)。

相关内容