Movial
STEricsson

Work-around for USB-Host issue

From Igloo Community
Jump to: navigation, search

Contents

Description of the limitations

The issue is encountered when trying to connect a high speed USB device to a snowball in Host mode:

  • Bus powered Mass storage does not correctly enumerate
  • Mass storage with self powered Hub shows some copy failure
  • Results of the USB enumeration:
Use case Result
Bus-powered HID OK
Bus-powered Hub KO
Bus-powered Mass storage KO
Self-powered Hub OK
HID + Self-powered Hub OK
Mass storage + Self-powered Hub OK


Reason is that USB data are corrupted: The USB bus contains spurious data which halt further activity.

Root cause

In HOST mode, the eye diagram is facing high distortion in high speed use cases. This appears with and without load on Vbus, whatever the AB8500 versions (V3.1, V 3.2, V3.3).

=> AB8500 and USB devices work correctly except that we face spurious data in high speed mode

These spurious data result from noise generation on Vbus:

  • The internal step-up of AB8500 requires a careful layout: VDD_USB_DIG / GND_USB_DIG and VDDPHY / GNDVBUS are very sensitive to noise and have a direct impact on data quality especially in High Speed mode.

=> The USB host issue results from a layout weakness in the current PCB

Workaround Proposal

For existing boards there are solutions to support high speed devices.

The complete workaround requires both a Software patch AND a Hardware add-on.

Software Patch

  • The AB8500 needs to be configured to use an external charge pump instead of the internal one when externally generating the Vbus voltage. A software patch is being proposed as a sysfs. It can be enabled at runtime with specific command line. You can find the patch here.
  • Command line to enable external Vbus:
$ echo 1 > /sys/devices/platform/musb-ux500.0/musb-hdrc/extvbus 
  • Command line to use the internal Vbus generation (default):
$ echo 0 > /sys/devices/platform/musb-ux500.0/musb-hdrc/extvbus

Hardware fix - Option 1

  • A possible solution is to provide a host add-on adapter acting as a A to Mini-A converter and supplying the EXT VBUS.
  • The 5v supply can be derived from the existing Snowball power management

USB-Host fix with adapter.jpg

Hardware fix - Option 2

  • An other solution would be to cut the USB cable and supply VBUS through the cable from an external power supply. Similar approaches using a Y cable may be considered too.

USB-Host fix with cable.jpg

How to use a USB Y cable for connecting High speed devices to snowball

Steps:

  • Connect the
    • Standard A power plug of the Y cable (plug with the shorter end) to the PC to draw the 5V from the PC
    • Standard A plug of the Y cable to the Mini A cable of snowball
    • Standard A receptacle of the Y cable to the device
  • Set the extvbus sysfs entry to ensure the 5V is drawn from the PC using
echo 1 > /sys/devices/soc0/musb-ux500.0/musb-hdrc/extvbus
  • Connect the MiniA cable to the snowball OTG USB port

Snowball ycable setup.jpg

To revert the change and draw 5V from snowball do

echo 0 > /sys/devices/soc0/musb-ux500.0/musb-hdrc/extvbus

OR reboot the board.

Personal tools