After scouring for ages looking for this fix. I’ve decided to document it.
It comes form a number of sources. Kudos to the individual people.
Problem
Rebooting from windows into Linux renders the NIC unusable. the classic “lights are on but no one is home”
Some people advice disabling PXE etc in the bios. There is a better solution
Identify the NIC
1 2 3 4 | root@dave-pc:/lib/systemd/system# lspci | grep Ether 00:19.0 Ethernet controller: Intel Corporation Ethernet Connection I217-V (rev 04) |
Create a systemd oneshot service file
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | cat <> /lib/systemd/system/intelnicreset.service [Unit] Description=Reset Intel Nic on Boot before it comes up Before=NetworkManager.service Wants=NetworkManager.service [Service] Type=oneshot ExecStart=/usr/bin/resetintelnic RemainAfterExit=no [Install] WantedBy=multi-user.target EOT |
Reset NIC bash file
1 2 3 4 5 6 7 8 9 10 11 12 13 | cat <> /usr/bin/resetintelnic #!/bin/bash #Get the PCI-Address of network card (Caution: This works ONLY with ONE NIC) PCI=`/usr/bin/lspci | /bin/egrep -i 'network|ethernet' | /usr/bin/cut -d' ' -f1` PCIPATH=`/usr/bin/find /sys -name *\${PCI} | /bin/egrep -i *pci0000*` /usr/bin/logger -t "ResetNIC" "Resetting PCI NIC ${PCIPATH}" #Reset the PCI Device completely (like Power-ON/Off) echo 1 >${PCIPATH}/reset EOT |
Make it executable
1 2 3 | chmod +x /usr/bin/resetintelnic |
