Intel i219-V GbE LAN MAC Address Change and Checksum Fix 2024/07/03 Ami Sapphire Last Updated: 2024/07/04 [0704] Change title to proper i219-V (from i219V). Created Prerequisites section. Prerequisites: * The NIC has to be recognized by the kernel driver before you can modify the EEPROM in the first place. If the NVM checksum is bad, you may want to comment out the following in netdev.c of the e1000e drivers and recompile: for (i = 0;; i++) { if (e1000_validate_nvm_checksum(&adapter->hw) >= 0) break; if (i == 2) { dev_err(&pdev->dev, "The NVM Checksum Is Not Valid\n"); err = -EIO; goto err_eeprom; } } * This may need to be run in order to write to the EEPROM using ethtool: modprobe -r e1000e modprobe e1000e WriteProtectNVM=0 Note the Intel NIC's assigned name you want to modify (you can also see the MAC address in the process): ip addr Newer Intel NICs usually show up in a list as eno1 with an alias of enp0s25 (moreso if you have more than one Intel NIC). Older Intel NICs usually show up as any other NIC. Check and note the current MAC address and checksum: ethtool -e enp0s25 offset 0x00 length 6 ethtool -e enp0s25 offset 0x7e length 2 Check to see if address offset 0x10 is really the hex value ff before using it: ethtool -e enp0s25 offset 0x10 length 1 If not, another address offset using hex value ff probably should be used. Backup the EEPROM to an image before writing to the EEPROM itself, just in case something really goes wrong: Raw mode: ethtool -e enp0s25 raw on > i219v-backup.eep View mode: ethtool -e enp0s25 > i219v-backup-view.txt Note the NIC Vendor ID and Device ID: sudo lspci -nn | grep Ethernet As usual, Vendor ID for Intel is 8086, and an example Device ID (onboard NIC on ASRock Z690M-ITX/ax) is 1A1D, which is formatted as 8086:1a1d. Magic is such as reversed (because Intel, lol), so it is written as 0x1a1d8086. Write the MAC address to the EEPROM: ethtool -E enp0s25 magic 0x1a1d8086 offset 0x00 value 0x00 ethtool -E enp0s25 magic 0x1a1d8086 offset 0x01 value 0x11 ethtool -E enp0s25 magic 0x1a1d8086 offset 0x02 value 0x22 ethtool -E enp0s25 magic 0x1a1d8086 offset 0x03 value 0x33 ethtool -E enp0s25 magic 0x1a1d8086 offset 0x04 value 0x44 ethtool -E enp0s25 magic 0x1a1d8086 offset 0x05 value 0x55 Check the MAC address to see if it changed: ethtool -e enp0s25 offset 0x00 length 6 Recalculate the checksum, just in case: ethtool -E enp0s25 magic 0x1a1d8086 offset 0x10 value 0xff Check the checksum again: ethtool -e enp0s25 offset 0x7e length 2