Raspberry Pi 4 - USB Ethernet adapters

There is a previous discussion on the forum from 2020 where it is stated: "You should use a USB Ethernet adapter instead. We have several different onces at the lab and all of them are working out of the box."

https://forum.emteria.com/discussion/721/cm3-devboard-wifi

Said discussion is about the CM3, so it is unclear what of that applies to the Raspberry Pi 4.

Using a RPi4, I tested both v11.3.0 and v.11.3.16 using four types of USB Ethernet adapters:

ASIX chipset, RNDIS, NCM, and ECM

None worked.

For ASIX and ECM, dmesg showed the driver loading and ifconfig showed a new network interface being created. I was able to confirm externally that an initial DHCP lease was being requested by Emteria Android and granted. However, ifconfig never showed acceptance of this lease and the IP address could not be pinged. When the lease eventually expired, it was not renewed. (I also tried static IP address configuration via the adb shell, but this also did not work.)

For RNDIS, dmesg showed no driver being loaded.

For NCM, dmesg showed the driver loading, but ifconfig never showed a new network interface.

P.S.:

v11.3.16 seems to have some intermittent issues with detecting removal of a USB device. With that version, dmesg would not indicate detection of the device's removal, and ifconfig would continue to show the network interface for a while.
Tagged:

Comments

  • @boothroyd I've just tried this one: https://www.secomp-international.com/en_US/value-usb-3-2-gen-1-to-gigabit-ethernet-converter/i/12.99.1105-10 with v11.3.0 and had a connection on all USB ports.

    But may I ask why you are not just using the Ethernet port from the RPi4?
  • @smieschek, one of my applications needed support for CDC-ECM, RNDIS, or CDC-NCM devices. Using a USB network connection is more than just a way to add an extra Ethernet port. It is also a way of interfacing Android devices to additional hardware via USB, and so it is simply not an option to use the Ethernet port.

    In this case, my option was to either use: a) Emteria or b) a commercial tablet connected via HDMI to a flat-panel TV, and it looks like (b) is going to be the solution for me. All Android tablets/smartphones that I've tried either support CDC-ECM or RNDIS.

    If you are interested in supporting USB networking devices in the future and do happen to have one of the supported devices in the second URL, the software in the first URL can be compiled. That might let you try several industry standard protocols without having to buy extra devices:

    https://github.com/hathach/tinyusb
    https://github.com/hathach/tinyusb/blob/master/docs/reference/supported.rst

    On the topic of other devices that failed in my tests (Emteria v11.3.0 and v.11.3.16), one of the two ASIX chipset devices was branded "H50223 HiRO USB 2.0 to Fast Ethernet Adapter" and the other was just "USB 2.0 Ethernet Adapter".

    Thanks anyway.
  • @boothroyd That's interesting, but far beyond an usual use case. I have the feeling that some kernel modules might be missing. You can find our kernel here: https://github.com/emteria/kernel_brcm_rpi/tree/v5.10.33-q
    and compile it with your missing modules; afterwards exchange it on the boot partition.

  • @boothroyd, it sounds to me like a missing driver config option in the kernel. I know for sure that CDC-NCM support is compiled into the kernel (see https://github.com/emteria/kernel_brcm_rpi/blob/be909b88a3fa484b792a362e25c070ee34c12fec/arch/arm64/configs/bcm2711_aosp11_defconfig#L2274), but load kernel modules can be loaded at runtime from /odm/lib/modules on the device.

Sign In or Register to comment.