Ethernet over USB for Leonardo board

Is there anyone interested on extending the ethernet library to allow the Leonardo board to act as a ethernet device over USB ?

According to Ethernet over USB - Wikipedia there is 4 possible protocols:

  1. Remote NDIS (RNDIS)
    Old protocol not recommended for new design.

  2. Ethernet Control Model (ECM)
    Simple but design limited to low bandwidth and high latency.
    WARNING URL not from usb.org !!!! http://catalog.gaw.ru/project/download.php?id=18514

  3. Ethernet Emulation Model (EEM)
    New design for higher bandwidth and low latency.
    http://www.usb.org/developers/devclass_docs/CDC_EEM10.pdf

  4. Network Control Model (NCM)
    Improved EEM design with provision to get even more bandwidth.
    http://www.usb.org/developers/devclass_docs/NCM10_012011.zip NCM10-20101124-track.pdf

As the ATmega32U4 only support 64 byte USB packet, It look like ECM is the only way to go.

hey this could be a great project! It might be better for the Due that has a full blown 480MB/s Usb interface.

Would you work on this if we send you a due?? :slight_smile:

m

The SAM3U4E require the Network Control Model (NCM) to show his power instead of the Ethernet Control Model (ECM) that can only run the ATmega32U4. My understanding from the documents specification of ECM and NCM is that those two protocols share almost nothing in common: the framing and control are much complex in NCM . My conclusion is that there are two distinct projects.

However, ECM will work on the two processors, even if it will be slow compared to NCM. So I propose to first start with a simpler ECM protocol to see if the ethernet over USB feature take some interest from the Arduino users community. Maybe the few Mbps bandwidth of ECM will already satisfy a lot of them.

Thanks for the offer of the Due, but I think i't a bit too early at this stage because aside of you, nobody have showed interest in this feature yet. So I am not so motivated to start burning a lot of time alone on a high end implementation. For the high end projects I already use cheap ARM with Linux that have ethernet over USB, host and device.

Hi jcamdr, my name is Marco and I am really interested in following up this discussion. I need to use Arduino to emulate a CDC ECM device, and I believe Arduino Micro is the way to go.

Is there any activity going on this topic? I would like to provide support

@jcamdr, @Massimo Banzi is there any progress and activity going on this topic?

firstly, I think the idea is very attracting. As arduino is one prototype hardware and the IoT become more and more popular, there is strong potential requirement that connecting arduino based device to some embedded USB host via USB, such as, PLC, Switch, Router. So that the arduino based device can give many hardware and software extendibility and flexibility to the traditional hardware device without the hardware change. For example, if i need to extend the switch WSN access ability, I just need to plug in one usb based WSN gateway device, if i need to extend the switch GSM access ability, I just need to plug in one usb based GSM device.

Currently there is only serial over USB supported, I think it's not strong enough to fix the communication problem over USB, as many embedded host device do not have the virtual uart over USB functionality while RNDIS is widespread supported. So from this perspective, this idea is also very interesting.

secondly I think the big problem should be lacking of IP stack support on Lenoardo, Uno. Although we get the ethernet over USB working, we still can not easily get the IP based communication working. Any comments on this?