5

Raspberry Pi 3 uses SMSC LAN9514-JZX USB and Ethernet controller. While I read the LAN9514 manual, I quite did not understand how Ethernet controller interacts with SoC/CPU. Block diagram from manual can be seen below:

LAN9514 internal block diagram

Manual states that USB hub has Four downstream ports, one upstream port. Does this mean that all the USB peripheral devices AND Ethernet controller share the single USB port to SoC/CPU also in Raspberry Pi 3? If yes, then does this mean that this Ethernet controller appears as am USB Ethernet controller in OS?

  • 1
    The USB ports and the Ethernet port do indeed share the same controller, however you will find in the OS that the Ethernet port is not treated as a USB port. – Darth Vader Apr 19 '16 at 15:04
  • Well it's not a USB port, it's an ethernet controller that happens to be connected via a USB port. – Peter Green Apr 20 '16 at 2:01
  • Ok, so as I understand, then for example lsusb in OS does not list the Ethernet controller? Does this mean that Ethernet controller is connected to SoC/CPU over some other bus than USB? Over PCI bus? – Martin Apr 20 '16 at 8:26
8

Does this mean that all the USB peripheral devices AND Ethernet controller share the single USB port to SoC/CPU also in Raspberry Pi 3?

Yes. All USB ports and the ethernet jack have a combined maximum throughput equal to one USB 2.0 port. It is not uncommon for computers of all sorts to combine several USB ports on one hub this way, although including an ethernet adapter is (I believe the LAN9415 may actually be the first thing of this kind). So if you are reading 5 MB/s through the ethernet then writing it back out to a USB device, that (minimally) amounts to 10 MB/s throughput on the bus.

If yes, then does this mean that this Ethernet controller appears as am USB Ethernet controller in OS?

Yes. Here's something you'll see in the output from lsusb:

 Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter

And there is a driver for this device in the vanilla linux kernel under drivers/net/usb, smsc95xx. I presume this is built into the pre-compiled pi kernel (i.e., it is not built as a separate module) since you will not see it listed under lsmod nor find it in the /lib/modules/n.n.n directory. However, as noted here, you need to include it when you are building a custom kernel (it might be that it has to be built in, i.e., cannot be a separate .ko., I don't remember).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.