Enable 1Gbps Ethernet speed on Jetson TX1

I am reading images from a GigE camera connected to my TX1. The frames are uncompressed, so I need a large bandwidth to enable a good framerate.

Unfortunately, my network adapter seems to be limited to 100Mb/s.

Below is the output of:

sudo ethtool enx00044b662dd3

(for some reason, the name of my network adapter is not “eth0”).

Settings for enx00044b662dd3:
	Supported ports: [ MII ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Advertised pause frame use: Symmetric Receive-only
	Advertised auto-negotiation: Yes
	Speed: 100Mb/s
	Duplex: Half
	Port: MII
	PHYAD: 32
	Transceiver: internal
	Auto-negotiation: on
	Supports Wake-on: pumbg
	Wake-on: g
	Current message level: 0x00007fff (32767)
			       drv probe link timer ifdown ifup rx_err tx_err tx_queued intr tx_done rx_status pktdata hw wol
	Link detected: no

I tried to set the speed to 1Gb/s as explained in this post, with:

sudo ethtool -s enx00044b662dd3 speed 1000 duplex full

But it does not seem to do anything, as the output of

sudo ethtool enx00044b662dd3

stays exactly the same as above.

Which version of L4T are you using?

head -n 1 /etc/nv_tegra_release

One reason a gigabit adapter would show only 100Mbit/s is if the switch or router it connects to only supports 100Mbit/s. What is the ethernet connected to, and what is that device rated at for speed?

I am using L4T R24.2.1.

The GigE camera (which definitely supports 1Gb/s) is directly connected to the TX1 Ethernet port (through a PoE adapter, to power the camera). I use two 1m-long Cat 7 Ethernet cables.

The thing is, I get the same result whether the camera is connected or not. So it looks like a problem with the Ethernet adapter…

By the way I tried turning off auto-negotiation, as suggested in this post. But it does not help: I’m still stuck with the 100Mb/s speed.

On my JTX1 the port shows as 1Gb (actual speed), but it is connected to a gigabit switch. I am curious if you have a gigabit switch somewhere you can temporarily attach to for testing? Also, for testing on a gigabit switch, I’d leave auto negotiation on.

It is somewhat curious as to whether or not configuration causing name “eth0” to instead be “enx00044b662dd3” is related, but it seems unlikely (devfs and systemd can rename things but this shouldn’t change driver function…so long as the same driver loads naming should not matter).

Ah, unfortunately I don’t have a gigabit switch at hand, but I’ll try to look for one…

I think the adapter naming thing is normal. According to this post, using “eth0” should be the exception rather than the rule in Ubuntu versions >=15.04.

I was thinking perhaps I need to reinstall or upgrade the network drivers, but what is most surprising is the ethtool clearly has “1000baseT/Full” listed in the available modes…

The fact that the adapter showed gigabit available while not being able to switch to that speed is why I suspect the device connected to it negotiating for 100Mbit/s (plus I have a JTX1 here and it does actually switch to gigabit on R24.2.1). It is rather common for a camera or other network device not needing 1000Mbit/s to say it is compatible with 1000Mbit/s…which isn’t the same as saying it actually runs that speed. Almost every manufacturer of network devices which only need 100Mbit/s avoids lost sales from people thinking their product can’t work on a gigabit net by mentioning compatibility.

Actually, a little update: Below is the output of ethtool, when the camera is connected and the connection works fine at 100Mb/s.

Settings for enx00044b662dd3:
	Supported ports: [ MII ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	Advertised pause frame use: Symmetric Receive-only
	Advertised auto-negotiation: Yes
	Link partner advertised link modes:  10baseT/Half 10baseT/Full 
	                                     100baseT/Half 100baseT/Full 
	                                     1000baseT/Half 1000baseT/Full 
	Link partner advertised pause frame use: No
	Link partner advertised auto-negotiation: Yes
	Speed: 100Mb/s
	Duplex: Full
	Port: MII
	PHYAD: 32
	Transceiver: internal
	Auto-negotiation: on
	Supports Wake-on: pumbg
	Wake-on: g
	Current message level: 0x00007fff (32767)
			       drv probe link timer ifdown ifup rx_err tx_err tx_queued intr tx_done rx_status pktdata hw wol
	Link detected: yes

What is interesting is that here, the camera advertises 1Gb/s (“link partner advertised link modes”), the adapter supports 1Gb/s (“supported link mode”) but the adapter does not advertise 1Gb/s (“advertised link modes”), resulting in the 100Mb/s negotiated speed… So instead of trying to force the connection mode to 1Gb, I’m looking for the way to make the adapter advertise for the right speed in the first place.

It is still odd that your advertised link speeds list does not include 1000Mbit/s, since mine also runs R24.2.1 and does advertise this. It is possible something in network manager or other network setup is responsible for this, but I’ve not heard of it before (which makes me suspicious of the camera). I still suggest throwing a gigabit switch in just for testing…if the problem goes away then you’ve narrowed the issue down to direct connection doing something different.

You were right, there was nothing wrong with the network adapter. In fact it was the PoE injector of the camera which was slowing down the connexion. Both the camera and the TX1 can work at 1Gbps, but this adapter was not fast enough to support 1Gbps, so I just replaced it. Thanks for you help!