<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>i.MX ProcessorsのトピックRe: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485560#M77581</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have an update thanks to a pointer from Peter Chen at NXP. Peter suggested a number of things - one of which was preventing the driver from putting the USB PHY in suspend. This must not be confused with system level suspend - it seems that when no device is connected the USB PHY is put into suspend and resumed on attach.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Within the CE BSP there is a function that determines whether this is supported:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P class="Code"&gt;//------------------------------------------------------------------------------&lt;/P&gt;&lt;P class="Code"&gt;// Function: PowerDownSchemeExist&lt;/P&gt;&lt;P class="Code"&gt;//&lt;/P&gt;&lt;P class="Code"&gt;// Description: This function is called to check if we can stop the system clock&lt;/P&gt;&lt;P class="Code"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and PHY clock, it is determined by IC capability, if VBUS and ID&lt;/P&gt;&lt;P class="Code"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; interrupt without clock can wake up the system, we can enter&lt;/P&gt;&lt;P class="Code"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; low power mode, else we can't&lt;/P&gt;&lt;P class="Code"&gt;//&lt;/P&gt;&lt;P class="Code"&gt;//------------------------------------------------------------------------------&lt;/P&gt;&lt;P class="Code"&gt;BOOL PowerDownSchemeExist(void)&lt;/P&gt;&lt;P class="Code"&gt;{&lt;/P&gt;&lt;P class="Code"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return TRUE;&lt;/P&gt;&lt;P class="Code"&gt;}&lt;/P&gt;&lt;P class="Code"&gt;&lt;/P&gt;&lt;P class="Code"&gt;I just changed the above to return FALSE to prevent the driver issuing the PHY suspend/resume process. With this change the port no longer gets into the stuck state.&lt;/P&gt;&lt;P class="Code"&gt;&lt;/P&gt;&lt;P class="Code"&gt;So now I have to understand why the PHY suspend/resume process is not working for some products with some USB devices. Either that or determine whether we really need the PHY to be put into suspend mode. Power is not an issue.&lt;/P&gt;&lt;P class="Code"&gt;&lt;/P&gt;&lt;P class="Code"&gt;So technically this issue is still not resolved but my work-around could be to prevent PHY suspend with the above change.&lt;/P&gt;&lt;P class="Code"&gt;&lt;/P&gt;&lt;P class="Code"&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 21 Mar 2016 17:24:37 GMT</pubDate>
    <dc:creator>markwilliams</dc:creator>
    <dc:date>2016-03-21T17:24:37Z</dc:date>
    <item>
      <title>USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485536#M77557</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We have been battling issues with USB memory stick support for some time with the i.MX28 Windows CE BSP. We have implemented a number of 'fixes' ranging from Microsoft updates, Errata Work-arounds and general Windows CE fixes from other BSPs or user experiences found online and in these forums.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We have an issue where after several insertions of a memory stick the USB port appears to lock up and on the next device attachment the 'AttachDevice' process fails at DEVICE_CONFIG_STATUS_SCHEDULING_GET_DEVICE_DESCRIPTOR_TEST. This is actually the first point in the attach process that an attempt is made to communicate with the device and uses ENPOINT 0 on a control pipe created during earlier stages of the AttachProcess.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Once the port has failed it no longer responds to any other USB device and fails at this same point every time. The pipe has the halt flag set and is non-functional. The only way to recover seems to be to power cycle the unit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We have found forum posts that recommend increasing the delay from ResetAndEnablePort (the previous step) and sending any data. By default in the BSP this is 10ms but some devices may not be ready to communicate at this point and still coming out of reset. We have tried increasing to 100ms and the results initially seemed promising but we could eventually get it to fail again after repeated insertions.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We have used a USB logger to see what happens on the bus through several insertions to failure. For each successful attach and detach we see no bus errors and can decode the SCSI packets. The last successful transfer on removal was the last SCSI Test Unit Ready packet which is sent to poll for disk removal.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When we insert the disk and there is a failure we just see babbled data out of the USB port. There isn't a single valid packet but random data bytes being received by the analyser following device reset. The analyser cannot tell if the memory stick is babbling or the i.MX28 processor as it is just receiving random bytes constantly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have attached the last successful transfer below (note that NAKs and SOF are hidden). The memory stick was unplugged in the middle of this screenshot which is why the analyser detected suspend (no bus activity). The Reset following the suspend is when the stick was re-inserted. You can see that following this we just have babbled data. The bytes are random values.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="USB1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/54982i9BE9AB41935D5C1E/image-size/large?v=v2&amp;amp;px=999" role="button" title="USB1.png" alt="USB1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;On a successful remove / attach we see that after the suspend there are two resets and we have the initial 'get descriptor test' followed by the address set and the rest of the successful enumeration.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="USB3.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/55018i488F724616B8F317/image-size/large?v=v2&amp;amp;px=999" role="button" title="USB3.png" alt="USB3.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have been adding debug messages at various points to try and figure out what could be going on. I am not sure why the USB port has the random data on it. Perhaps there is a corrupt qHead/qTD that is just running through memory sending out random data bytes but the data is not in any of the proper transfer types (SETUP/IN/OUT).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The transfer queue should be torn down on removal and cleared out and then recreated on the first transfer on attach.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Has anyone seen anything similar or could offer some debugging advice?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you in advance, Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 14:38:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485536#M77557</guid>
      <dc:creator>markwilliams</dc:creator>
      <dc:date>2016-02-24T14:38:22Z</dc:date>
    </item>
    <item>
      <title>Re: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485537#M77558</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Some more examples of the random data on the port on failure. Note if we disconnect and reconnect this still persists.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="uab4.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/55091iCE0FBE48595A2FF0/image-size/large?v=v2&amp;amp;px=999" role="button" title="uab4.png" alt="uab4.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 14:42:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485537#M77558</guid>
      <dc:creator>markwilliams</dc:creator>
      <dc:date>2016-02-24T14:42:12Z</dc:date>
    </item>
    <item>
      <title>Re: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485538#M77559</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;&amp;nbsp; Please look at my comments below. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 16,0000pt; font-family: 'Times New Roman';"&gt;&lt;BR /&gt;1.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;&amp;nbsp; As first step, please try to test DRAM memory.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;You may&amp;nbsp; use the memory test, provided in Community. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;"i.MX28 DDR stress test"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;&lt;SPAN&gt;&amp;lt; &lt;/SPAN&gt;&lt;A class="jive-link-message-small" data-containerid="2004" data-containertype="14" data-objectid="375263" data-objecttype="2" href="https://community.freescale.com/message/375263#375263"&gt;https://community.freescale.com/message/375263#375263&lt;/A&gt;&lt;SPAN&gt; &amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;2.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;&amp;nbsp; Below is possible new i.MX28 erratum.&lt;/SPAN&gt;&lt;SPAN style="font-size: 16,0000pt; font-family: 'Times New Roman';"&gt;ERR006308: USB: HOST controller lock-up issue.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 16,0000pt; font-family: 'Times New Roman';"&gt;Description:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;The USB host controller can lock-up when a FIFO under run occurs on a non-32-bit aligned&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;data buffer. This applies to both the Host controller and OTG controller in host mode. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 16,0000pt; font-family: 'Times New Roman';"&gt;&lt;BR /&gt;Workaround:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; &lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;&amp;nbsp; 2.1. Set Stream Disable bit (SDIS) in the USBMODE register. This will force the controller to&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;load an entire packet in the FIFO before starting to transmit on the USB bus. Hence, the&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;FIFO will never underrun. This will somewhat reduce the max bandwidth of the USB since&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;there will be idle time as the the controller waits for the entire packet to be loaded.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;&amp;nbsp;&amp;nbsp; 2.2. Instead of setting SDIS, the FIFO threshold can be increased such that more data will be&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;in the FIFO before a packet transmit is started. This increases the tolerance to bus latency&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;and avoid FIFO under run. The Threshold can be increased by using higher values for the&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;TXTHRESHOLD filed in the TXFILLTUNING register. The default value is 2 bursts (64 bytes&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;if burst size=8).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;3.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;You may try to decrease USB speed (full-speed) as described in &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;&amp;lt; &lt;/SPAN&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/thread/307678"&gt;&lt;SPAN class="15" style="font-family: 'Times New Roman'; color: #0000ff; text-decoration: underline; font-size: 16,0000pt;"&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;A href="https://community.freescale.com/thread/307678" target="test_blank"&gt;https://community.freescale.com/thread/307678&lt;/A&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt; &amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;If this helps, the issue may be caused by hardware problems, in particular as following. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;4.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;&amp;nbsp; USB functionality is critical regarding clock accuracy, please try to exchange &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Times New Roman'; font-size: 16,0000pt;"&gt;24 MHz oscillator.&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Yuri&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Feb 2016 04:21:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485538#M77559</guid>
      <dc:creator>Yuri</dc:creator>
      <dc:date>2016-02-25T04:21:57Z</dc:date>
    </item>
    <item>
      <title>Re: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485539#M77560</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mark,&lt;/P&gt;&lt;P&gt;I have some experience with iMX28 and USB and i also had an issues with USB stick at iMX28&lt;/P&gt;&lt;P&gt;please answer on next questions:&lt;/P&gt;&lt;P&gt;1) How many different kind of sticks have you tried to connect to the board? By USB standard, USB memory stick should have crystal with frequency stability better than 50ppm. Some time ago we found, that very cheap USB sticks without crystal (only with RC) works very unstable.&lt;/P&gt;&lt;P&gt;2) Is it custom board with iMX28? Do you have screenshot of USB traces from MCU to USB port? USB should be routed according to the standard, otherwise you will see some strange issues, that you will never fix with SW.&lt;/P&gt;&lt;P&gt;3) How many PCBs have you made and how many has this issue? At some of our devices, that now at mass production, we found that BGA and crystal was mounted not so good, and it was additional capacitance between iMX28 package and PCB. As a result - frequency deviation from 24MHz was more than 150ppm. I recommend you to check, that you have frequency at crystal inside the range 24MHz +/-50ppm (you can do that with spectrum analyzer or with pulse counter. Oscilloscope usually will not have needed accuracy).&lt;/P&gt;&lt;P&gt;4) Can you provide SCH for USB host port?&lt;/P&gt;&lt;P&gt;--&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Sergii&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Feb 2016 08:00:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485539#M77560</guid>
      <dc:creator>Radist</dc:creator>
      <dc:date>2016-02-25T08:00:01Z</dc:date>
    </item>
    <item>
      <title>Re: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485540#M77561</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Sergii,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your reply and the pointers above. Its worth mentioning that all of these tests are carried out limited to full speed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;A long time ago when I first started working with the iMX28 (2012) I had issues with high speed USB on memory sticks despite signal integrity measurements showing great signal quality. I have since applied numerous microsoft driver fixes around the SCSI transfers but the one that made high speed reliable (at the time) was the iMX28 errata that recommends the arm swap instruction for register writes. That being said as I was unable to perform enough testing I carried on with the port limited to full speed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also the issue only occurs on some memory sticks during attach and that is only on a few. The first transfer fails and the controller is babbling data out of the USB port so I am inclined to think that there is something in the way the transfer descriptors are set up that is causing corruption and the controller to output random data. Previous insertions and data transfers do not have a single error. But of course I am open to look at any suggestions.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With regards to the trace routing this has been carefully done with controlled impedance lines, length matched from processor to connector in less than 50mm and in accordance with a few different USB guideline documents. There is a USB ESD diode (low enough capacitance for USB high speed) but we already tried removing that in very early tests just in case. Anyway at full-speed limited USB the signal integrity issues are really unlikely to play a part.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Even with the port set to high speed I have performed USB signal integrity tests with a low capacitance differential probe using the USB test patters. The eye is nice open and clean.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have also run multiple USB attach and transfer tests with a protocol analyser without any error conditions across the bus on successful attach. So this seems to be something relating to the driver being left in a bad state from the last detach, or not being configured correctly on the next attach. There are a couple of chip errata around this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We have shipped over 5000 boards using this processor and memory layout. There are two boards with different USB routings - one with a 3-port hub and the other with a single direct host port.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have bought 20 different memory sticks ranging from no-brand vendors up to expensive branded parts with various capacities. Some memory sticks can produce this quicker than others.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Another thought is that the 10ms following port ResetAndEnable might not be enough and the subsequent first endpoint 0 transfer may fail as the device is not ready. If there is not a mechanism to handle this first transfer failing then it could be an issue. There certainly was no mechanism to retry from a control pipe failure until I found some additional code that was added to the iMX27 BSP and ported it across to the iMX28. All this did was allow three attempts at the control transfer but still continuously failed from that point.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for the oscillator pointers. I will have to check this spec again (I chose the crystal four years ago) but I recall it being a low PPM part with high speed USB reliability in mind.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Feb 2016 09:00:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485540#M77561</guid>
      <dc:creator>markwilliams</dc:creator>
      <dc:date>2016-02-25T09:00:56Z</dc:date>
    </item>
    <item>
      <title>Re: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485541#M77562</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yuri,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your reply above. I have replied with some more detail to Sergii below. The post regarding limiting the port to full speed was mine from quite a few years ago! These issues are happening on attach for a small number of devices on random insertions limited to full speed. If the disk does mount then USB transfers are reliable and I do not see errors on my protocol analyser. If there was an underlying clock or signal integrity issue (even at full speed) then I would expect to see errors in other places and not just a failed attach.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also once in this state the port is just sending out random data so it does seem to look like something has happened to the controller or its transfer queue pointers to make it babble. I am open to all suggestions though.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With regards to the DDR stress test, this is something that I would like to do independent of the USB issues anyway. I would need to rebuild for my DDR capacity and timings as I am not using the same part as the reference design. I will have a read of the posts - hopefully they explain how to go about rebuilding the test.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With regards to the errata this must be a hidden NXP internal errata! The current errata document for customers is V2 from 2012 and doesn't mention this. Is there somewhere else I need to look for errata for the iMX28 in case I am missing anything else?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have heard the same USB controller (Chipidea?) is used on other processors but I am not sure if the same errata applies across the iMX range.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I will have a read and test the errata fix suggestion.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks, Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Feb 2016 09:10:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485541#M77562</guid>
      <dc:creator>markwilliams</dc:creator>
      <dc:date>2016-02-25T09:10:20Z</dc:date>
    </item>
    <item>
      <title>Re: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485542#M77563</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mark,&lt;/P&gt;&lt;P&gt;i can see you made deep research there.&lt;/P&gt;&lt;P&gt;I am not expert in USB from SW point of view, so can't say nothing about &lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; font-size: 14px;"&gt;ResetAndEnable&amp;nbsp; issue.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; font-size: 14px;"&gt;Regarding crystal - we also had 20ppm crystal, but due to bad mounting and some issues, frequency at the crystal was 24MHz + 150ppm.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Try to heat your MCU with air solder station (to have +70....+80C at MCU) and check will you have this issue, and repeat test with some freeze cooling spray. It could be interesting to see results.&lt;/P&gt;&lt;P&gt;Also, if you have an issue only after inserting, - what is going on with VBUS power at this moment? Please check that you have stable +5V without any drops and peaks just after insertion. Maybe you have big capacitor at the USB port and it need more than 10ms for charging? So, in that case you will have stable +5V just after plug in.&lt;/P&gt;&lt;P&gt;As i understand you have USB port power switch and you are controlling it from MCU? Can you try to apply +5V directly to USB host port without any switchers? &lt;/P&gt;&lt;P&gt;Sergii&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Feb 2016 09:27:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485542#M77563</guid>
      <dc:creator>Radist</dc:creator>
      <dc:date>2016-02-25T09:27:14Z</dc:date>
    </item>
    <item>
      <title>Re: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485543#M77564</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Sergii,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the advice on the crystal.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With regards to power dips we have analysed this. We have a single USB current limited switch (500mA) on the port and the recommended 150uF capacitance to minimise droops on the host PSU when a device is plugged in and needs to charge its internal capacitance.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The 5V supply holds up well - there is brief ns of glitch on the 5V rail at the connector as the device is connected but not on the system 5V rail - this is likely due to the power supply ferrite beads and inability to respond to the instantaneous current required when plugging in a new device. The 5V rail as the device sees it just comes up quickly on attach as expected on a hot plug. There is no after-effect for example a trigger of the power switch over-current circuitry.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am not sure why that would cause the controller to just output rubbish data. Once in this state any USB device plugged in is detected but fails when the AttachDevice function tries to schedule its first transfer. If I log any future attachment once in this state then after the port reset there is just random data on the bus - not even SOF packets. At least nothing my protocol analyser can hook onto and decode.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Feb 2016 11:53:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485543#M77564</guid>
      <dc:creator>markwilliams</dc:creator>
      <dc:date>2016-02-25T11:53:24Z</dc:date>
    </item>
    <item>
      <title>Re: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485544#M77565</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am looking to see if I can output the QHead and Qtd list for the asynchronous schedule when the port is in the stuck state. The idea behind this to see if there is invalid pointers in the transfer schedule. At the moment I am not 100% sure where to do this - I need to fully understand the Microsoft driver structures to know what to output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am not able to run in a debugger connected to VS so using release builds and debug messages. The debug builds are also too bloated and slow - the timings can affect what we are trying to test.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Feb 2016 12:02:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485544#M77565</guid>
      <dc:creator>markwilliams</dc:creator>
      <dc:date>2016-02-25T12:02:09Z</dc:date>
    </item>
    <item>
      <title>Re: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485545#M77566</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have been looking in more detail at the USB protocol analyser output. On a failed attach there is random data on the USB bus shown in my protocol analyser. But when I look at the timing and bit levels I can see that they are produced every 1ms (USB frame duration at full speed) and each attempt at a transfer starts with a valid SYNC packet of 0x01.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The PID that follows the SYNC is the random aspect and as the protocol analyser does not detect a valid PID it just shows 'data'.&lt;/P&gt;&lt;P&gt;I have included an example below and every packet starts with a valid SOF but then a random PID:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="usb sync.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/55133i5952D0D3A452F55C/image-size/large?v=v2&amp;amp;px=999" role="button" title="usb sync.png" alt="usb sync.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;So to me the controller is consciously trying to send something but that something has an invalid PID which helps strengthen the fact that it might not be real data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Occasionally (by chance) the PID field happens to have the second four bits as the complement of the first four and match a valid PID so my analyser shows an attempt at decoding it, but is is not a real packet. The random data just happened to have something that matched a valid PID. The rest of the packet is missing because it wasn't intentional. Anyway in this case it happened to look like the start of a PING?!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="usb sync 2.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/55155i51DD3D193CBC3E58/image-size/large?v=v2&amp;amp;px=999" role="button" title="usb sync 2.png" alt="usb sync 2.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So I now have to understand what puts the controller in this weird state and how to prevent it or have a recovery mechanism on device re-insertion to save having to power cycle.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Initially it could be one of the Erratum such as suggested by Yuri (although according to the iMX6 version of this erratum ERR006308 the host controller only sends SOF packets in this state but I am not seeing valid SOF.)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The only other erratum is Errata 2858 USB controller may access a wrong address for the dTD (endpoint transfer descriptor) and then hangs. I have tried using other SBURSTCFG modes to work around this with no luck but perhaps there is something in postponing freeing the last TD in case memory could be re-used while the controller is still pointing to it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hopefully someone can help me understand this or if there are any fixes applied to other BSPs that I may need. Windows CE support is not as readily available as Linux though!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Feb 2016 12:35:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485545#M77566</guid>
      <dc:creator>markwilliams</dc:creator>
      <dc:date>2016-02-25T12:35:51Z</dc:date>
    </item>
    <item>
      <title>Re: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485546#M77567</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Deactivated user​ can you help to review this case?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 26 Feb 2016 16:23:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485546#M77567</guid>
      <dc:creator>karina_valencia</dc:creator>
      <dc:date>2016-02-26T16:23:13Z</dc:date>
    </item>
    <item>
      <title>Re: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485547#M77568</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I tried setting the USBMODE SDIS bit as per Errata ERR006308 but I was still able to get the USB port to hang in the same way with several insertions / removals of memory sticks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To be honest the iMX6 errata for this same issue says that the controller outputs SOF in the stuck-state which is not the same as my issue where it is outputting random data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am therefore still looking for the root cause of this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 01 Mar 2016 14:39:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485547#M77568</guid>
      <dc:creator>markwilliams</dc:creator>
      <dc:date>2016-03-01T14:39:06Z</dc:date>
    </item>
    <item>
      <title>Re: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485548#M77569</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Deactivated user​ do you have an update of this case?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 01 Mar 2016 15:40:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485548#M77569</guid>
      <dc:creator>karina_valencia</dc:creator>
      <dc:date>2016-03-01T15:40:29Z</dc:date>
    </item>
    <item>
      <title>Re: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485549#M77570</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mark,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Currently, we have one of our engineers assigned to this case. We will provide an update to this thread as soon as we can.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" data-containerid="-1" data-containertype="-1" data-content-finding="Community" data-objectid="209412" data-objecttype="3" href="https://community.nxp.com/people/adeneoengineeringteam" style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #017bba; text-decoration: underline;"&gt;Adeneo Engineering Team&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 01 Mar 2016 18:33:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485549#M77570</guid>
      <dc:creator>adeneo-embedded</dc:creator>
      <dc:date>2016-03-01T18:33:55Z</dc:date>
    </item>
    <item>
      <title>Re: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485550#M77571</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you adeneo! I hope you can help!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 01 Mar 2016 19:03:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485550#M77571</guid>
      <dc:creator>markwilliams</dc:creator>
      <dc:date>2016-03-01T19:03:34Z</dc:date>
    </item>
    <item>
      <title>Re: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485551#M77572</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="margin-left: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;Hi Mark,&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-left: .5in;"&gt;&lt;/P&gt;&lt;P style="margin-left: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;Here is the results of our investigation.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-left: .5in;"&gt;&lt;/P&gt;&lt;P style="margin-left: .5in;"&gt;&lt;SPAN style="color: #383838; text-decoration: underline; font-family: 'Arial Narrow','sans-serif';"&gt;USB HOST CONTROLLERS&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-left: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;iMX28 has two USB host controllers, USB0 w/ OTG and USB1 with host support only.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-left: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;It may be important to know which port is being used when failure happen, specifically if OTG is involved.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-left: .5in;"&gt;&lt;SPAN style="color: #383838; text-decoration: underline; font-family: 'Arial Narrow','sans-serif';"&gt;FSL BINARIES and MSFT QFEs&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-left: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;The binaries in the image (as the call stack would be) are:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-left: .5in; text-indent: .5in;"&gt;&lt;STRONG style="color: #943634; font-family: 'Arial Narrow','sans-serif';"&gt;USBDISK6.DLL&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-left: 1.0in; text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;– from …\PLATFORM\COMMON\src\SOC\&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #943634;"&gt;common_FS_V2&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;\MS\USBCLASS\USBDISK6\*&lt;/SPAN&gt;&lt;/P&gt;&lt;OL style="list-style-type: upper-alpha;"&gt;&lt;LI&gt;&lt;STRONG style="color: #00b050; font-family: 'Arial Narrow','sans-serif';"&gt;USBMSC.DLL&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt; &lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P style="margin-left: 1.0in; text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;– from &lt;/SPAN&gt;&lt;STRONG style="color: #00b050; font-family: 'Arial Narrow','sans-serif';"&gt;PUBLIC&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt; branch (therefore up-to-date via MSFT QFEs)&lt;/SPAN&gt;&lt;/P&gt;&lt;OL style="list-style-type: upper-alpha;"&gt;&lt;LI&gt;&lt;STRONG style="color: #00b050; font-family: 'Arial Narrow','sans-serif';"&gt;USBD.DLL&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt; &lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P style="margin-left: 1.0in; text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;– from &lt;/SPAN&gt;&lt;STRONG style="color: #00b050; font-family: 'Arial Narrow','sans-serif';"&gt;PUBLIC&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt; branch (therefore up-to-date via MSFT QFEs)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-left: .5in; text-indent: .5in;"&gt;&lt;STRONG style="color: #943634; font-family: 'Arial Narrow','sans-serif';"&gt;Hcd_hsh1.DLL&lt;/STRONG&gt; &lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;corresponding to EHCI.DLL of PUBLIC branch&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-left: 1.0in; text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;– from …\PLATFORM\&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #943634;"&gt;iMC28-EVK&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;\SRC\drivers\USBH\HSH1 and&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-left: 1.0in; text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;– from …\PLATFORM\COMMON\src\SOC\&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #943634;"&gt;common_FS_V2&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;\MS\USBH\*&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-left: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;If OTG selection ”&lt;EM&gt;pure host&lt;/EM&gt;” from OTG Catalog group is made&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-left: .5in; text-indent: .5in;"&gt;&lt;STRONG style="color: #943634; font-family: 'Arial Narrow','sans-serif';"&gt;Hcd_hsotg.DLL &lt;/STRONG&gt;&lt;/P&gt;&lt;P style="margin-left: 1.0in; text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;– from …\PLATFORM\&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #943634;"&gt;iMC28-EVK&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;\SRC\drivers\USBH\HSOTG&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-left: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;It makes sense to compare the folders in &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #943634;"&gt;…\PLATFORM\COMMON\src\SOC\common_FS_V2\MS\USBH\&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt; to those in &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #00b050;"&gt;…\PUBLIC\COMMON\OAK\DRIVERS\USB\HCD\USB20\&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt; in order to detect if any QFEs from MSFT need to be imported to FSL’s branch; KB2516902 and KB980435 are involved.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-left: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;Likewise &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #943634;"&gt;…\PLATFORM\COMMON\src\SOC\common_FS_V2\MS\USBCLASS\USBDISK6&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt; should be compared to &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #00b050;"&gt;…\PUBLIC\COMMON\OAK\DRIVERS\USB\CLASS\Storage\Disk\SCSI2&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt; with regard to KB2635840 and KB980435, even if this binary is unlikely to be causing the damage.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-left: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;Once this source analysis is complete, and MSFT QFEs ported to FSL branch, a new trial run shall be executed.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-left: 58.5pt;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #383838;"&gt;=&amp;nbsp; =&amp;nbsp; =&amp;nbsp; =&amp;nbsp; =&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 45px;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial Narrow','sans-serif'; color: black;"&gt;One can only speculate that the fix could be as simple as adding "&lt;/SPAN&gt;&lt;STRONG style="color: #ff6600; font-size: 10.0pt; font-family: 'Courier New','serif';"&gt;volatile&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial Narrow','sans-serif'; color: black;"&gt;" qualifier to a variable in some USB structure which is used by two different threads yet considered never-changeable; alternatively it could be as complex as hunting single bits in the USB memory structures or USB Host Registers.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 45px;"&gt;&lt;STRONG style="color: black; font-size: 10.0pt; font-family: 'Arial Narrow','sans-serif';"&gt;At this time the best suggestion would be&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial Narrow','sans-serif'; color: black;"&gt;, to determine whether the fault is hardware or software related. The setup has USB probe attached which sniffs out the traffic. Further, it has been determined that the failure occurs at certain specific moment in the USB attachment state machine, and debug breakpoint could be inserted right there. Thereafter, if USB Host Controller runs properly, when the host is in break state in debugger no USB packet traffic would happen; if babble is observed on the wire while host is in break state then it is the hardware at fault. If, on the other hand, USB wires are calm while the target device is in break state, then the babble is definitely caused by bad software handling. As mentioned before, the odds are that SW is at fault and "&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial Narrow','sans-serif'; color: #ff6600;"&gt;volatility&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial Narrow','sans-serif'; color: black;"&gt;" may be applicable.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;Thanks!&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;A _jive_internal="true" data-containerid="-1" data-containertype="-1" data-content-finding="Community" data-objectid="209412" data-objecttype="3" href="https://community.nxp.com/people/adeneoengineeringteam" style="font-weight: inherit; font-style: inherit; font-family: inherit; color: #017bba;"&gt;Adeneo Engineering Team&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Mar 2016 01:55:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485551#M77572</guid>
      <dc:creator>adeneo-embedded</dc:creator>
      <dc:date>2016-03-03T01:55:11Z</dc:date>
    </item>
    <item>
      <title>Re: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485552#M77573</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your update. I have already been through porting the Microsoft QFEs from the public folder to the MS folder within the BSP. This was something I noticed some several years ago when I realized that the Freescale BSP had a clone of the Microsoft driver code and no QFEs would be applied. I painstakingly performed diff-merges on all of the cloned files. The only QFE I haven't ported is &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H4 class="sbody-h4" style="margin-top: 16px; margin-bottom: 16px; font-size: 1.25rem; font-weight: 300; color: #000000; font-family: 'Segoe UI', 'Segoe UI Web', 'Segoe UI Symbol', 'Helvetica Neue', 'BBAlpha Sans', 'S60 Sans', Arial, sans-serif;"&gt;KB980435 Issue 1&lt;/H4&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-family: 'Segoe UI', 'Segoe UI Web', 'Segoe UI Symbol', 'Helvetica Neue', 'BBAlpha Sans', 'S60 Sans', Arial, sans-serif;"&gt;When you use the suspend or the resume feature on a USB device, the Windows Embedded CE 6.0-based USB client driver is not notified of a remote wake-up event.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We are not using suspend/resume on windows CE. However I will look at porting this across just to be sure.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With regards to the driver this is on the host-only port.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Once the USB controller is in this state the random data bytes are produced for any USB device plugged into the port. I therefore believe that the host port is generating the sync (every ms) and then a random byte after it. A USB device should not send any data in response to the sync byte as it requires a PID after to instruct it what to do (IN/OUT/SETUP). So for all devices to have the same random data it is most likely that the USB host is generating it. It would be odd for a collection of devices to simultaneously start outputting a single byte of data following a sync byte.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In normal operation for the USB controller to be outputting data periodically it must have something scheduled to transfer, potentially with a corrupt pointer. I am wondering if printing out the transfer queue pointers/structures would help identify if the controller has a bad transfer queue set up?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;There is another errata that concerns met: Errata 2858 USB controller may access a wrong address for the dTD (endpoint transfer descriptor) and then hangs. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;I have tried using other SBURSTCFG modes to work around this with no luck but perhaps there is something in postponing freeing the last TD in case memory could be re-used while the controller is still pointing to it. It seems to make sense to me that if the memory is re-used before the controller has finished with it then the controller could be issued with bad pointers in its transfer queue and start babbling out data.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;The linux world has this 'postpone free last Td' fix. Have you implemented this for your versions of the Windows CE USB drivers in your BSPs? Could you advise on how to do this?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;Kind regards, Mark&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Mar 2016 09:03:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485552#M77573</guid>
      <dc:creator>markwilliams</dc:creator>
      <dc:date>2016-03-03T09:03:11Z</dc:date>
    </item>
    <item>
      <title>Re: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485553#M77574</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;Hi Mark,&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;The scenario is very clear now, just one element is missing: whether the target image has &lt;/SPAN&gt;&lt;STRONG style="color: #943634; font-family: 'Arial Narrow','sans-serif';"&gt;Hcd_hsotg.DLL &lt;/STRONG&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;in it.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;I was able to build two usable images from the iMX28-EVK BSP; I inspected BIB/REG files of both.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;Both possible HOST-only selections are outlined below; it would be interesting to find out if OTG has any impact at all.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;STRONG style=": ; color: #1f497d; text-decoration: underline; font-family: 'Arial Narrow','sans-serif';"&gt;(1) USB HOST only build without OTG&lt;/STRONG&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;One of the builds had just this selection from &lt;EM&gt;Freescale i.MX28 EVK: ARMV4I&lt;/EM&gt; Catalog:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;STRONG style="color: #4a442a; font-family: 'Arial Narrow','sans-serif';"&gt;&amp;nbsp; USB Devices&lt;/STRONG&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;STRONG style="color: #4a442a; font-family: 'Arial Narrow','sans-serif';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB Host Device&lt;/STRONG&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;STRONG&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #4a442a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #00b050;"&gt;X&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #4a442a;"&gt;] High Speed Host&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;It had just &lt;/SPAN&gt;&lt;STRONG style="color: #943634; background: lime; font-family: 'Arial Narrow','sans-serif';"&gt;Hcd_hsh1.DLL&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt; in it, and the BIB/Registry files were set accordingly.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;;------------------------------------------------------------------------------&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;; PURE HOST Registry&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;; @CESYSGEN IF CE_MODULES_USBHOST&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;; @CESYSGEN ENDIF CE_MODULES_USBHOST&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;; @CESYSGEN IF CE_MODULES_USBHOST&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\HCD_HSH1]&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;&amp;nbsp;&amp;nbsp; "Prefix"="HCD"&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "Dll"="&lt;SPAN style="background: lime;"&gt;hcd_hsh1.dll&lt;/SPAN&gt;"&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "Order"=dword:15&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "Class"=dword:0c&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "SubClass"=dword:03&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "ProgIF"=dword:20&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "MemBase"=dword:80090000&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "MemLen"=dword:00001000&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "irq"=dword:5C&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "HcdCapability"=dword:4 ;HCD_SUSPEND_ON_REQUEST&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;&amp;nbsp;&amp;nbsp; "OTGSupport"=dword:0&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "OTGGroup"="01"&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;; @CESYSGEN ENDIF CE_MODULES_USBHOST&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;; END OF PURE HOST Registry&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;;------------------------------------------------------------------------------&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;STRONG style=": ; color: #1f497d; text-decoration: underline; font-family: 'Arial Narrow','sans-serif';"&gt;(2) USB HOST build with pure host OTG&lt;/STRONG&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;The other build had a radio button from the OTG group also checked &lt;SPAN style="text-decoration: underline;"&gt;in addition&lt;/SPAN&gt; to the selection above:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;STRONG style="color: #4a442a; font-family: 'Arial Narrow','sans-serif';"&gt;&amp;nbsp; USB Devices&lt;/STRONG&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;STRONG style="color: #4a442a; font-family: 'Arial Narrow','sans-serif';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB High Speed OTG Device&lt;/STRONG&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;STRONG style="color: #4a442a; font-family: 'Arial Narrow','sans-serif';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&amp;nbsp; ) High Speed OTG Port Full OTG Function&lt;/STRONG&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;STRONG style="color: #4a442a; font-family: 'Arial Narrow','sans-serif';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&amp;nbsp; ) High Speed OTG Port Pure Client Function&lt;/STRONG&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;STRONG&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #4a442a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #00b050;"&gt;x&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #4a442a;"&gt;) High Speed OTG Port Pure Host Function&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;It had both &lt;/SPAN&gt;&lt;STRONG style="color: #943634; background: yellow; font-family: 'Arial Narrow','sans-serif';"&gt;Hcd_hsotg.DLL&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt; and &lt;/SPAN&gt;&lt;STRONG style="color: #943634; background: lime; font-family: 'Arial Narrow','sans-serif';"&gt;Hcd_hsh1.DLL&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt; in it, and the BIB/Registry files were set accordingly:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;;------------------------------------------------------------------------------&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;; PURE HOST Registry&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;; @CESYSGEN IF CE_MODULES_USBHOST&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\HCD_HSOTG]&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "Prefix"="HCD"&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "Dll"="&lt;SPAN style="background: yellow;"&gt;hcd_hsotg.dll&lt;/SPAN&gt;"&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "Order"=dword:15&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "Class"=dword:0c&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "SubClass"=dword:03&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "ProgIF"=dword:20&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "MemBase"=dword:80080000&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "MemLen"=dword:00001000&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "irq"=dword:5D&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "HcdCapability"=dword:4 ;HCD_SUSPEND_ON_REQUEST&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "OTGSupport"=dword:0&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "OTGGroup"="01"&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;; @CESYSGEN ENDIF CE_MODULES_USBHOST&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;; @CESYSGEN IF CE_MODULES_USBHOST&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\HCD_HSH1]&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "Prefix"="HCD"&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "Dll"="&lt;SPAN style="background: lime;"&gt;hcd_hsh1.dll&lt;/SPAN&gt;"&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "Order"=dword:15&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "Class"=dword:0c&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "SubClass"=dword:03&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "ProgIF"=dword:20&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "MemBase"=dword:80090000&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "MemLen"=dword:00001000&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "irq"=dword:5C&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "HcdCapability"=dword:4 ;HCD_SUSPEND_ON_REQUEST&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "OTGSupport"=dword:0&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt; "OTGGroup"="01"&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;; @CESYSGEN ENDIF CE_MODULES_USBHOST&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;; END OF PURE HOST Registry&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: 'Courier New','serif'; color: #707070;"&gt;;------------------------------------------------------------------------------&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;STRONG style="color: #1f497d; font-family: 'Arial Narrow','sans-serif';"&gt;The suspicion of runaway qTD is very reasonable&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;; however, time delay may be just workaround. Nothing like that has been ever implemented in MSFT or FSL USB port drivers.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;Keep in mind that there are at least three threads (in order of low-to-high priority) which have access to queues &amp;amp; transfers:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;&amp;nbsp; USBD calling thread;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;&amp;nbsp; USBD event callback thread;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;&amp;nbsp; HC IRQ handler.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;Each shared memory resource between these threads should be “&lt;/SPAN&gt;&lt;EM style="color: red; font-family: 'Arial Narrow','sans-serif';"&gt;volatile&lt;/EM&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;” qualified, to prevent optimizing compiler from caching a pointer or value on the local stack.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;Another technique which might be applicable (albeit USB descriptors should always be allocated in non-cached memory) could be, &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New','serif'; color: #1f497d;"&gt;CacheRangeFlush()&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt; call after release of queue descriptor.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;=&amp;nbsp; =&amp;nbsp; =&amp;nbsp; =&amp;nbsp; =&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;STRONG style="color: #1f497d; font-size: 12.0pt; font-family: 'Arial Narrow','sans-serif';"&gt;All-in-all, I cannot imagine finding the root cause of the problem without debugging.&lt;/STRONG&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;To confirm or deny the suspicion of time-related issue while freeing transfer descriptors, a debug session is a must.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;My recommendation would be to focus on the function &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New','serif'; color: #383838;"&gt;void CHub::AttachDevice()&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt; in &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New','serif'; color: #383838;"&gt;&amp;lt;WEC7root&amp;gt;\Platform\CommonSRC\SoC\Common_FSL_V2\MS\USBH\usb2com&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt; folder.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;Setting up &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New','serif'; color: #383838;"&gt;ZONE_ATTACH&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt; and &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New','serif'; color: #383838;"&gt;ATTACH_DETAIL&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt; to obtain traces during device attach process might also be helpful.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;Needless to mention, USB Analyzer should be connected all the time and live results should be monitored wile attachment state machine is executing.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;The state machine has only three stages before reaching DEVICE_DESCRIPTOR stages.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;STRONG&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;The stage immediately preceding &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: red;"&gt;DEVICE_CONFIG_STATUS_SCHEDULING_GET_DEVICE_DESCRIPTOR_TEST&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt; is no other but &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: red;"&gt;DEVICE_CONFIG_STATUS_RESET_AND_ENABLE_PORT&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P style="text-indent: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;Incomplete or improper reset of a port is very likely to have dire consequences, and this triage scenario may help:&lt;/SPAN&gt;&lt;/P&gt;&lt;OL style="list-style-type: decimal;"&gt;&lt;LI&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;1. &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;Build RETAIL image with optimizations disabled for USB2COM files. Both KITL and DEBUGGER must be enabled for the image.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;2. &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;Set breakpoints&lt;BR /&gt; at line 1700, DEVICE_CONFIG_STATUS_OPENING_ENDPOINT_PIPE case; and&lt;BR /&gt; at line 1775, DEVICE_CONFIG_STATUS_GET_DEVICE_DECRIPTOR_TEST case;&lt;BR /&gt; then let run until the failure happens; that will confirm babble begins after few attempts in-between these two stages;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;3. &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;Reboot target, disable breakpoint at line 1700 and set instead one&lt;BR /&gt; at line 1753, DEVICE_CONFIG_STATUS_RESET_AND_ENABLEPORT case;&lt;BR /&gt; pay specific attention to line 1765, &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New','serif'; color: #383838;"&gt;BSPHostDisconnect(TRUE);&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt; even put breakpoint there too, just to see if it gets invoked and when.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;4. &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;Let run and try to reproduce; see if babble start in-between the lastly set breakpoints.&lt;BR /&gt; If this happens, then the failure may only happen on a couple of code lines.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;5. &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;Alternatively, step into and through the code of &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New','serif'; color: #383838;"&gt;ResetAndEnablePort(port)&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt; function, and observe if this “slow-motion” effectively provides workaround.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-left: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;There is exactly one pipe – the control pipe 0 – which is employed in the process; all its descriptor allocations may be observed while at breakpoint and any corruption of pointers/descriptors can be detected.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-left: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;Before and after reset, a dump of HC port registers may also be useful for differential analysis.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-left: .5in;"&gt;&lt;/P&gt;&lt;P style="margin-left: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;Thanks,&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-left: .5in;"&gt;&lt;SPAN style="font-family: 'Arial Narrow','sans-serif'; color: #1f497d;"&gt;&lt;A _jive_internal="true" data-containerid="-1" data-containertype="-1" data-content-finding="Community" data-objectid="209412" data-objecttype="3" href="https://community.nxp.com/people/adeneoengineeringteam" style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #017bba;"&gt;Adeneo Engineering Team&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 04 Mar 2016 20:57:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485553#M77574</guid>
      <dc:creator>adeneo-embedded</dc:creator>
      <dc:date>2016-03-04T20:57:46Z</dc:date>
    </item>
    <item>
      <title>Re: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485554#M77575</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks adeneo for such a detailed response!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We are using the host-only port and the hcd_hsh1.dll. The usb memory sticks are being plugged into this port which is limited to full speed operation. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We have an internal micro usb connector hidden inside the product connected to the otg capable port for os loading. The driver for the otg port is included in the image but prevented from loading at start up. This was so that if we wanted to use the port our app could start the otg driver. However we do not use this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So only the hcd_hsh1.dll should be active.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From my analysis of the driver I agree this will be difficult to track without debugging. sadly the release product does not have an Ethernet port for connecting to VS. For debugging this I have been turning various debugmsg to retailmsg and printing out variables on the debug serial port - not ideal for this type of issue I know!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What I am unsure about is if the error state is created when on removal or when the device is next inserted. I.e. is the dequeue failing or setting up the first control transfer. I was hoping to print out the qH list on attach after the port reset and before the first control transfer (when it fails to attach it doesn't get past the first control transfer and I do not see any valid data on my USB analyser).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As there are no other usb ports or devices simultaneously connected the async queue should be in an empty state on attachment of a new device. It would be good to verify this on connect. This won't necessarily point me to the root cause though.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Annoyingly once in this state no other devices work. At the very least it would be good to ensure the async queue is fully reset on failure.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you again for your help. I will keep this updated and work on this next week.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 05 Mar 2016 20:35:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485554#M77575</guid>
      <dc:creator>markwilliams</dc:creator>
      <dc:date>2016-03-05T20:35:39Z</dc:date>
    </item>
    <item>
      <title>Re: USB Attach Failure i.MX28 Windows CE 6.0 Memory Stick</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485555#M77576</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have been continuing to debug but with no luck. I decided to search for WEC7 updates to do with USB. Although we use CE 6.0 I am sure the driver will have been used as a base in WEC7 so there may be fixes applied which haven't been released for CE 6.0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I found this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FIX: USB host cannot enumerate new device after unexpectedly removing an active USB device in Windows Embedded Compact 7&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Symptoms:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Assume that you remove an active USB device from Windows Embedded Compact 7 unexpectedly. Then, the USB host cannot enumerate new devices any longer.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cause:&lt;/P&gt;&lt;P&gt;The issue occurs because the USB host controller is constantly trying to finish a bulk transfer to the removed device. Because of this, further asynchronous transfers (Bulk, Configure) are not processed any longer. The USB host controller sets the Transfer Error Flag on the transfer, but neither stops the transfer nor triggers an interruption.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This seems to be fixed in Trans.cpp:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Trans.cpp&lt;/TD&gt;&lt;TD&gt;56,043&lt;/TD&gt;&lt;TD&gt;15-Oct-2014&lt;/TD&gt;&lt;TD&gt;09:08&lt;/TD&gt;&lt;TD&gt;Public\Common\Oak\Drivers\Usb\Hcd\Usb20\Ehci&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From the description above this describes my issue - I remove a USB device and sometimes end up with a locked up port sending data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To save me setting up a new VM to download compact 7 and ultimately this update, could Adeneo kindly do me a favour and have a look to see what changes were made in trans.cpp for KB3009114 and let me know (assuming you already have a machine with Compact 7 and the latest updates!).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you in advance! Hopefully the above issue also applies to CE 6.0 too and I can back port it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 Mar 2016 21:13:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/USB-Attach-Failure-i-MX28-Windows-CE-6-0-Memory-Stick/m-p/485555#M77576</guid>
      <dc:creator>markwilliams</dc:creator>
      <dc:date>2016-03-09T21:13:38Z</dc:date>
    </item>
  </channel>
</rss>

