We have a TX2 with a Connect Tech Astro Carrier and Breakout Board (link). This carrier breaks out the TX2’s built in ethernet device eth0 (Broadcom BCM54610C1IMLG - link), and also provides a second ethernet device eth1 (Intel 82574 - link).
We have been having trouble trying to set up a bond between the two devices. We are using Jetson 3.0, Linux4Tegra version 27.1.0, and are installing the Connect Tech board support package CTI-L4T-V103.
I have recompiled the standard kernel just to add the bonding module. And installed ifenslave (and have also tried the older version ifenslave-2.6)
No matter what we do we get this vague error:
sh: echo: I/O error
eth0: could not add interface
But eth1 (the connect tech interface) does properly join the bond. With further digging, it appears there is something wrong with the TX2’s built in network interface’s driver.
Does the TX2’s network interface driver support bonding?
I am curious what commands you are using to bond? I ask because the error shows the problem is perhaps in how commands are escaped in a shell script (this is perhaps an error not directly related to networking). Being able to see what the script is doing might offer more clues…if there is a script involved perhaps you could post it. Output from “ifconfig” might also help.
I got the following boot message and eth0 was not added to bond but wlan0 was ok.
nvidia@tegra-ubuntu:~$ dmesg | grep ‘bond|eth0|wlan0’
[ 6.863183] bond0: Setting MII monitoring interval to 100
[ 6.891630] IPv6: ADDRCONF(NETDEV_UP): bond0: link is not ready
[ 6.898147] 8021q: adding VLAN 0 to HW filter on device bond0
[ 7.467388] bond0: Adding slave eth0
[ 7.538816] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 8.600570] Register interface [wlan0] MAC: 00:04:4b:c4:e7:fd
[ 8.872408] bond0: Adding slave wlan0
[ 9.118496] eqos 2490000.ether_qos eth0: Link is Up - 100Mbps/Full - flow control rx/tx
[ 9.527691] bond0: making interface wlan0 the new active one
[ 9.533523] bond0: Enslaving wlan0 as an active interface with an up link
[ 9.540655] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 9.547778] IPv6: ADDRCONF(NETDEV_CHANGE): bond0: link becomes ready
Even though I tried to add eth0 to bond0 manually. But still failed.
nvidia@tegra-ubuntu:~$ sudo ifenslave bond0 eth0
[ 4077.488315] bcm54xx_low_power_mode(): put phy in iddq-lp mode
[ 4077.521886] bond0: Adding slave eth0
sh: echo: I/O error
eth0: could not add interface
I got the below. Bonding module installed correctly.
I compiled kernel and copied it based on ‘https://github.com/jetsonhacks/buildJetsonTX2Kernel.git’ guide.
wlan0 to bonding was ok except eth0.
Also I tested the usb ethernet module to bond and it was also ok.
Why don’t you try if the bonding function can be used with TX2 or not?
bonding is not complex or difficult to set up, but I do not know why not.
Even if I did, I have never thought about it since I have only a single internet connection (I suspect that if two interfaces bond to the same subnet an incorrect configuration could behave similar to an ordinary bridge where the traffic loops between interfaces…the failure in that case is spectacular). What I’m getting at here is that you need to know that each interface is set up correctly on its own before it can bond and work. If both go to different routers, are the routers themselves assigning to different subnets? I’m kind of grasping here since I have no real knowledge of the setup other than having two interfaces on the Jetson. You might want to describe in more detail how everything is connected.
as far as i understand, you can’t bond eth0 with wlan0 . You can do bonding with eth0 & eth1 for example, after you install extra LAN card in PCIe slot .
Between eth0 and wlan0 you can only do bridging .