Lately I discovered an issue with my WiFi adapter on my professional laptop (a Lenovo T450) : it was not working. Pretty inconvenient. After some digging, I tested and had to adapt part of things I found on Google. So, to begging with, the symptoms :

  • no more wireless adapter in my NetworkManager or any other tools, including ifconfig
  • dmesg reports issues loading the iwlwifi firmware<

The dmesg output looks like :

1
2
3
4
5
6
7
[ 4.237444] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-12.ucode failed with error -2
[ 4.237466] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-11.ucode failed with error -2
[ 4.237479] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-10.ucode failed with error -2
[ 4.237482] iwlwifi 0000:03:00.0: request for firmware file 'iwlwifi-7265D-10.ucode' failed.
[ 4.237493] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-9.ucode failed with error -2
[ 4.237495] iwlwifi 0000:03:00.0: request for firmware file 'iwlwifi-7265D-9.ucode' failed.
[ 4.237497] iwlwifi 0000:03:00.0: no suitable firmware found!

I tried to download the official firmware from Intel, namely iwlwifi-7265-ucode-25.30.14.0, with no luck. Though, I decided to keep the ucode files from this archive in my /lib/firmware/. Note that, depending on your distro, this previous step might be enough. To check :

1
2
update-initramfs -u
reboot

Then, further dig pointed some issues with the iwlwifi package not handling properly this version of the AC 7265. From lspci :

1
2
03:00.0 Network controller [0280]: Intel Corporation Wireless 7265 [8086:095b] (rev 59)
 Subsystem: Intel Corporation Dual Band Wireless-AC 7265 [8086:5210]

Here, the main points are the main ID 095b and the Subsystem ID 5210. To solve this, let’s recompile the backport package of iwlwifi with a tiny difference (the sed line is to adapt with your IDs) :

1
2
3
4
5
6
7
8
9
10
sudo apt-get install build-essential linux-headers-$(uname -r)
wget https://www.dropbox.com/s/gyuvdlhzx5ho277/backports-20150731.tar.gz
tar -zxvf backports-20150731.tar.gz
cd backports-20150731/
sed -i 's/IWL_PCI_DEVICE(0x095B, 0x9200, iwl7265_2ac_cfg)/IWL_PCI_DEVICE(0x095B, 0x5212, iwl7265_2ac_cfg)/' drivers/net/wireless/iwlwifi/pcie/drv.c 
make defconfig-iwlwifi
make
sudo make install
update-initramfs -u
reboot

Now, if you check your dmesg, you’ll see :

1
2
3
4
5
6
7
8
9
10
11
12
[ 3.950804] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-15.ucode failed with error -2
[ 3.952513] audit: type=1400 audit(1458119598.627:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/sbin/dhclient" pid=657 comm="apparmor_parser"
[ 3.952521] audit: type=1400 audit(1458119598.627:6): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=657 comm="apparmor_parser"
[ 3.952525] audit: type=1400 audit(1458119598.627:7): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/connman/scripts/dhclient-script" pid=657 comm="apparmor_parser"
[ 3.953091] audit: type=1400 audit(1458119598.627:8): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=657 comm="apparmor_parser"
[ 3.953100] audit: type=1400 audit(1458119598.627:9): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/lib/connman/scripts/dhclient-script" pid=657 comm="apparmor_parser"
[ 3.953362] audit: type=1400 audit(1458119598.627:10): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/lib/connman/scripts/dhclient-script" pid=657 comm="apparmor_parser"
[ 3.955605] iwlwifi 0000:03:00.0: loaded firmware version 25.30.14.0 op_mode iwlmvm
[ 3.975336] input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input7
[ 4.001495] iwlwifi 0000:03:00.0: Detected Intel(R) Dual Band Wireless AC 7265, REV=0x210
[ 4.001843] iwlwifi 0000:03:00.0: L1 Enabled - LTR Enabled
[ 4.002290] iwlwifi 0000:03:00.0: L1 Enabled - LTR Enabled

And, voilà, your wireless adapter is back online !* **NB**: you’ll have to redo these steps after every kernel update, except if the iwlwifi module got fixed.

Updated: