Community,
I maintain many computers that run 16.04. The hardware builld on the machines is as close to identical as I can make it. These machines are distributed all over the place and in many cases disconnected from the internet. They do use the wireless card in monitor mode though.
A recent revision from my hardware vendor has required a change in the wireless card that results in a non-working wireless device using my base installation image...it's old Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-31-generic x86_64)
The hardware change is subtle as follows...note the difference in subsystem id from [8086:0010] to [8086:10b0]
Working (old hardware):
# lspci -knn -s 03:00.0
03:00.0 Network controller [0280]: Intel Corporation Wireless 8260 [8086:24f3] (rev 3a)
Subsystem: Intel Corporation Dual Band Wireless-AC 8260 [8086:0010]
Kernel driver in use: iwlwifi
Kernel modules: iwlwifi
Non-working (new hardware):
# lspci -knn -s 03:00.0
03:00.0 Network controller [0280]: Intel Corporation Wireless 8260 [8086:24f3] (rev 3a)
Subsystem: Intel Corporation Wireless 8260 [8086:10b0]
I found the associated edit where 8086:10b0 hardware id was added in the linux kernel github here. It looks like my kernel predates this change which was made on 23-05-2016.
Which brings me to my approach on how I got this working.
I've downloaded a backport kernel from: https://mirrors.edge.kernel.org/pub/linux/kernel/projects/backports/stable/v4.4.2/
I then added the missing hardware id into the file: ./drivers/net/wireless/iwlwifi/pcie/drv.c so that it now reads as follows:
<snip>
/* 8000 Series */
{IWL_PCI_DEVICE(0x24F3, 0x0010, iwl8260_2ac_cfg)},
{IWL_PCI_DEVICE(0x24F3, 0x10B0, iwl8260_2ac_cfg)}, /* deanhuff: added missing hw id */
{IWL_PCI_DEVICE(0x24F3, 0x1010, iwl8260_2ac_cfg)},
<snip>
Then I've compiled and installed the extension via:
make defconfig-iwlwifi
make
sudo make install
update-initramfs -u
Upon reboot my wireless card is recognized and works fine. My questions are.
Is this the approach you would recommend?
What "gotchas" do I need to look out for if I ever update?
I believe if I ever do a full update on fielded systems to a modern kernel, the new kernel will contain this fix already so my custom injection will no longer be needed, is this correct? Will there be any steps I would need to take to remove my kernel patch?