This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM4372: USB client boot from Linux host

Part Number: AM4372
Other Parts Discussed in Thread: AM4379, AM4378

Hello,

We've successfully booted via UART and SD card however we now wish to boot via using USB client mode.

Under Linux we are receiving the following message in syslog...

[ 3365.929425] usb 1-1.4: new full-speed USB device number 15 using ehci-pci
[ 3366.022101] usb 1-1.4: not running at top speed; connect to a high speed hub
[ 3366.023727] usb 1-1.4: New USB device found, idVendor=0451, idProduct=6142
[ 3366.023729] usb 1-1.4: New USB device strings: Mfr=33, Product=37, SerialNumber=0
[ 3366.023731] usb 1-1.4: Product: AM43xx1.2
[ 3366.023732] usb 1-1.4: Manufacturer: Texas Instruments
[ 3371.021550] rndis_host 1-1.4:1.0: RNDIS init failed, -110
[ 3371.021564] rndis_host: probe of 1-1.4:1.0 failed with error -110
[ 3381.021526] rndis_wlan 1-1.4:1.0: RNDIS init failed, -110
[ 3381.021634] rndis_wlan: probe of 1-1.4:1.0 failed with error -110
[ 3957.285899] usb 1-1.4: USB disconnect, device number 15

I've not managed to find out exactly  what this -110 error message means to understand why RNDIS is failing.

Using the AM437x GP EVM we get the same behaviour.

I am using Ubuntu 16.04 with NetworkManager installed. I have followed the TI instructions to configure ISC DHCP server and NetworkManager

What piece of information does the RNDIS_HOST module use to locate the configuration?

Daniel

  • The software team have been notified. They will respond here.
  • Biser Gatchev-XID said:
    The software team have been notified. They will respond here.

    Thanks. Yesterday I took some usbmon logs that might be useful. Give me a shout if you want them sent over.

  • Yes, please post them here.
  • Here is the USBmon log

    ffff88021218db40 3975084237 S Ci:001:00 s a3 00 0000 0001 0004 4 <
    ffff88021218db40 3975084249 C Ci:001:00 0 4 = 07050000
    ffff88021218db40 3975084253 S Ci:001:00 s a3 00 0000 0002 0004 4 <
    ffff88021218db40 3975084256 C Ci:001:00 0 4 = 00010000
    ffff88021218db40 3975084257 S Ci:001:00 s a3 00 0000 0003 0004 4 <
    ffff88021218db40 3975084259 C Ci:001:00 0 4 = 00010000
    ffff88021060e9c0 3975084260 S Ii:001:01 -115 4 <
    ffff88021060e9c0 3975087135 C Ii:001:01 0 1 = 00
    ffff88021060e9c0 3975087142 S Ii:001:01 -115 4 <
    ffff88021060e9c0 3975115072 C Ii:001:01 0 1 = 00
    ffff88021060e9c0 3975115078 S Ii:001:01 -115 4 <
    ffff88021060e9c0 3975143074 C Ii:001:01 0 1 = 02
    ffff88021060e9c0 3975143081 S Ii:001:01 -115 4 <
    ffff88021218db40 3975143093 S Ci:001:00 s a3 00 0000 0001 0004 4 <
    ffff88021218db40 3975143147 C Ci:001:00 0 4 = 03050400
    ffff88021218db40 3975143150 S Co:001:00 s 23 01 0012 0001 0000 0
    ffff88021218db40 3975143153 C Co:001:00 0 0
    ffff88021218db40 3975159082 S Ci:001:00 s a3 00 0000 0001 0004 4 <
    ffff88021218db40 3975159091 C Ci:001:00 0 4 = 03050000
    ffff88021218db40 3975159096 S Ci:002:00 s 80 00 0000 0000 0002 2 <
    ffff88021218db40 3975159178 C Ci:002:00 0 2 = 0300
    ffff88021218db40 3975159183 S Co:002:00 s 00 01 0001 0000 0000 0
    ffff88021218db40 3975159298 C Co:002:00 0 0
    ffff88021218db40 3975159306 S Ci:002:00 s a3 00 0000 0001 0004 4 <
    ffff88021218db40 3975159424 C Ci:002:00 0 4 = 00010000
    ffff88021218db40 3975159428 S Ci:002:00 s a3 00 0000 0002 0004 4 <
    ffff88021218db40 3975159549 C Ci:002:00 0 4 = 00010000
    ffff88021218db40 3975159554 S Ci:002:00 s a3 00 0000 0003 0004 4 <
    ffff88021218db40 3975159675 C Ci:002:00 0 4 = 00010000
    ffff88021218db40 3975159683 S Ci:002:00 s a3 00 0000 0004 0004 4 <
    ffff88021218db40 3975159819 C Ci:002:00 0 4 = 00010000
    ffff88021218db40 3975159832 S Ci:002:00 s a3 00 0000 0005 0004 4 <
    ffff88021218db40 3975159894 C Ci:002:00 0 4 = 01010100
    ffff88021218db40 3975159901 S Co:002:00 s 23 01 0010 0005 0000 0
    ffff88021218db40 3975160079 C Co:002:00 0 0
    ffff88021218db40 3975160093 S Ci:002:00 s a3 00 0000 0006 0004 4 <
    ffff88021218db40 3975160171 C Ci:002:00 0 4 = 00010000
    ffff88020f8a2a80 3975263079 S Ii:002:01 -115 1 <
    ffff88021218db40 3975263107 S Ci:002:00 s a3 00 0000 0005 0004 4 <
    ffff88021218db40 3975263179 C Ci:002:00 0 4 = 01010000
    ffff88021218db40 3975263190 S Co:002:00 s 23 03 0004 0005 0000 0
    ffff88021218db40 3975263297 C Co:002:00 0 0
    ffff88021218db40 3975279076 S Ci:002:00 s a3 00 0000 0005 0004 4 <
    ffff88021218db40 3975279180 C Ci:002:00 0 4 = 03011000
    ffff88021218db40 3975279186 S Co:002:00 s 23 01 0014 0005 0000 0
    ffff88021218db40 3975279298 C Co:002:00 0 0
    ffff88021218db40 3975335085 S Ci:000:00 s 80 06 0100 0000 0040 64 <
    ffff88021218db40 3975335408 C Ci:000:00 0 18 = 12010002 02000040 51044261 00002125 0001
    ffff88021218db40 3975335437 S Co:002:00 s 23 03 0004 0005 0000 0
    ffff88021218db40 3975335548 C Co:002:00 0 0
    ffff88021218db40 3975351074 S Ci:002:00 s a3 00 0000 0005 0004 4 <
    ffff88021218db40 3975351171 C Ci:002:00 0 4 = 03011000
    ffff88021218db40 3975351188 S Co:002:00 s 23 01 0014 0005 0000 0
    ffff88021218db40 3975351299 C Co:002:00 0 0
    ffff88021218db40 3975407056 S Co:000:00 s 00 05 0033 0000 0000 0
    ffff88021218db40 3975407302 C Co:000:00 0 0
    ffff88021218dd80 3975427055 S Ci:051:00 s 80 06 0100 0000 0012 18 <
    ffff88021218dd80 3975427334 C Ci:051:00 0 18 = 12010002 02000040 51044261 00002125 0001
    ffff88021218dd80 3975427350 S Ci:051:00 s 80 06 0600 0000 000a 10 <
    ffff88021218dd80 3975427708 C Ci:051:00 0 10 = 0a060002 ffffff40 0100
    ffff88021218dd80 3975427731 S Ci:051:00 s 80 06 0200 0000 0009 9 <
    ffff88021218dd80 3975428082 C Ci:051:00 0 9 = 09024600 020101c0 32
    ffff88021218dd80 3975428095 S Ci:051:00 s 80 06 0200 0000 0046 70 <
    ffff88021218dd80 3975428457 C Ci:051:00 0 70 = 09024600 020101c0 32030903 09040000 010202ff 02052400 10010524 01000104
    ffff88021218d840 3975428480 S Ci:051:00 s 80 06 0300 0000 00ff 255 <
    ffff88021218d840 3975428782 C Ci:051:00 0 4 = 04030904
    ffff88021218d840 3975428790 S Ci:051:00 s 80 06 0325 0409 00ff 255 <
    ffff88021218d840 3975429033 C Ci:051:00 0 20 = 14034100 4d003400 33007800 78003100 2e003200
    ffff88021218d840 3975429040 S Ci:051:00 s 80 06 0321 0409 00ff 255 <
    ffff88021218d840 3975429299 C Ci:051:00 0 36 = 24035400 65007800 61007300 20004900 6e007300 74007200 75006d00 65006e00
    ffff88021218da80 3975429461 S Co:051:00 s 00 09 0001 0000 0000 0
    ffff88021218da80 3975429771 C Co:051:00 0 0
    ffff88021218da80 3975429962 S Ci:051:00 s 80 06 0301 0409 00ff 255 <
    ffff88021218da80 3975430172 C Ci:051:00 0 8 = 08037000 62006300
    ffff88021218d780 3975430188 S Ci:051:00 s 80 06 0302 0409 00ff 255 <
    ffff88021218d780 3975430405 C Ci:051:00 0 8 = 08037000 62006900
    ffff88021218d780 3975430439 S Co:051:00 s 21 43 000c 0000 0000 0
    ffff88021218d780 3975430656 C Co:051:00 -32 0
    ffff88021218d780 3975430659 S Co:051:00 s 21 00 0000 0000 0018 24 = 02000000 18000000 01000000 01000000 00000000 40060000
    ffff88021218d780 3980427364 C Co:051:00 -2 0
    ffff880082c3ea80 3980427475 S Co:002:00 s 23 08 8330 0001 0000 0
    ffff880082c3ee40 3980427524 S Co:051:00 s 21 43 000c 0000 0000 0
    ffff880082c3ea80 3980427554 C Co:002:00 0 0
    ffff880082c3ea80 3980427559 S Co:002:00 s 23 08 0330 0001 0000 0
    ffff880082c3ea80 3980427694 C Co:002:00 0 0
    ffff880082c3ee40 3985427436 C Co:051:00 -2 0
    ffff8801cae2b3c0 3985427482 S Co:051:00 s 21 00 0000 0000 0018 24 = 02000000 18000000 01000000 01000000 00000000 40060000
    ffff8801cae2be40 3985427496 S Co:002:00 s 23 08 8330 0001 0000 0
    ffff8801cae2be40 3985427588 C Co:002:00 0 0
    ffff8801cae2be40 3985427609 S Co:002:00 s 23 08 0330 0001 0000 0
    ffff8801cae2be40 3985427723 C Co:002:00 0 0
    ffff8801cae2b3c0 3990427454 C Co:051:00 -2 0
    ffff8801a5d19300 3990427684 S Ci:051:00 s 80 06 0302 0409 00ff 255 <
    ffff8801a5d19480 3990427699 S Co:002:00 s 23 08 8330 0001 0000 0
    ffff8801a5d19480 3990427744 C Co:002:00 0 0
    ffff8801a5d19480 3990427754 S Co:002:00 s 23 08 0330 0001 0000 0
    ffff8801a5d19480 3990427866 C Co:002:00 0 0
    ffff8801a5d19300 3990428119 C Ci:051:00 -32 0
    ffff8801a5d19300 3990428367 S Ci:051:00 s 80 06 0302 0409 00ff 255 <
    ffff8801a5d19300 3990428521 C Ci:051:00 -32 0
    ffff8801a5d19300 3990428537 S Ci:051:00 s 80 06 0302 0409 00ff 255 <
    ffff8801a5d19300 3990428871 C Ci:051:00 -32 0
    ffff8801a5d19300 3990428948 S Ci:051:00 s 80 06 0302 0409 0002 2 <
    ffff8801a5d19300 3990429253 C Ci:051:00 -32 0
    ffff8801a5d19300 3990429263 S Ci:051:00 s 80 06 0302 0409 0002 2 <
    ffff8801a5d19300 3990429617 C Ci:051:00 -32 0
    ffff8801a5d19300 3990429648 S Ci:051:00 s 80 06 0302 0409 0002 2 <
    ffff8801a5d19300 3990430119 C Ci:051:00 -32 0
    ffff8801784639c0 3990938337 S Ci:051:00 s 80 06 0300 0000 00ff 255 <
    ffff8801784639c0 3990938527 C Ci:051:00 -32 0
  • Hello,

    Have your software team been able to offer an insight into this problem?

    Daniel
  • Hello Biser, can we please have an update on the USB client boot issue. Your support would be appreciated here as our development is being held up and we are up against a very aggressing schedule. Please do let us know if you require any further detail etc.

    Steve

  • The -110 error is a timeout.

    Steve K.

  • Thank you.

    Can you shed some light on why is this timing out? What is the configuration that rndis_host/usbcore module is looking for that it cannot find? My understanding was that the USB client should be able to bring up a network interface with a standard Linux distribution.
  • From the traces posted above it seems that the Sitara processor is failing to respond to the RNDIS_INIT command request. The RNDIS init command request doesn't contain a lot of information but one thing that is different is the MaxPacket size. The network trace we have is sending a value of 0x640 whereas Windows appears to send a value of 0x4000. Does this matter? Another difference between Linux and Windows is that Linux sends a SET ETHERNET PACKET FILTER to which the Sitara responds with URB_Control_out. I suspect this is harmless but it is a noted difference.
  • Can you please confirm what version of the TI SDK you are using? Thanks.
  • I have the same problem with Rico Board on Ubuntu 16.04

    uname -a
    Linux i5-desktop 4.10.0-35-generic #39~16.04.1-Ubuntu SMP Wed Sep 13 09:02:42 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

    [ 2297.278246] usb 2-1.8.2: new full-speed USB device number 12 using ehci-pci
    [ 2297.386759] usb 2-1.8.2: not running at top speed; connect to a high speed hub
    [ 2297.388260] usb 2-1.8.2: New USB device found, idVendor=0451, idProduct=6142
    [ 2297.388263] usb 2-1.8.2: New USB device strings: Mfr=33, Product=37, SerialNumber=0
    [ 2297.388264] usb 2-1.8.2: Product: AM43xx1.2
    [ 2297.388266] usb 2-1.8.2: Manufacturer: Texas Instruments
    [ 2302.445508] rndis_host 2-1.8.2:1.0: RNDIS init failed, -110
    [ 2302.445529] rndis_host: probe of 2-1.8.2:1.0 failed with error -110                                                                                      
    [ 2312.684691] rndis_wlan 2-1.8.2:1.0: RNDIS init failed, -110
    [ 2312.684745] rndis_wlan: probe of 2-1.8.2:1.0 failed with error -110

  • Validated this on my Ubuntu 14.04 setup:

    [2952740.368766] usb 1-1.2.7.3: new full-speed USB device number 99 using ehci-pci
    [2952740.461394] usb 1-1.2.7.3: not running at top speed; connect to a high speed hub
    [2952740.462778] usb 1-1.2.7.3: New USB device found, idVendor=0451, idProduct=6142
    [2952740.462782] usb 1-1.2.7.3: New USB device strings: Mfr=33, Product=37, SerialNumber=0
    [2952740.462785] usb 1-1.2.7.3: Product: AM43xx1.2
    [2952740.462787] usb 1-1.2.7.3: Manufacturer: Texas Instruments
    [2952740.466656] rndis_host 1-1.2.7.3:1.0 usb0: register 'rndis_host' at usb-0000:00:1a.0-
    1.2.7.3, RNDIS device, 9a:1f:85:1c:3d:0e
    [2952740.565131] init: isc-dhcp-server main process (11425) killed by TERM signal
    [2952740.745126] init: isc-dhcp-server main process (11573) killed by TERM signal
    [2952745.174869] device usb0 entered promiscuous mode

    This was with an AM437x StarterKit.
  • Could you validate this with a stock Ubuntu 16.04 LTS image?
  • Other Board phyWega AM335x work's fine (register new network interface). Boot procedure is not testet

    I'ill test AM4379 on Ubuntu 14.04 end of this week.

    [  442.289839] usb 2-1.8.5: new full-speed USB device number 8 using ehci-pci
    [  442.398323] usb 2-1.8.5: not running at top speed; connect to a high speed hub
    [  442.399423] usb 2-1.8.5: New USB device found, idVendor=0451, idProduct=6141
    [  442.399435] usb 2-1.8.5: New USB device strings: Mfr=33, Product=37, SerialNumber=0
    [  442.399437] usb 2-1.8.5: Product: AM335x USB
    [  442.399438] usb 2-1.8.5: Manufacturer: Texas Instruments
    [  442.455730] rndis_host 2-1.8.5:1.0 usb0: register 'rndis_host' at usb-0000:00:1d.0-1.8.5, RNDIS device, 7e:35:8b:e4:d8:c3
    [  442.474757] rndis_host 2-1.8.5:1.0 enp0s29u1u8u5: renamed from usb0
    [  442.506841] IPv6: ADDRCONF(NETDEV_UP): enp0s29u1u8u5: link is not ready

  • Additionally, do you have the usbmon log simlar to that which I posted from the successful trace of the Ubuntu 14.04 and AM43xx1.2 board?
  • Daniel Dodson said:
    Could you validate this with a stock Ubuntu 16.04 LTS image?

    Daniel, I've reproduced your results between an AM437x SK and Ubuntu 16.04 LTS. It seems to be an Ubuntu issue. I'll look at it a little more, but it might be best to file a bug with them as well.

    I tried a Beaglebone Black, AM335x based, and it seems to work fine. They use different host controllers, so it seems to be specific to that host driver.

  • Daniel,

    I've done quite a bit of testing and it seems that an incompatibility between the AM437x as a client/gadget and Linux as a host (either ARM or x86) has developed somewhere between Kernel version 3.13 and 3.14. As stated earlier, my Ubuntu 14.04 with v3.13.0 works. I also validated that 3.12.10 seems to work. However, 3.14 and later are broken.

    I will log this as a bug, but since using Ubuntu 14.04 is a valid workaround, the priority will be set appropriately. It also seems to be a mainline issue as it affects both ARM and x86. In my research, I found other issues that affected older versions of Linux and RNDIS, mainly with Windows phones. The fix for this issue is still in modern kernels, but something else must have crept in to cause a problem. Since RNDIS has vastly fallen out of popularity, it seems that this particular issue has gone unnoticed.
  • Ron,

    Many thanks for doing this testing. Last night I confirmed what you've said with a Linux Mint 17.1 box I have at home - importantly this is based on Ubuntu 14.04. It worked and I have taken logs. I haven't yet had time to look through the logs. So your work narrows down the issue from a black box perspective but it would be good to understand what is causing this issue. A quick glance at the source diffs between Linux 3.13 and 3.14 didn't show up anything notably different in the rndis_host or cdc_ether area.

    Daniel

  • Notice to my mesage from Sep 26, 2017 3:53 PM

    Ubuntu 16.04 (kernel 4.10)
    AM335x OK
    AM4378 FAILED

    Kubuntu 14.04 (kernel 4.4)
    AM335x OK
    AM4378 FAILED
  • Thanks Dmitrij for your testing. 

    We've IDed an upstream patch that seems to fix the issue on our end.

    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=linux-4.12.y&id=7f65b1f5adc5f8496ca8bec4947de66fefe36220

    This was included in the v4.12 kernel. We've also asked the upstream maintainer to send this patch to the v4.9 and v4.4 stable kernels so that they will eventually trickle down to Ubuntu updates. Unfortunately for now, the patch would need to be backported to the appropriate version and included in an Ubuntu system manually, unless moving to a v4.12 or later kernel on an Ubuntu release is an option.