AnsweredAssumed Answered

USB enumeration issue -- HOT!

Question asked by damienF on Mar 24, 2016
Latest reply on Apr 21, 2016 by damienF

Hello, not sure whether this is the right developer's thread but there you go anyway... in a nutshell we're working on a project involving a Blackfin-powered tethered device that communicates via the standard USB HID interface. The device is host-powered i.e. receives power from USB. The device has been deployed at multiple locations for 5+ years with no issues whatsoever. We recently discovered that some newer PCs hang at boot up when our device is permanently attached to (any of) the USB ports of the PC. If the device is physically disconnected while the PC is booting up and then re-attached to the PC then all is fine… but unfortunately this is not an acceptable workaround. We verified the issue is NOT related to insufficient power, and can be re-created at will even when the device is externally powered. We hooked up an USB analyzer and were able to trace the issue to the "Get Protocol" report; this is where the PC hangs. It seems like the USB stack is not responding properly to that packet and this 'upsets' the host PC. I'd be happy to share the trace if requested.

One step further, we've been single-stepping into the USB stack with an ADZS-USB-ICE emulator, and we suspect the 'HID_GetProtocol()' function might have a problem.

Is this a known issue?

Does anyone have a suggestion?

I pasted more details down below about the different versions being used in our project… is there a newer version of the stack we could use?

Thanks in advance!



More details about our setup:

- Blackfin model: ADSP-BF525

- Development environment: VisualDSP++ 5.0 Update 6

- Host PC causing the issue: HP EliteDesk 800 G2

- Using the ADI USB stack.

- The 'HID_GetProtocol()' function belongs to file ‘usb_hid_keyboard.c' and contains the following header information:


Copyright(c) 2006 Analog Devices, Inc. All Rights Reserved.

This software is proprietary and confidential.  By using this software you agree

to the terms of the associated Analog Devices License Agreement.

$RCSfile: adi_usb_bulkadi.c,v $

$Revision: 1.9 $

$Date: 2009/02/23 22:21:24 $

Description: Provides the custom ADI bulk class driver functionality.


- Note: we manufacture other similar devices that are based on other processors (e.g. ARM CortexM3) and use their vendor-provided USB stack and none of these has the issue described above. So far the issue is only with our Blackfin-powered devices.