No MAC Address is found (and hence no eth0) after Jetson TK1 re-flash with latest driver and sample

Hi there,

I have recently re-flashed my Jetson TK1 board with the R21.2.0 driver and sample file system. Everything works fine after the flashing process except that the eth0 wouldn’t come up. I noticed that the MAC address for eth0 is all zeros from a “dmesg | grep eth0” as the followings.

[ 4.254864] r8169 0000:01:00.0 eth0: RTL8168g/8111g at 0xf0000000, 00:00:00:00:00:00, XID 0c000800 IRQ 641
[ 4.254872] r8169 0000:01:00.0 eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko]

I have found a temporary solution for it. That is to bring down the eth0, set the MAC addr, and bring it back up. It works as described except that this needs to be done upon every reboot of the Jetson TK1. I am looking for a more permanent solution/fix to this problem. Anyone?

{Temporary solution}
sudo ip link set dev eth0 down
sudo ip link set dev eth0 address {xx:xx:xx:xx:xx:xx}
sudo ip link set dev eth0 up

Try setting the MAC address in u-boot.

For example

setenv ethaddr 00:0a:35:00:01:23
saveenv

Hi falco152,

Thanks for your post. I tried your suggestion and rebooted the jetson-TK1 but the problem remains. Any idea why?

{Output from ‘dmesg | grep eth0’}:

[ 4.254313] r8169 0000:01:00.0 eth0: RTL8168g/8111g at 0xf0000000, 00:00:00:00:00:00, XID 0c000800 IRQ 641
[ 4.254321] r8169 0000:01:00.0 eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko]

FYI, this is the output from my jetson-TK1’s ‘sudo ip link ls’

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default
link/ether 32:4a:46:7e:e4:88 brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
4: sit0: mtu 1480 qdisc noop state DOWN mode DEFAULT group default
link/sit 0.0.0.0 brd 0.0.0.0
5: ip6tnl0: mtu 1452 qdisc noop state DOWN mode DEFAULT group default
link/tunnel6 :: brd ::
6: rmnetctl: mtu 1500 qdisc noop state DOWN mode DEFAULT group default
link/ipip 0.0.0.0 brd 0.0.0.0

Some Tegra devices depend upon the boot loader setting up a MAC address, and then the actual hardware is never checked (this tends to be in environments with fewer resources than Jetson). In other cases the boot environment MAC is only used if network functions are part of boot (such as NFS partitions)…and then when the Linux driver takes over it switches to using settings from the operating system and NIC queries. This latter case is how Jetson works, so it seems firmware or some part of the flash actually failed. I’d go back to the flash procedure and make sure this install did not fail because of little things like failure to unpack L4T as root or an issue with apply_binaries.sh.

Hi Linuxdev,

I did a few more re-flashes after what you suggested. The problem remains.

Are these freshly extracted host-side flash environments? It is quite possible that if the rootfs is edited those edits might cause the problem. rootfs is intended to propagate exactly (other than some boot loader characteristics) to Jetson. At this point I have to wonder if the embedded NIC is failing.

Let try using ping via u-boot just to verify it.

setenv ipaddr 192.168.1.214
ping 192.168.1.1

My 21.2 u-boot output

U-Boot SPL 2014.10-rc2-00001-g9f88c9e (Dec 01 2014 - 14:29:15)


U-Boot 2014.10-rc2-00001-g9f88c9e (Dec 01 2014 - 14:29:15)

TEGRA124
Board: NVIDIA Jetson TK1
I2C:   ready
DRAM:  2 GiB
MMC:   Tegra SD/MMC: 0, Tegra SD/MMC: 1
*** Warning - bad CRC, using default environment

tegra-pcie: PCI regions:
tegra-pcie:   I/O: 0x12000000-0x12010000
tegra-pcie:   non-prefetchable memory: 0x13000000-0x20000000
tegra-pcie:   prefetchable memory: 0x20000000-0x40000000
tegra-pcie: 2x1, 1x1 configuration
tegra-pcie: probing port 0, using 2 lanes
tegra-pcie: link 0 down, retrying
tegra-pcie: link 0 down, retrying
tegra-pcie: link 0 down, retrying
tegra-pcie: link 0 down, ignoring
tegra-pcie: probing port 1, using 1 lanes
In:    serial
Out:   serial
Err:   serial
Net:   RTL8169#0
Warning: RTL8169#0 using MAC address from net device

Hit any key to stop autoboot:  0 
Tegra124 (Jetson TK1) # setenv ipaddr 192.168.1.214
Tegra124 (Jetson TK1) # ping 192.168.1.1
Using RTL8169#0 device
host 192.168.1.1 is alive
Tegra124 (Jetson TK1) #

Yes, these are the freshly extracted host-side environments. No edit is made against those rootfs; they are simple extracted from the original files {Tegra_Linux_Sample-Root-Filesystem_R21.2.0_armhf.tbz2} and {Tegra124_Linux_R21.2.0_armhf.tbz2}.

I tried what falco152 suggested, that was to enter u-boot and set the “ethaddr” according to the MAC address sticker on my jetson-tk1 board. However, it didn’t help.

I have also noticed that the “ethaddr” is reset back to empty upon every re-flash. Is this a hardware issue? Can I potentially RMA this board?

At this point I would RMA if possible. Otherwise you’ll probably end up with some rc.local hack to get around the issue.

Alright, here’s my “before” screen dump.

U-Boot SPL 2014.10-rc2-00001-g9f88c9e (Dec 01 2014 - 14:29:15)


U-Boot 2014.10-rc2-00001-g9f88c9e (Dec 01 2014 - 14:29:15)

TEGRA124
Board: NVIDIA Jetson TK1
I2C:   ready
DRAM:  2 GiB
MMC:   Tegra SD/MMC: 0, Tegra SD/MMC: 1
*** Warning - bad CRC, using default environment

tegra-pcie: PCI regions:
tegra-pcie:   I/O: 0x12000000-0x12010000
tegra-pcie:   non-prefetchable memory: 0x13000000-0x20000000
tegra-pcie:   prefetchable memory: 0x20000000-0x40000000
tegra-pcie: 2x1, 1x1 configuration
▒▒Ʌ▒pcie: probing port 0, using 2 lanes
tegra-pcie: link 0 down, retrying
tegra-pcie: link 0 down, retrying
tegra-pcie: link 0 down, retrying
tegra-pcie: link 0 down, ignoring
tegra-pcie: probing port 1, using 1 lanes
In:    serial
Out:   serial
Err:   serial
Net:   RTL8169#0
Error: RTL8169#0 address not set.

Hit any key to stop autoboot:  0
MMC: no card present
switch to partitions #0, OK
mmc0(part 0) is current device
Scanning mmc 0...
Found /boot/extlinux/extlinux.conf
Retrieving file: /boot/extlinux/extlinux.conf
813 bytes read in 270 ms (2.9 KiB/s)
Jetson-TK1 eMMC boot options
1:      primary kernel
Enter choice: 1:        primary kernel
Retrieving file: /boot/zImage
6139720 bytes read in 191 ms (30.7 MiB/s)

and here’s my “after” screen dump.

U-Boot SPL 2014.10-rc2-00001-g9f88c9e (Dec 01 2014 - 14:29:15)


U-Boot 2014.10-rc2-00001-g9f88c9e (Dec 01 2014 - 14:29:15)

TEGRA124
Board: NVIDIA Jetson TK1
I2C:   ready
DRAM:  2 GiB
MMC:   Tegra SD/MMC: 0, Tegra SD/MMC: 1
*** Warning - bad CRC, using default environment

tegra-pcie: PCI regions:
tegra-pcie:   I/O: 0x12000000-0x12010000
tegra-pcie:   non-prefetchable memory: 0x13000000-0x20000000
tegra-pcie:   prefetchable memory: 0x20000000-0x40000000
tegra-pcie: 2x1, 1x1 configuration
▒▒Ʌ▒pcie: probing port 0, using 2 lanes
tegra-pcie: link 0 down, retrying
tegra-pcie: link 0 down, retrying
tegra-pcie: link 0 down, retrying
tegra-pcie: link 0 down, ignoring
tegra-pcie: probing port 1, using 1 lanes
In:    serial
Out:   serial
Err:   serial
Net:   RTL8169#0
Error: RTL8169#0 address not set.

Hit any key to stop autoboot:  0
Tegra124 (Jetson TK1) # setenv ipaddr 192.168.1.214
Tegra124 (Jetson TK1) # ping 192.168.1.1
*** ERROR: `ethaddr' not set
ping failed; host 192.168.1.1 is not alive
Tegra124 (Jetson TK1) # setenv ethaddr 00:04:4B:26:FD:52
Tegra124 (Jetson TK1) # ping 192.168.1.1
Using RTL8169#0 device
ping failed; host 192.168.1.1 is not alive
Tegra124 (Jetson TK1) # setenv ipaddr 10.10.4.63
Tegra124 (Jetson TK1) # ping 10.10.4.60
Using RTL8169#0 device
ping failed; host 10.10.4.60 is not alive
Tegra124 (Jetson TK1) # ping 10.10.4.201
Using RTL8169#0 device
ping failed; host 10.10.4.201 is not alive
Tegra124 (Jetson TK1) #

Note: my Ubuntu VM’s IP is 10.10.4.201 and it connects to the same network as my jetson-tk1.

After seeing that … does not inspire any confidence in me either.

Like linuxdev said before, RMA if possible.

did this issue ever got resolved? I am facing the same problem

Does this issue still occur after flash with jetpack3.1(rel21.5)?

FYI, setting an address during boot loader stage is quite different than after the Linux kernel loads. As @WayneWWW mentioned, you will want to try the more recent L4T version (R21.5, which JetPack3.1 can flash), and you will want to post exactly which stage of boot your are in when looking at networking. Parts of the above conversations were looking in boot loader stage, and other parts were from after Linux is booted.