How do I change which firmware is used for my wireless card
The firmware version that is requested is written into the driver code. As you can see, the particular version if iwlwifi
that you are using requests -16 firmware. You can load several different ucode files into /lib/firmware
and the driver will call the version it was written to require.
NOTE: In some cases, there is a mismatch between what the driver code seems to require and what actually loads.
You could install a later version of iwlwifi; generally, this is done by installing a newer Ubuntu version. In Ubuntu 17.04, modinfo iwlwifi
says:
filename: /lib/modules/4.10.0-22-generic/kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
license: GPL
author: Copyright(c) 2003- 2015 Intel Corporation <[email protected]>
description: Intel(R) Wireless WiFi driver for Linux
<snip>
firmware: iwlwifi-8000C-26.ucode
<snip>
The corresponding linux-firmware
package contains -13, -16 and -21; but not -26!
You certainly can upgrade your firmware. In any case, the driver will load the firmware file it is written to require. In many cases, the driver will be written to use any of several versions; for example, -6, -7, -8 or -9. The driver looks for the newest it can find in /lib/firmware
and, if it fails to find it, loads the next newest and so on. In the 'for instance' I give above, if the newest firmware package contains -6, -7, -8, -9 and -10, no harm will be done. The driver simply loads the newest and latest it is written for and ignores the rest. -10 will not load.
To upgrade yours:
wget http://mirrors.kernel.org/ubuntu/pool/main/l/linux-firmware/linux-firmware_1.164_all.deb
sudo dpkg -i linux*.deb
If your desire to load newer firmware is motivated by a wireless issue, we'd love to hear it and try to help.
Related videos on Youtube
PiotrChernin
Updated on September 18, 2022Comments
-
PiotrChernin over 1 year
I'm trying to update the firmware for my wireless card, an Intel 8260 with the
iwlwifi
driver./lib/firmware/
has the following files, among others:iwlwifi-8000C-16.ucode (version 16.242414.0) iwlwifi-8000C-22.ucode (version 22.361476.0)
(I've used the information at https://packages.debian.org/sid/firmware-iwlwifi to identify the versions of these files).
lshw
shows that the current firmware is version 16.242414.0. How do I change it so that version 22.361476.0 is used?-
Panther about 7 yearsWhy are you using debian packages on Ubuntu ? Does 22.361476.0 load / work ? I suggest removing 16.242414.0 as the easiest solution (assuming 22.361476.0 is working).
-
Zanna about 7 yearsFor others' reference I think you are ultimately trying to use the answer here to solve your problem
-
chili555 about 7 years@Zanna I agree. The latest package is now this: mirrors.kernel.org/ubuntu/pool/main/l/linux-firmware/…
-
PiotrChernin about 7 years@bodhi.zazen - I'm not using debian packages, just using that page for reference. I think that the rest of your comments are exactly what I'm trying to learn in the first place. I don't know what you mean by them.
-
Panther about 7 years
sudo apt-get purge iwlwifi
then install the version you want either with apt-get or from .deb -
PiotrChernin about 7 years@bodhi.zazen Thanks, I'm starting to understand. But why would apt-get be involved at all here? I already have both of the files on the system already. Repositories shouldn't be involved.
-
Panther about 7 yearsUse apt-get or any package manager you wish to install and remove packages. You should be using repositories rather than downloading .deb
-
PiotrChernin about 7 years@bodhi.zazen I shouldn't be using repositories OR downloading .deb files because I already have the files on-disk. I just want to switch between them.
-
chili555 about 7 years@bodhi.zazen
iwlwifi
isn't the name of a package that can be installed or purged. It is the name of the driver.
-
-
PiotrChernin about 7 yearsThank you so much! I can see that I misunderstood several things. I was attempting to follow the first answer at this question, which starts with upgrading the firmware. It sounds like I can't upgrade my firmware any further without upgrading to a new release, is that correct?
-
PiotrChernin about 7 yearsSo the output of
lshw
shows the firmware version that the driver requires, not the one it's currently using? In that case, how is any firmware ever upgraded without upgrading the driver itself? -
chili555 about 7 yearsPlease see my edit above in a few moments.
lshw
shows the version that loaded, as doesdmesg | grep iwl
-
PiotrChernin about 7 yearsThere's still something I don't understand. If the driver requires a specific version, then how can I upgrade firmware? It will keep using the version that it's written to require, no matter what, the way that mine is still using version 16 even though version 22 is available.
-
PiotrChernin about 7 yearsSo is this understanding correct:
modprobe <drivername>
shows what firmware version is required;lshw
anddmesg
provide the firmware version that loaded; the two are almost always the same, excepting rare cases. (?) -
chili555 about 7 years
modinfo
notmodprobe
shows the firmware versions that will be accepted. However, sometimes, as I noted above, sometimes there is a disconnect. Essentially, older driver versions ofiwlwifi
were written for older firmware versions. As the driver improves in newer versions, so then, must the firmware. -
PiotrChernin about 7 yearsSorry, I meant
modinfo
. Can't edit it. -
PiotrChernin about 7 yearsAs a newbie, I've been advised many times not to circumvent the repositories or package managers to install packages, including on that package's download page. And this isn't even an Ubuntu package. So, as a general principle, how do I know that what you're suggesting is safe?
-
chili555 about 7 yearsHow is packages.ubuntu.com not an Ubuntu package?? kernel.org is just a mirror site.
-
PiotrChernin about 7 yearsMy mistake. I was confused by the ".deb" extension and thought it was intended for Debian.
-
Brayam Valero over 2 yearsI came here because I have an issue with - I think - the wifi driver. I read the last sentence of your answer as an allowance to post a link to my question, in the hope you all can give some light: askubuntu.com/q/1368935/109449 Thanks a lot!