user-1: The MAC address is hardwired onto the NIC card when a device is manufactured. How is it that, we get to set a 48 bit MAC address of our choice while programming the arduino ?

user28951: MAC address is not hardwired in the modern network interface cards; it is set during programming of the configuration of the card, which is loaded on the card's start/configuration.
Modern NICs usually have option for user to set custom MAC address.
If you talk about shield device based on network chip like W5100 - there's no initial configuration within this network card for Arduino; thus by "programming the arduino" you set this initial configuration of the "card". You act like a manufacturer of the NIC.

user22914: Your initial premise is incorrect. The MAC address is NOT "hardwired".  In many cases it is held in a very small non-volatile memory chip. But when the Ethernet driver is initialized you can feed it whatever MAC address you want.  For most people they just accept "defaulting" it to the address programmed into the tiny memory.
Remember that the MAC address must be unique. At least within your LAN.  If you start diddling the MAC addresses and you end up with a duplicate, at best you will kill connectivity for your node plus the other node with the same MAC address. Not a good thing to do. That is why people generally just accept the manufacturer's MAC address which is designed to be unique.

-1: <p>The MAC address is hardwired onto the NIC card when a device is manufactured. How is it that, we get to set a 48 bit MAC address of our choice while programming the arduino ?</p>
 28951: <p>MAC address is not <em>hardwired</em> in the modern network interface cards; it is set during programming of the configuration of the card, which is loaded on the card's start/configuration.</p>

<p>Modern NICs usually have option for user to set custom MAC address.</p>

<p>If you talk about shield device based on network chip like W5100 - there's no initial configuration within this network card for Arduino; thus by "programming the arduino" you set this initial configuration of the "card". You act like a manufacturer of the NIC.</p>
 22914: <p>Your initial premise is incorrect. The MAC address is NOT "hardwired".  In many cases it is held in a very small non-volatile memory chip. But when the Ethernet driver is initialized you can feed it whatever MAC address you want.  For most people they just accept "defaulting" it to the address programmed into the tiny memory.</p>

<p>Remember that the MAC address must be unique. At least within your LAN.  If you start diddling the MAC addresses and you end up with a duplicate, at best you will kill connectivity for your node plus the other node with the same MAC address. Not a good thing to do. That is why people generally just accept the manufacturer's MAC address which is designed to be unique.</p>
