1
  1. How can we find out information about a firmware, such as whether it is installed, and if installed, its version?

    if the firmware is installed, how can we find out its version and if it is outdated?

    If the firmware is not installed, how can we install it from where?

    For example, my lshw -C network says driver=iwlwifi driverversion=3.16.0-34-generic firmware=8.83.5.1 build 33692. But my module iwlwifi depends on the following firmwares:

    $ modinfo iwlwifi
    filename:       /lib/modules/3.16.0-34-generic/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko
    license:        GPL
    author:         Copyright(c) 2003- 2014 Intel Corporation <ilw@linux.intel.com>
    version:        in-tree:
    description:    Intel(R) Wireless WiFi driver for Linux
    firmware:       iwlwifi-100-5.ucode
    firmware:       iwlwifi-1000-5.ucode
    firmware:       iwlwifi-135-6.ucode
    firmware:       iwlwifi-105-6.ucode
    firmware:       iwlwifi-2030-6.ucode
    firmware:       iwlwifi-2000-6.ucode
    firmware:       iwlwifi-5150-2.ucode
    firmware:       iwlwifi-5000-5.ucode
    firmware:       iwlwifi-6000g2b-6.ucode
    firmware:       iwlwifi-6000g2a-5.ucode
    firmware:       iwlwifi-6050-5.ucode
    firmware:       iwlwifi-6000-4.ucode
    firmware:       iwlwifi-7265-9.ucode
    firmware:       iwlwifi-3160-9.ucode
    firmware:       iwlwifi-7260-9.ucode
    firmware:       iwlwifi-8000-8.ucode
    srcversion:     93D664267873827B22C4309
    

    What is the version of my firmware, 8.83.5.1 build 33692, or 8000-8 or some other number in the firmware names listed by modinfo iwlwifi?

  2. I followed Mark's comment:

    $ grep firmware /var/log/syslog
    Apr 13 08:55:39 ocean kernel: [39341.818595] iwlwifi 0000:03:00.0: Loaded firmware version: 8.83.5.1 build 33692
    Apr 13 08:55:54 ocean kernel: [39357.100042] iwlwifi 0000:03:00.0: Failed to load firmware chunk!
    Apr 13 08:56:09 ocean kernel: [39372.448055] iwlwifi 0000:03:00.0: Failed to load firmware chunk!
    Apr 13 08:56:25 ocean kernel: [39387.640078] iwlwifi 0000:03:00.0: Failed to load firmware chunk!
    Apr 13 08:57:06 ocean kernel: [39429.560058] iwlwifi 0000:03:00.0: Failed to load firmware chunk!
    Apr 13 08:57:22 ocean kernel: [39444.744048] iwlwifi 0000:03:00.0: Failed to load firmware chunk!
    Apr 13 08:57:37 ocean kernel: [39460.560055] iwlwifi 0000:03:00.0: Failed to load firmware chunk!
    Apr 13 08:57:53 ocean kernel: [39475.752032] iwlwifi 0000:03:00.0: Failed to load firmware chunk!
    Apr 13 08:58:18 ocean kernel: [39500.944045] iwlwifi 0000:03:00.0: Failed to load firmware chunk!
    Apr 13 08:58:33 ocean kernel: [39516.484054] iwlwifi 0000:03:00.0: Failed to load firmware chunk!
    Apr 13 08:58:49 ocean kernel: [39531.640046] iwlwifi 0000:03:00.0: Failed to load firmware chunk!
    Apr 13 08:59:47 ocean kernel: [39589.852052] iwlwifi 0000:03:00.0: Failed to load firmware chunk!
    Apr 13 09:00:02 ocean kernel: [39605.004072] iwlwifi 0000:03:00.0: Failed to load firmware chunk!
    Apr 13 09:00:18 ocean kernel: [39620.780054] iwlwifi 0000:03:00.0: Failed to load firmware chunk!
    Apr 13 09:00:33 ocean kernel: [39635.960060] iwlwifi 0000:03:00.0: Failed to load firmware chunk!
    Apr 13 09:00:58 ocean kernel: [39661.160053] iwlwifi 0000:03:00.0: Failed to load firmware chunk!
    Apr 13 09:01:14 ocean kernel: [39676.592040] iwlwifi 0000:03:00.0: Failed to load firmware chunk!
    Apr 13 09:01:29 ocean kernel: [39691.764037] iwlwifi 0000:03:00.0: Failed to load firmware chunk!
    Apr 13 09:03:19 ocean kernel: [39801.904071] iwlwifi 0000:03:00.0: Failed to load firmware chunk!
    Apr 13 09:06:42 ocean kernel: [40004.872045] iwlwifi 0000:03:00.0: Failed to load firmware chunk!
    Apr 13 09:13:08 ocean kernel: [    1.733757] psmouse serio1: trackpoint: IBM TrackPoint firmware: 0x0e, buttons: 3/3
    Apr 13 09:13:08 ocean kernel: [    7.193448] iwlwifi 0000:03:00.0: loaded firmware version 8.83.5.1 build 33692 op_mode iwldvm
    Apr 13 13:24:05 ocean kernel: [15067.014026] iwlwifi 0000:03:00.0: loaded firmware version 8.83.5.1 build 33692 op_mode iwldvm
    

    It doesn't say explicitly which firmwares needed by iwlwifi fail to load. How can I find them out, and then solve the failing-to-load problem?

Tim
  • 101,790

1 Answers1

4

The error message doesn't indicate that iwlwifi couldn't find a required firmware file; it indicates that it was unable to load a chunk of firmware into the adapter. So iwlwifi found the firmware it was looking for, it just couldn't load (all of) it into the adapter...

Generally speaking, when looking for firmware, if you're using your distribution's kernel you should use your distribution's firmware packages; if you're using an upstream kernel you should use the canonical firmware repository.

As for your specific firmware, its version is "8.83.5.1 build 33692". The numbers in the firmware file names correspond to specific chips and API versions; so for example iwlwifi-8000-8.ucode is the firmware used by iwl-8000 for 8260 and 4165 devices, with API version 8. The iwlwifi module lists all the different firmware files for all the chipsets it supports; since it supports lots of chipsets, it declares lots of firmware files even though it generally only needs one for any given device.

Thus iwlwifi-7260-9.ucode has nothing to do with iwlwifi-8000-8.ucode; it is used by iwl-7000. If newer versions of the latter are published in future, you'll see an update in linux-firmware, but the filename will only change if the API version is increased (presumably because it changes in a backwards-incompatible fashion).

Stephen Kitt
  • 434,908
  • I'm not 100% sure this works. It would be nice if we didn't have to assume based on the naming conventions. – Evan Carroll Jun 27 '18 at 01:16
  • @Evan what are you not sure of? What are we assuming? – Stephen Kitt Jun 27 '18 at 05:14
  • In my case, I'm using Advanced-N 6205 AGN, that's in the iwlwifi-6000g2a-6.ucode, so it's not evident by the name alone as there is also iwlwifi-6050-5.ucode, and iwlwifi-6000-6.ucode. See this question for more info, https://unix.stackexchange.com/q/452123/3285 – Evan Carroll Jun 27 '18 at 23:26
  • @Evan you’re assuming I matched the firmware by name... I pulled the names of the firmware files from the relevant source code (I’ve updated the links so they’re usable.) – Stephen Kitt Jun 28 '18 at 06:29