Ethernet over USB fails with Emlid Reach RTK GNSS module

Hi, I’m currently struggling with getting an Emlid Reach RTK GNSS module (a Intel Edison device) connected to the Jetson TX2. The device is connected on the USB 3.x port and should be recognized, create an “Ethernet over USB” interface and respond at the static IP 192.168.2.15.

My issue is similar to:
https://forums.developer.nvidia.com/t/tk1-ethernet-over-usb/48045

The device works as intended in my PC using Ubuntu 20.04, where it seems that the cdc_ether driver is in charge of handling the connection. It fails in my Jetson TX2 (L4T 32.2.1, JetPack 4.2.2, Kernel 4.9.140), I checked the /proc/config.gz and seems that already has the required drivers:

gunzip < /proc/config.gz | egrep '(USB_USBNET|NET_CDCETHER|CDC_)'

Gives me:

CONFIG_USB_USBNET=y
CONFIG_USB_NET_CDCETHER=y
# CONFIG_USB_NET_CDC_EEM is not set
CONFIG_USB_NET_CDC_NCM=y
# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set
# CONFIG_USB_NET_CDC_MBIM is not set
CONFIG_USB_NET_CDC_SUBSET_ENABLE=y
CONFIG_USB_NET_CDC_SUBSET=y

I even compiled and load kernel modules cdc_eem and cdc_mbim, but it didn’t work.

At connection, in my PC dmesg shows:

[98210.383152] usb 1-1: new high-speed USB device number 99 using xhci_hcd
[98210.544450] usb 1-1: New USB device found, idVendor=8086, idProduct=e005, bcdDevice= 0.a0
[98210.544462] usb 1-1: New USB device strings: Mfr=2, Product=1, SerialNumber=3
[98210.544467] usb 1-1: Product: MERRIFIELD
[98210.544472] usb 1-1: Manufacturer: INTEL
[98210.544476] usb 1-1: SerialNumber: 129E0830240B35DB871F1BE154DA28A1
[98215.496153] usb 1-1: USB disconnect, device number 99
[98216.431229] usb 1-1: new high-speed USB device number 100 using xhci_hcd
[98216.592450] usb 1-1: New USB device found, idVendor=8086, idProduct=e005, bcdDevice= 0.a0
[98216.592462] usb 1-1: New USB device strings: Mfr=2, Product=1, SerialNumber=3
[98216.592468] usb 1-1: Product: MERRIFIELD
[98216.592472] usb 1-1: Manufacturer: INTEL
[98216.592476] usb 1-1: SerialNumber: 129E0830240B35DB871F1BE154DA28A1
[98216.611281] usb 1-1: USB disconnect, device number 100
[98218.875242] usb 1-1: new high-speed USB device number 101 using xhci_hcd
[98219.024034] usb 1-1: New USB device found, idVendor=8087, idProduct=0a99, bcdDevice= 2.23
[98219.024046] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[98219.024052] usb 1-1: Product: USB download gadget
[98219.024057] usb 1-1: Manufacturer: Intel
[98219.024061] usb 1-1: SerialNumber: 6ecc6602d2c56fb395bba279eb2e1c85
[98221.512270] usb 1-1: USB disconnect, device number 101
[98229.759356] usb 1-1: new high-speed USB device number 102 using xhci_hcd
[98229.908711] usb 1-1: New USB device found, idVendor=3032, idProduct=0014, bcdDevice= 5.01
[98229.908724] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[98229.908730] usb 1-1: Product: Reach
[98229.908735] usb 1-1: Manufacturer: Emlid
[98229.908739] usb 1-1: SerialNumber: 071EC53B3BEDC87D
[98229.915143] cdc_ether 1-1:1.0 usb0: register 'cdc_ether' at usb-0000:00:14.0-1, CDC Ethernet Device, 7e:42:f4:88:cf:11
[98229.916499] cdc_acm 1-1:1.2: ttyACM0: USB ACM device
[98230.567772] cdc_ether 1-1:1.0 enx7e42f488cf11: renamed from usb0

While the Jetson dmesg shows:

   95.347948] usb 1-2: new high-speed USB device number 5 using tegra-xusb
[   95.383282] usb 1-2: New USB device found, idVendor=8086, idProduct=e005
[   95.383305] usb 1-2: New USB device strings: Mfr=2, Product=1, SerialNumber=3
[   95.383320] usb 1-2: Product: MERRIFIELD
[   95.383334] usb 1-2: Manufacturer: INTEL
[   95.383347] usb 1-2: SerialNumber: 129E0830240B35DB871F1BE154DA28A1
[  104.293787] usb 1-2: USB disconnect, device number 5
[  105.227972] usb 1-2: new high-speed USB device number 6 using tegra-xusb
[  105.263293] usb 1-2: New USB device found, idVendor=8086, idProduct=e005
[  105.263316] usb 1-2: New USB device strings: Mfr=2, Product=1, SerialNumber=3
[  105.263332] usb 1-2: Product: MERRIFIELD
[  105.263347] usb 1-2: Manufacturer: INTEL
[  105.263360] usb 1-2: SerialNumber: 129E0830240B35DB871F1BE154DA28A1
[  105.271246] usb 1-2: USB disconnect, device number 6
[  107.539964] usb 1-2: new high-speed USB device number 7 using tegra-xusb
[  107.561596] usb 1-2: New USB device found, idVendor=8087, idProduct=0a99
[  107.561619] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  107.561635] usb 1-2: Product: USB download gadget
[  107.561648] usb 1-2: Manufacturer: Intel
[  107.561661] usb 1-2: SerialNumber: 6ecc6602d2c56fb395bba279eb2e1c85
[  110.174168] usb 1-2: USB disconnect, device number 7
[  117.291992] usb 1-2: new high-speed USB device number 8 using tegra-xusb
[  117.314244] usb 1-2: Dual-Role OTG device on non-HNP port
[  117.314452] usb 1-2: set a_alt_hnp_support failed: -32
[  117.440016] usb 1-2: new high-speed USB device number 9 using tegra-xusb
[  117.462328] usb 1-2: Dual-Role OTG device on non-HNP port
[  117.462518] usb 1-2: set a_alt_hnp_support failed: -32
[  117.468054] usb usb1-port2: attempt power cycle

I’m not really familiar with the USB-OTG specification nor what it means with a “non-HNP port”, but I found an old linux bugreport (https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1047527) which flags the CONFIG_USB_OTG as being the responsible, effectively deactivating it for all arches.

I checked the /proc/config.gz and appears as set in the Jetson, ‘CONFIG_USB_OTG=y’.

Should I recompile the kernel with CONFIG_USB_OTG=n? Would it risk any functionality on the Jetson? Am I even on the right track to solving this?

Thankss

Got it working! Always check for proper power supply.

It seems that the power supply of the usb port is not sufficient for this device, I used an USB Hub with an external power supply (5v, 4amps) and the cdc_ether driver took care of the connection properly.

Thanks for the update!