How to configure Intel Wifi on Debian Linux when you get firmware: failed to load iwlwifi-8265-36.ucode error

I have an Intel Corporation Wireless/WiFi 8265 / 8275 (rev 78) card. How do I configure this card? I always get an error, “iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-8265-36.ucode“. How do I load iwlwifi-8265-36 firmware and enable this driver card on Debian Linux version 10/11 and assign an IP address using DHCP?

Intel WiFi device needs firmware, and it has to be loaded into the device driver during the device initialization. Some firmware is opensource and free to load. However, Intel WiFi driver requires a non-free binary blob. Let us see how to configure Intel WiFi on Debian to load firmware and configure networking using the command-line.
Tutorial details
Difficulty Intermediate (rss)
Root privileges Yes
Requirements Debian Linux 10 or 11
Time 5m

iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-8265-36.ucode (-2) error and solution

Here is the error when you run the dmesg command:

[   85.227230] iwlwifi 0000:01:00.0: enabling device (0000 -> 0002)
[   85.233019] iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-8265-36.ucode (-2)
[   85.233059] firmware_class: See https://wiki.debian.org/Firmware for information about missing firmware
[   85.233101] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8265-36.ucode failed with error -2
[   85.233110] iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-8265-35.ucode (-2)
[   85.233146] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8265-35.ucode failed with error -2
[   85.233153] iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-8265-34.ucode (-2)
[   85.233191] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8265-34.ucode failed with error -2
[   85.233201] iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-8265-33.ucode (-2)
[   85.233238] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8265-33.ucode failed with error -2
[   85.233246] iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-8265-32.ucode (-2)
[   85.233248] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8265-32.ucode failed with error -2
[   85.233255] iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-8265-31.ucode (-2)
[   85.233334] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8265-31.ucode failed with error -2
[   85.233343] iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-8265-30.ucode (-2)
[   85.233386] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8265-30.ucode failed with error -2
[   85.233395] iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-8265-29.ucode (-2)
[   85.233434] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8265-29.ucode failed with error -2
[   85.233444] iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-8265-28.ucode (-2)
[   85.233482] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8265-28.ucode failed with error -2
[   85.233490] iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-8265-27.ucode (-2)
[   85.233528] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8265-27.ucode failed with error -2
[   85.233537] iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-8265-26.ucode (-2)
[   85.233575] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8265-26.ucode failed with error -2
[   85.233584] iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-8265-25.ucode (-2)
[   85.233630] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8265-25.ucode failed with error -2
[   85.233639] iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-8265-24.ucode (-2)
[   85.233677] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8265-24.ucode failed with error -2
[   85.233686] iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-8265-23.ucode (-2)
[   85.233724] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8265-23.ucode failed with error -2
[   85.233732] iwlwifi 0000:01:00.0: firmware: failed to load iwlwifi-8265-22.ucode (-2)
[   85.233772] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8265-22.ucode failed with error -2
[   85.233774] iwlwifi 0000:01:00.0: minimum version required: iwlwifi-8265-22
[   85.233807] iwlwifi 0000:01:00.0: maximum version supported: iwlwifi-8265-36
[   85.233843] iwlwifi 0000:01:00.0: check git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git

Another message indicating Intel GPU firmware missing:

[   85.310393] i915 0000:00:02.0: firmware: failed to load i915/kbl_dmc_ver1_04.bin (-2)
[   85.310399] i915 0000:00:02.0: Direct firmware load for i915/kbl_dmc_ver1_04.bin failed with error -2

This one indicates that Bluetooth firmware missing:

[   85.317912] bluetooth hci0: firmware: failed to load intel/ibt-12-16.sfi (-2)
[   85.317918] bluetooth hci0: Direct firmware load for intel/ibt-12-16.sfi failed with error -2

How to configure Intel WiFi on Debian Linux to load binary firmware

Edit the /etc/apt/sources.list and make sure the non-free added to the sources.list file.
sudo vim /etc/apt/sources.list
My updated file:

deb http://deb.debian.org/debian/ buster main non-free
deb-src http://deb.debian.org/debian/ buster main non-free

deb http://security.debian.org/debian-security buster/updates main non-free
deb-src http://security.debian.org/debian-security buster/updates main non-free

# buster-updates, previously known as 'volatile'
deb http://deb.debian.org/debian/ buster-updates main non-free
deb-src http://deb.debian.org/debian/ buster-updates main non-free

# This system was installed using small removable media
# (e.g. netinst, live or single CD). The matching "deb cdrom"
# entries were disabled at the end of the installation process.
# For information about how to configure apt package sources,
# see the sources.list(5) manual.

Update repo and apply all security updates on Debian Linux

Run the apt command:
sudo apt update
sudo apt upgrade

Searching for Intel WiFi firmware on Debian Linux 10 or 11

Open the terminal and then run:
sudo apt search firmware-iwlwifi
We will see something as follows:

Sorting... Done
Full Text Search... Done
firmware-iwlwifi/stable 20190114-2 all
  Binary firmware for Intel Wireless cards

Installing Intel Wifi driver on Debian Linux when you get firmware: failed to load iwlwifi-8265-36.ucode error

Execute the following command:
sudo apt install firmware-iwlwifi
Installtion session:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
  linux-image-4.19.0-11-amd64
Use 'apt autoremove' to remove it.
The following NEW packages will be installed:
  firmware-iwlwifi
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 5,318 kB of archives.
After this operation, 45.1 MB of additional disk space will be used.
Get:1 http://deb.debian.org/debian buster/non-free amd64 firmware-iwlwifi all 20190114-2 [5,318 kB]
Fetched 5,318 kB in 1s (5,312 kB/s)        
Selecting previously unselected package firmware-iwlwifi.
(Reading database ... 36546 files and directories currently installed.)
Preparing to unpack .../firmware-iwlwifi_20190114-2_all.deb ...
Unpacking firmware-iwlwifi (20190114-2) ...
Setting up firmware-iwlwifi (20190114-2) ...

Loading Intel WiFi device driver firemware

Run the modprobe command to add or remove firmware and driver for Intel WiFI:
sudo modprobe -r iwlwifi
sudo modprobe iwlwifi
sudo dmesg

Confirmtion:

[ 1642.714145] Intel(R) Wireless WiFi driver for Linux
[ 1642.714146] Copyright(c) 2003- 2015 Intel Corporation
[ 1642.714842] iwlwifi 0000:01:00.0: firmware: direct-loading firmware iwlwifi-8265-36.ucode
[ 1642.715204] iwlwifi 0000:01:00.0: loaded firmware version 36.9f0a2d68.0 op_mode iwlmvm
[ 1642.758139] iwlwifi 0000:01:00.0: Detected Intel(R) Dual Band Wireless AC 8265, REV=0x230
[ 1642.817159] iwlwifi 0000:01:00.0: base HW address: b4:6b:fc:32:7a:12
[ 1642.901773] ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs'
[ 1642.901990] thermal thermal_zone5: failed to read out thermal zone (-61)
[ 1642.904612] iwlwifi 0000:01:00.0 wlp1s0: renamed from wlan0

Please note down the “wlp1s0” WiFi interface name.

Finding out Intel Wifi interface name on Debian

We use the ip command ip -c a s
ip -c link show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 54:b2:03:09:00:be brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.166/24 brd 192.168.2.255 scope global dynamic eno1
       valid_lft 5374sec preferred_lft 5374sec
    inet6 fe80::56b2:3ff:fe09:be/64 scope link 
       valid_lft forever preferred_lft forever
3: wlp1s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether b4:6b:fc:32:7a:12 brd ff:ff:ff:ff:ff:ff

The wlp1s0 is down as our WiFi router needs authentication, and then only it will assign an IP address using DHCP. Once firmware loaded driver activated, Intel Wifi on Debian can be configured using various methods such as:

  1. nmcli command
  2. GNOME or KDE Network settings GUI tools
  3. wpa_supplicant command

Configuring Intel Wifi on Debian Linux with DHCP

I am going to use wpa_supplicant. It is a cross-platform supplicant with support for WEP, WPA, and WPA2 when using WiFi. Let us install it:
sudo apt install wpasupplicant
Next create a new config file:
sudo sh -c 'wpa_passphrase your_ssid "wifi_password" > /etc/wpa_supplicant/wpa_supplicant.conf
Edit the /etc/wpa_supplicant/wpa_supplicant.conf, run:
sudo vim /etc/wpa_supplicant/wpa_supplicant.conf
Update it by appending ctrl_interface and update_config as follows:

network={
	ssid="your_ssid"
	psk=some_random_encrypted_wifi_password
}
ctrl_interface=/run/wpa_supplicant 
update_config=1

So far, so good. We set up WiFi SSID and passphrase/password for wireless the router. Next, create a new config file for our interface:
sudo vim /etc/network/interfaces.d/wlp1s0.conf
Append the following config:

allow-hotplug wlp1s0
iface wlp1s0 inet dhcp
	wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Restart services using the systemctl command sudo systemctl reenable wpa_supplicant.service
sudo systemctl restart wpa_supplicant.service
sudo systemctl restart networking.service

Verify IP address and concitivity using the ping command:
ip -br -c link show
ip -br -c addr show
ip -c addr show wlp1s0
ping -c 4 www.cyberciti.biz

Summing up

And there you have it, Intel WiFi’s missing firmware loaded and the device configured to obtain an IP address and DNS information using DHCP. See Debian Wiki documentation for further information.


🐧 Please support my work on Patreon or with a donation.
🐧 Get the latest tutorials on Linux, Open Source & DevOps via:
CategoryList of Unix and Linux commands
File Managementcat
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network Utilitiesdig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
0 comments… add one

Leave a Reply

Your email address will not be published. Required fields are marked *

Use HTML <pre>...</pre> for code samples. Problem posting comment? Email me @ webmaster@cyberciti.biz