降级iwlwifi

我问了这个问题,但我越来越确信我的问题源于一个有问题的iwlwifi固件版本。与其在那里混淆不清,我想问一下是否可以将我的 iwlwifi 固件降级到之前的版本。
如果可能的话,请告诉我具体的方法好吗?我对通用指示不太擅长。或者我错过了一个网站吗?

为希望能够解决问题而赞同,而不是硬着头皮去克服它。 - RobotHumans
2个回答

Linux固件源代码正在一个Git存储库中进行开发,因此可以轻松地回溯到所有旧版本的固件。
  1. 安装 git Install git
  2. 克隆仓库 (cgit web page):

    git clone http://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
    
  3. cd 到仓库:

    cd linux-firmware
    
  4. 按照 iwlwifi 开发页面或者 legacy 找到设备所需的固件,比如 iwlwifi-3945-2.ucode.

    find . -name "iwlwifi*"
    

    注意,对于某些设备来说,会保留多个版本的固件作为单独的文件,以便与旧版内核兼容。

  5. 查看文件的历史记录:

    git log iwlwifi-3945-2.ucode
    

    显示结果如下(省略了一些无关行):

    commit d90a18c9e7eef19ab978c4c0bb2d2d4b8fa49dce
    Date:   Thu May 14 18:15:50 2009 +0100
    
        linux-firmware: Update Intel Wireless Wifi 3945 firmware
    
        版本现在是 15.32.2.9
    
    commit caef650a8c909f557ed7f6b23c413401d6994fdb
    Date:   Tue Jan 20 21:37:48 2009 +0000
    
        linux-firmware: Add Intel Wireless Wifi firmware
    
  6. 顶部的修订版本是你当前工作目录中的版本。要获取相同文件的旧版本,执行以下操作:

    git show caef650a8c909f557ed7f6b23c413401d6994fdb iwlwifi-3945-2.ucode > ~/some/destination/iwlwifi-3945-2.ucode
    

    参考:如何从Git的特定修订版本中检索单个文件?

    然而,大多数固件文件在仓库中只有一个修订版本,并且通过多个文件名进行版本控制。

  7. 将固件安装在 /usr/local/lib/firmware(手动安装固件文件的位置)中,通过复制文件到此处实现:

    sudo cp /path/to/iwlwifi-3945-2.ucode /usr/local/lib/firmware/
    
  8. 删除并重新插入内核模块(s):

    rmmod iwldvm && rmmod iwlwifi
    modprobe iwlwifi && modprobe iwldvm
    

    查看 dmesg 确认固件是否加载。


如果你想知道仓库中是否有文件被删除了,可以试试这个方法:
git log --diff-filter=D --summary | grep delete

写作时,从未删除过任何英特尔固件。


谢谢。我正在尝试,之后会告诉你结果。 - algebralives
特定的固件对我来说仍然无法解决问题,但方法论是完美的。(我相信这是一个硬件问题,很快会把它拆开检查。)有两个问题:(1)我需要使用sudo rmmod和modprobe命令,这是正常的吗?(2)我的固件安装在/lib/firmware而不是/usr/local/lib/firmware目录下,这有关系吗?再次感谢! - algebralives
1
  1. 重新加载内核模块将加载固件。仅替换文件不会影响正在运行的系统。
  2. 实际上,并没有真正的规定将用户提供的固件(非通过软件包管理安装)安装在/usr/local/lib/firmware目录下(同样,/usr/local/bin用于本地安装的可执行文件)。一般来说,您不应该触碰系统目录中的任何内容 - 这会让软件包管理混乱。请注意,该文件将在下次软件包更新时被覆盖!
- gertvdijk


我之前看到了那些,而且肯定使用过它们。如果可能的话,我只是想要早一些的东西。谢谢。 - algebralives