| Both sides previous revision Previous revision Next revision | Previous revision | 
| linux:linux-tutorials:set-persistent-mac-rtl8111 [2023/12/19 08:09]  –  Zyzonix | linux:linux-tutorials:set-persistent-mac-rtl8111 [2024/04/23 11:45] (current)  – [Create udev rules]  Zyzonix | 
|---|
|  |  | 
| <callout type="warning" icon="true">This tutorial does only work on systems that use ''**udev**'', like IPFire!</callout> | <callout type="warning" icon="true">This tutorial does only work on systems that use ''**udev**'', like IPFire!</callout> | 
|  |  | 
|  | The Linux kernel mod ''r8169'' seems to set random MAC addresses for Realtek's ethernet cards 8111/8168/8411 every time this devices gets booted. This behaviour also seems to be intended like described in [[https://bugzilla.kernel.org/show_bug.cgi?id=215087|this]] kernel patch. | 
|  |  | 
|  | You can verify this by checking your (boot-) log, if it contains ''can't read MAC address, setting random one'' on the device that uses the mod ''r8169'', you may be affected. | 
|  |  | 
|  | But it may break your system like when using IPFire that recognizes it's NICs from their MAC address. | 
|  |  | 
|  | ==== Get PCI device information ==== | 
|  |  | 
|  | Use the following command and determine your NIC and it's PCI address: (''pciutils'' is required) | 
|  | <code bash>lspci -v</code> | 
|  |  | 
|  | The output may look like this: | 
|  |  | 
|  | {{:linux:linux-tutorials:persistent_mac_rtl8111_lspci.png?900|}} | 
|  |  | 
|  | Now take note of it's address, in this case ''04:00.0''. | 
|  |  | 
|  | ==== Create udev rules ==== | 
|  |  | 
|  | Then add a ''udev''-rule for this NIC. Therefore create a new rule: | 
|  | <code bash> | 
|  | nano /etc/udev/rules.d/10-network-persistent-custom-mac-address.rules | 
|  | </code> | 
|  |  | 
|  | And add the following content: | 
|  | <code bash> | 
|  | SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:<pci-address>", PROGRAM="/sbin/ip link set %k address <your-persistent-mac>" | 
|  | </code> | 
|  |  | 
|  | Replace ''pci-address'' with the NICs PCI address that you got from the step before (e.g. ''0000:01:00.0'') and ''your-persistent-mac'' with the MAC address that should always be assigned to this NIC. (both without ''<'' and ''>''). | 
|  |  | 
|  | Finally save the file and reboot. | 
|  |  | 
|  | ---- | 
|  | //Resources used: [[https://serverfault.com/questions/813995/change-interface-mac-hw-address-using-udev-rules|serverfault.com - Change interface MAC HW address]], [[https://packetpushers.net/udev/|packetpushers.net - udev]]// |