Jetson TX1 u-boot network problem--EHCI timed out on TD - token=0x88008d80

Hi everybody,
I want to load Linux kernel over the network using tftp.I do it following https://devtalk.nvidia.com/default/topic/1002908/jetson-tx1-u-boot-link-down/.But u-boot can’t ping and tftp can’t work.The NIC is TRENDnet TU2-ET100 USB to 10 / 100 Mbps Adapter .
Log:
U-Boot 2016.07 (Oct 22 2017 - 11:30:44 +0800)

TEGRA210
Model: NVIDIA P2371-2180
Board: NVIDIA P2371-2180
DRAM: 4 GiB
MMC: Tegra SD/MMC: 0, Tegra SD/MMC: 1
*** Warning - bad CRC, using default environment

In: serial
Out: serial
Err: serial
Net: No ethernet found.
Hit any key to stop autoboot: 0
Tegra210 (P2371-2180) # usb start
starting USB…
USB0: USB EHCI 1.10
scanning bus 0 for devices…
Warning: asix_eth using MAC address from ROM
2 USB Device(s) found
Tegra210 (P2371-2180) # setenv ipaddr 192.168.0.101
Tegra210 (P2371-2180) # ping 192.168.0.1
Using asix_eth device
EHCI timed out on TD - token=0x88008d80
Rx: failed to receive: -5
EHCI timed out on TD - token=0x8008d80
Rx: failed to receive: -5
EHCI timed out on TD - token=0x88008d80
Rx: failed to receive: -5
EHCI timed out on TD - token=0x8008d80
Rx: failed to receive: -5

ARP Retry count exceeded; starting again
EHCI timed out on TD - token=0x8008d80
Rx: failed to receive: -5
ping failed; host 192.168.0.1 is not alive
Tegra210 (P2371-2180) #

Are there anyone have same problem.
Thank in advance!!!
Best regards.

This u-boot ENV:
arch=arm
baudrate=115200
board=p2371-2180
board_name=p2371-2180
boot_a_script=load {devtype} {devnum}:{distro_bootpart} {scriptaddr} {prefix}{script}; source {scriptaddr} boot_efi_binary=load {devtype} {devnum}:{distro_bootpart} {kernel_addr_r} efi/boot/bootaa64.efi; if fdt addr {fdt_addr_r}; then bootefi {kernel_addr_r} {fdt_addr_r};else bootefi {kernel_addr_r} {fdtcontroladdr};fi
boot_extlinux=sysboot {devtype} {devnum}:{distro_bootpart} any {scriptaddr} {prefix}extlinux/extlinux.conf boot_net_pci_enum=pci enum boot_net_usb_start=usb start boot_prefixes=/ /boot/ boot_script_dhcp=boot.scr.uimg boot_scripts=boot.scr.uimg boot.scr boot_targets=mmc1 mmc0 usb0 pxe dhcp bootcmd=run distro_bootcmd bootcmd_dhcp=run boot_net_usb_start; run boot_net_pci_enum; if dhcp {scriptaddr} {boot_script_dhcp}; then source {scriptaddr}; fi;setenv efi_fdtfile {fdtfile}; setenv efi_old_vci {bootp_vci};setenv efi_old_arch {bootp_arch};setenv bootp_vci PXEClient:Arch:00011:UNDI:003000;setenv bootp_arch 0xb;if dhcp {kernel_addr_r}; then tftpboot {fdt_addr_r} dtb/{efi_fdtfile};if fdt addr {fdt_addr_r}; then bootefi {kernel_addr_r} {fdt_addr_r}; else bootefi {kernel_addr_r} {fdtcontroladdr};fi;fi;setenv bootp_vci {efi_old_vci};setenv bootp_arch {efi_old_arch};setenv efi_fdtfile;setenv efi_old_arch;setenv efi_old_vci; bootcmd_mmc0=setenv devnum 0; run mmc_boot bootcmd_mmc1=setenv devnum 1; run mmc_boot bootcmd_pxe=run boot_net_usb_start; run boot_net_pci_enum; dhcp; if pxe get; then pxe boot; fi bootcmd_usb0=setenv devnum 0; run usb_boot bootdelay=2 cbootargs=root=/dev/nfs rw netdevwait ip=192.168.0.101:192.168.0.100:192.168.0.100:255.255.255.0::eth0:off nfsroot=192.168.0.100:/home/rd/develop/TX1/Linux_for_Tegra/rootfs console=ttyS0,115200n8 console=tty0 OS=l4t fbcon=map:0 net.ifnames=0 androidboot.modem=none androidboot.serialno=03246161953480c083fd androidboot.security=non-secure tegraid=21.1.2.0.0 ddr_die=2048M@2048M ddr_die=2048M@4096M section=256M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 debug_uartport=lsport,0 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=0x1000@0xff2bf000 nvdumper_reserved=0xff23f000 core_edp_mv=1125 core_edp_ma=4000 gpt android.kerneltype=normal androidboot.touch_vendor_id=0 androidboot.touch_panel_id=63 androidboot.touch_feature=0 androidboot.bootloader=00.00.2014.50-t210-37a3fa40 androidboot.verifiedbootstate=orange cpu=armv8 distro_bootcmd=for target in {boot_targets}; do run bootcmd_{target}; done efi_dtb_prefixes=/ /dtb/ /dtb/current/ ethact=asix_eth ethaddr=d8:eb:97:b8:9c:d4 fdt_addr=83100000 fdt_addr_r=0x82000000 fdt_high=ffffffffffffffff fdtcontroladdr=fc82bba0 initrd_high=ffffffffffffffff ipaddr=192.168.0.101 kernel_addr_r=0x80080000 load_efi_dtb=load {devtype} {devnum}:{distro_bootpart} {fdt_addr_r} {prefix}{efi_fdtfile} loadaddr=0x80080000 mmc_boot=if mmc dev {devnum}; then setenv devtype mmc; run scan_dev_for_boot_part; fi
pxefile_addr_r=0x90100000
ramdisk_addr_r=0x83200000
scan_dev_for_boot=echo Scanning {devtype} {devnum}:{distro_bootpart}...; for prefix in {boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi;
scan_dev_for_boot_part=part list {devtype} {devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in {devplist}; do if fstype {devtype} {devnum}:{distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done
scan_dev_for_efi=setenv efi_fdtfile {fdtfile}; for prefix in {efi_dtb_prefixes}; do if test -e {devtype} {devnum}:{distro_bootpart} {prefix}{efi_fdtfile}; then run load_efi_dtb; fi;done;if test -e {devtype} {devnum}:{distro_bootpart} efi/boot/bootaa64.efi; then echo Found EFI removable media binary efi/boot/bootaa64.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing…; fi; setenv efi_fdtfile
scan_dev_for_extlinux=if test -e {devtype} {devnum}:{distro_bootpart} {prefix}extlinux/extlinux.conf; then echo Found {prefix}extlinux/extlinux.conf; run boot_extlinux; echo SCRIPT FAILED: continuing...; fi scan_dev_for_scripts=for script in {boot_scripts}; do if test -e {devtype} {devnum}:{distro_bootpart} {prefix}{script}; then echo Found U-Boot script {prefix}{script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done scriptaddr=0x90000000 soc=tegra210 stderr=serial stdin=serial stdout=serial usb_boot=usb start; if usb dev {devnum}; then setenv devtype usb; run scan_dev_for_boot_part; fi
vendor=nvidia

Environment size: 4703/8188 bytes

Just for reference, it looks like this adapter uses “CONFIG_USB_NET_AX88179_178A” once in the Linux kernel under R28.1, but on my x86_64 PC desktop it instead uses asix+usbnet drivers (I have one of those adapters I’m testing with, used to use it with older Tegra3 boards). Note that by default CONFIG_USB_NET_AX88179_178A is directly built in to the kernel (not a module, so lsmod won’t show it).

On the TX1, under serial console within the U-Boot command line, if the device is attached to the micro-USB connector via the micro-A-to-full-sized-A adapter, I can run “usb start” and the device shows up.

Is your adapter on the micro port? On U-Boot command line, can you successfully run “usb start”?

Thanks for reply.
Yes,The device is attached to the micro-USB connector via the micro-A-to-full-sized-A adapter.The controller of NIC is AX88772CLF, is it the concern?
On U-Boot command line, i can run “usb start”,and it shows:
Tegra210 (P2371-2180) # usb start
starting USB…
USB0: USB EHCI 1.10
scanning bus 0 for devices…
Warning: asix_eth using MAC address from ROM
2 USB Device(s) found
Tegra210 (P2371-2180) # ping 192.168.0.1
Using asix_eth device
EHCI timed out on TD - token=0x88008d80
Rx: failed to receive: -5
EHCI timed out on TD - token=0x8008d80
Rx: failed to receive: -5
EHCI timed out on TD - token=0x88008d80
Rx: failed to receive: -5
EHCI timed out on TD - token=0x8008d80
Rx: failed to receive: -5

ARP Retry count exceeded; starting again
EHCI timed out on TD - token=0x8008d80
Rx: failed to receive: -5
ping failed; host 192.168.0.1 is not alive
Tegra210 (P2371-2180) #

I found the problem.
In the uboot in L4T R24.2.2,the NIC works with no problem, but in L4T 28.1 , the NIC can’t work. Maybe there are some problem in uboot usb eth driver in L4T 28.1.

Hi wjljy1,

So you are using TU2-ET100 and a micro-A-to-full-sized-A adapter to the OTG port?

https://www.trendnet.com/products/USB-adapters/TU2-ET100

HI, WayneWWW
Thanks for reply.
Yes,i am using the same NIC and the interface you describe.
I think u-boot in R28.1 may have a bug.

I have that same adapter working on an R28.1 TX1 in U-Boot. If in Linux it shows up as:

Bus 003 Device 010: ID 0b95:7720 ASIX Electronics Corp. AX88772

Does the “ID” of “0b95:7720” on your lsusb match mine? If this matches exactly, then R28.1 should support your device in U-Boot on a TX1.

Note that in U-Boot, after starting USB (“usb start”), you still need to tell the adapter to do a DHCP query to get an address, or else manually assign an address (making the adapter available doesn’t cause it to get an address…this is what the dhcp command is for after the adapter is initialized). I don’t currently have mine set up where I can easily add a router to test, but if in serial console at the U-Boot command line prompt, you should be able to run the command “help” and see related commands, e.g., “help dhcp”.

Some of the environment is related, e.g., “env print” shows a number of settings, and “env print boot_net_usb_start” shows this macro does the same as manually entering “usb start”. Various boot targets show up starting with the “bootcmd*” prefix, e.g., when flashed to start with eMMC “bootcmd_mmc1” is used, but when booting to SD card “bootcmd_mmc0” is used…there is a related “bootcmd_pxe” for network targets.

The start of a normal boot is via the environment variable “bootcmd” (you can type this on the U-Boot prompt to continue booting), which chains to expansion of “distro_bootcmd”, so on. You can edit these variables and boot once with the changes not being permanently saved so long as you don’t “env save” (see “help env”). If you set some change up which works with setting DHCP address after starting USB, then you can “env save”. You might start by testing if changing “bootcmd” to “run bootcmd_dhcp” instead of bootcmd_distro…without your server to test on I’d just be guessing on exact edits. You might add variables custom to your boot server.

Following is my log on rel-28.1 .

[TX1/r28.1]
Tegra210 (P2371-2180) # usb start
starting USB...
USB0:   USB EHCI 1.10
scanning bus 0 for devices...
Warning: asix_eth using MAC address from ROM
2 USB Device(s) found
Tegra210 (P2371-2180) # dhcp
BOOTP broadcast 1
DHCP client bound to address 10.19.106.175 (10 ms)
Using asix_eth device
TFTP from server 10.19.10.21; our IP address is 10.19.106.175; sending through gateway 10.19.106.1
Filename 'Boot\x86\wdsnbp.com'.
Load address: 0x80080000
Loading: ###
     477.5 KiB/s
done
Bytes transferred = 30832 (7870 hex)

Thanks for reply.
I have tried last two method,sorry it can’t work.In R24 there is no problem.
i use “lsusb” in linux as follow:
lsusb
Bus 001 Device 002: ID 8087:8001 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 010: ID 138a:0011 Validity Sensors, Inc. VFS5011 Fingerprint Reader
Bus 002 Device 009: ID 8087:07dc Intel Corp.
Bus 002 Device 007: ID 0bda:579c Realtek Semiconductor Corp.
Bus 002 Device 028: ID 0b95:772b ASIX Electronics Corp. AX88772B
Bus 002 Device 027: ID 046d:c534 Logitech, Inc. Unifying Receiver
Bus 002 Device 026: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 002 Device 025: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 002 Device 024: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

In u-boot :
Tegra210 (P2371-2180) # usb start
starting USB…
USB0: USB EHCI 1.10
scanning bus 0 for devices…
Warning: asix_eth using MAC address from ROM
2 USB Device(s) found
Tegra210 (P2371-2180) # dhcp
BOOTP broadcast 1
BOOTP broadcast 2
EHCI timed out on TD - token=0x8008d80
Rx: failed to receive: -5
BOOTP broadcast 3
EHCI timed out on TD - token=0x8008d80
Rx: failed to receive: -5
BOOTP broadcast 4
EHCI timed out on TD - token=0x8008d80
Rx: failed to receive: -5
BOOTP broadcast 5
EHCI timed out on TD - token=0x8008d80
Rx: failed to receive: -5

Tegra210 (P2371-2180) # usb tree
USB device tree:
1 Hub (480 Mb/s, 0mA)
| u-boot EHCI Host Controller
|
±2 Vendor specific (480 Mb/s, 200mA)
ASIX Elec. Corp. AX88772C 00282D
Tegra210 (P2371-2180) # usb info
1: Hub, USB Revision 2.0

  • u-boot EHCI Host Controller
  • Class: Hub
  • PacketSize: 64 Configurations: 1
  • Vendor: 0x0000 Product 0x0000 Version 1.0
    Configuration: 1
    • Interfaces: 1 Self Powered 0mA
      Interface: 0
      • Alternate Setting 0, Endpoints: 1
      • Class Hub
      • Endpoint 1 In Interrupt MaxPacket 8 Interval 255ms

2: Vendor specific, USB Revision 2.0

  • ASIX Elec. Corp. AX88772C 00282D
  • Class: Vendor specific
  • PacketSize: 64 Configurations: 1
  • Vendor: 0x0b95 Product 0x772b Version 0.2
    Configuration: 1
    • Interfaces: 1 Bus Powered Remote Wakeup 200mA
    • String: “0”
      Interface: 0
      • Alternate Setting 0, Endpoints: 3
      • Class Vendor specific
      • String: “0”
      • Endpoint 1 In Interrupt MaxPacket 8 Interval 11ms
      • Endpoint 2 In Bulk MaxPacket 512
      • Endpoint 3 Out Bulk MaxPacket 512

I’ve tried two USB-adapters and only one of them can work.

Just checked, my NIC which works well is also TRENDnet TU2-ET100.

Hi WayneWWW
My NIC is TRENDnet TU2-ET100 V5.0R.Yours maybe 3.0R.

I see “0b95:772b”, and the 772b is different between @wjljy1’s failing adapter and my working adapter. This is the product ID, so despite our adapters having the same name, the chipset differs, and thus the driver probably differs (it could be a backwards compatible chip difference where the driver is interchangeable). I couldn’t guarantee it, but I suspect that U-Boot would need a slightly different driver (even if the driver is the same the different USB product ID could make U-Boot believe it does not have a compatible driver).

@WayneWWW, what lsusb ID does your working adapter have, and what ID does the non-working adapter have? My working ID is 0b95:7720, his failing ID is 0b95:772b.
.

Hi,
Following are the results from lsusb. Turns out mine is the same as linuxdev.

OK
Bus 001 Device 002: ID 0b95:7720 ASIX Electronics Corp. AX88772

Fail
Bus 001 Device 008: ID 0bda:8152 Realtek Semiconductor Corp.

I’m looking at the R28.1 TX1 source for U-Boot, I see 0x7720 is listed as AX88772, while the 0x772b is listed as AX88772B. So the source code has the ability to use this, but I don’t know if the config used in the U-Boot build had this enabled or not. Does NVIDIA have a list of the exact U-Boot config for which the R28.1 TX1 U-Boot was compiled?

Just checked internally, but unfortunately we don’t have AX88772B for test. I see there are some minor changes in axis driver between rel-28.1 and re-24.2.1.

I believe commit 14727120 has some influence.

Is it possible to get the config used for building U-Boot on the R28.1 U-Boot when using the default flash? The goal is to build a duplicate matching the existing version, and then edit just the one driver config.

The defconfig file for tx1 is p2371-2180_defconfig.

I have no way to test this, but you could build U-Boot, starting with “make p2371_2180_defconfig”, then edit “.config” to add this to the bottom of the file:

CONFIG_USB_ETHER_ASIX=y

This compiles for me (I’m using a Linaro 5.3 aarch64-linux-gnu- compiler), but I have no way to test it. I didn’t see a way for adding this under menuconfig, but it does seem there may be some changes in the organization of how USB ethernet drivers are included.