Downgrading iwlwifi

5,121

Solution 1

The Linux firmware sources are being developed in a Git repository, so it's easy to go back in time for all older releases of the firmware.

  1. Install git Install git
  2. Clone the repository (cgit web page):

    git clone http://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
    
  3. cd into the repository:

    cd linux-firmware
    
  4. Locate the firmware for your device as per the iwlwifi development page or legacy (scroll down), e.g. iwlwifi-3945-2.ucode.

    find . -name "iwlwifi*"
    

    Notice that for some devices multiple versions are kept as separate files, for the compatibility of older kernel versions.

  5. Have a look at the history of the file:

    git log iwlwifi-3945-2.ucode
    

    shows (removed some irrelevant lines):

    commit d90a18c9e7eef19ab978c4c0bb2d2d4b8fa49dce
    Date:   Thu May 14 18:15:50 2009 +0100
    
        linux-firmware: Update Intel Wireless Wifi 3945 firmware
    
        Version is now 15.32.2.9
    
    commit caef650a8c909f557ed7f6b23c413401d6994fdb
    Date:   Tue Jan 20 21:37:48 2009 +0000
    
        linux-firmware: Add Intel Wireless Wifi firmware
    
  6. The revision at the top is the version in your working directory. To retrieve an older version of the same file, do this:

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

    see also: How to retrieve a single file from specific revision in Git?

    However, most firmware files only have a single revision in the repository and are versioned by just having multiple filenames.

  7. Install the firmware in /usr/local/lib/firmware (location for manually installed firmware files) by copying the file there:

    sudo cp /path/to/iwlwifi-3945-2.ucode /usr/local/lib/firmware/
    
  8. Remove and re-insert the kernel module(s):

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

    And look at dmesg to see if the firmware gets loaded.


In case you wonder if any files have been removed from the repository, try this:

git log --diff-filter=D --summary | grep delete

At the time of writing, no Intel firmware has been deleted ever.

Solution 2

At

http://wireless.kernel.org/en/users/Drivers/iwlwifi

you can find firmware for Intel wireless chips.

But I don't know if you can find a older version for your specific chip.

Share:
5,121

Related videos on Youtube

Carlo Felicione
Author by

Carlo Felicione

Updated on September 18, 2022

Comments

  • Carlo Felicione
    Carlo Felicione over 1 year

    I asked this question, but I'm becoming more and more certain that my problem stems from a faulty iwlwifi firmware version. Rather than muddy the water there, I'd like to ask if it's possible to downgrade my islwifi firmware to a previous version.

    If it's possible, can you tell me specifically how? I'm not really great with generic instructions. Or is there a website that I've missed?

  • Carlo Felicione
    Carlo Felicione almost 11 years
    Thanks. I'm trying it now, and I'll let you know what happens.
  • Carlo Felicione
    Carlo Felicione almost 11 years
    The particular firmware still didn't work for me to solve the problem, but the methodology was perfect. (I believe it's a hardware issue and will take it apart soon.) Two questions: (1) I needed to sudo rmmod and modprobe. Is that typical? (2) My firmware was installed in /lib/firmware not /usr/local/lib/firmware. Does it matter? Thanks again!
  • Carlo Felicione
    Carlo Felicione almost 11 years
    I saw those earlier and definitely used them. I just wanted something earlier if possible. Thanks.
  • gertvdijk
    gertvdijk almost 11 years
    1) Reloading the kernel modules will load the firmware. Just replacing the files won't affect a running system. 2) Not really, it's just a convention to install user-supplied firmwares (not by package management) in /usr/local/lib/firmware (likewise, /usr/local/bin for local-installed binaries). Generally, you should not touch anything in system directories - that will confuse the package management. Be aware that the file will be overwritten on the next package update now!