Why two Ethernet over USB interfaces, usb0 and usb1?


I’ve been reading the am335x_evm.sh & friends for a while and don’t get it. Why are there two separate Ethernet over USB interfaces - eth0 and eth1 - doing the same exact thing? They both show up when I connect a BB to my Debian PC.

Having no experience with gadget and libcomposite, I’d guess that RNDIS and CDC ECM are both required simultaneously to somehow support Windows/Mac/Linux users out of the box?

So this is Windows and Apple's fault..

Windows = CDC ECM = needs signed driver..
Apple = RNDIS = needs signed driver...

Windows will use the RNDIS with a built-in driver, thus user doesn't
have to install anything...
Apple will use the CDC ECM with a built-in driver, thus user doesn't
have to install anything...

So in linux, we end with two interfaces, because Windows and Apple
don't have a unified built-in driver...


Fair enough, thanks for the explanation.

Since the comments in “autoconfigure_usb1.sh” say it’s handling CDC/ECM, I assume that the other one (usb0) does RNDIS.

it's only because we enable rndis first thus it becomes usb0:



Okaaaay … /long blank stare/ … I think I mostly get it now.

The sysfs hierarchy groups them both under “functions/*.usb0” which is an excellent red herring :slight_smile:

Okay, this answers my question in another thread. So now how do I disable one or the other?

I’d go for hacking out either the rndis or ecm config from usb-gadget setup in am335x_evm.sh (see Robert’s last post with highlighted lines).

Add USB_NETWORK_CDC_DISABLED="yes" to /etc/default/bb-boot to disable usb1 on linux