MAC addresses

Are they all the same on Nano? Is there a recommended procedure to spoof it on Nano or change it permanently? A user on another thread is reporting mac address conflicts with multiple nanos.

Some clues:,


1 Like

Due to a manufacturing error, some Jetson Nano Developer Kits may have duplicate MAC addresses assigned by default. The issue has since been corrected at the factory, and we are working on a patch for affected units that may have already shipped. The proper MAC addresses are indeed programmed into an onboard EEPROM, the issue is with the default MAC address of the Ethernet NIC being used instead of the one in the EEPROM.

In the meantime, if you have an affect unit and are connecting multiple Jetson Nano Developer Kits to the same network segment, manually override the MAC address assignment for the onboard Ethernet. This can be done as shown above, using the ‘ip’ command from the command line, or modifying the netplan configuration file as documented at:

Thank you, Dusty. That clears up a lot of confusion.

Thanks for this useful info. May you please tell us further:

  1. Is the Nano EEPROM layout the same as TX1/TX2 ?
  2. Is this EEPROM accessed with same I2C bus and address than TX1 ?
  3. Just a further thought…can a CSI camera not initialized or badly connected hog the I2C controller in such way that EEPROM cannot be read correctly ?
  4. For the patch, what would be the deploy process ? Automatic upgrade ? Or manual…in such case, how to know if a Nano is affected ?
  5. If affected by this prod error, are there some other features affected as well ?

My understanding is it’s a different EEPROM from the camera, so it’s unrelated to that. It doesn’t affect other features than the MAC address. We are still looking into deploying patch, perhaps it could be automatically performed in the next JetPack release and a manual script for those remaining on the existing JetPack version. Stay tuned, thanks.

Hi guys, here is a script you can use to read the correct MAC address, and instructions on how to set it from software: (GitHub)

# This script reads the correct MAC address of a Jetson Nano from the onboard EEPROM over i2c.
# First install i2c-tools package. Then make this script executable, and run it with sudo:
#     $ sudo apt-get install i2c-tools
#     $ chmod +x
#     $ sudo ./
#          MAC address is xx:xx:xx:xx:xx:xx
# The ‘ip’ command can then change the MAC to above, but it does not persist after rebooting.
#     $ ip link set dev eth0 address xx:xx:xx:xx:xx:xx 
# There’s also a “macchanger” package that can be installed, has a text UI, and enables a service to 
# change the MAC persistently (but not permanently).  A patch is being developed for the permanent fix.
# For more info, see this forum thread:

if [ `whoami` != root ]; then
	echo "Error -- run this script with sudo:"
	echo "         \"sudo $0\""
	exit 1

mapfile -t mac_lines < <( i2cdump -y -r 172-177 2 0x50 b )


if [ "$len" -ne "3" ]; then
		echo "FAILED to read MAC address from i2c..."
		echo "EEPROM content:"
		i2cdump -y 2 0x50 b

	echo "MAC address is ${mac_strB[2]}:${mac_strB[1]}:${mac_strA[4]}:${mac_strA[3]}:${mac_strA[2]}:${mac_strA[1]}"

You can also determine the MAC address by scanning the right-most QR code on the underside of your devkit, highlighted here in green:

The output of the right QR code is: ,
Note that if you scan the left QR code, it will take you to the Getting Started URL.

Hi guys, we’ve posted a tool that will update the firmware and correct the MAC address permanently:

My camera connect seem to read the right QR code…

Please, I’m desperate to find my MAC address, I’ve tried everything from “dmesg --follow” to running your .sh script. I can’t seem to find it.

try this (on the nano):
Edit: to be clear, this reads what the MAC is currently set to, not what it should be. Use the above script to fix the address.

 $ ip address
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether ab:cd:ef:12:34:56 brd ff:ff:ff:ff:ff:ff
    inet brd scope global dynamic noprefixroute 

where ab:cd:ef:12:34:56 is the mac address of eth0 (the ethernet port). Wlan0 will give you your wifi card if you have one.