There are multiple USB ports on the HiKey board:
- One microUSB OTG port on the front edge of the board
- Two Type A USB 2.0 host ports on the front edge of the board
- One USB 2.0 host port on the high-speed expansion bus
Please read the HiKey Board Hardware User Guide for more information on the following hardware restrictions:
- The microUSB OTG port may be used (in host or slave mode) OR the Type A host ports may be used. They may not both be used simultaneously. If a cable is inserted into the OTG port then the Type A ports and the expansion bus port will be automatically disabled.
- For the microUSB OTG port, a single Low Speed (1.5Mbit/sec), Full Speed (12Mbit/sec) or High Speed (480Mbit/sec) device is supported.
- For the USB host ports, all attached USB devices MUST be one of the following two options:
- Low Speed (1.5Mbit/sec) and Full Speed (12Mbit/sec) devices, or
- High Speed devices (480Mbit/sec)
If a mixture of High Speed and Low/Full speed devices are attached at the same time, the devices will not operate correctly. This also applies if any kinds of hubs are attached to the ports.
The reason for this limitation is that USB 2.0 split transfers are not supported by the mobile-targeted SoC hardware USB implementation.
In order to address this limitation the USB ports are by default configured into Low/Full speed operation.
In the AOSP build, a small application is provided (usb-speed-switch) to change between High Speed and Full Speed operation.
Switch USB ports speed modes
You can refer to https://github.com/96boards/usb_speed_switch to obtain more detailed descriptions.
In Debian, the usb_speed utility (use -h option for help) is provided to switch the USB ports between modes.
A utility is provided in /home/linaro/bin directory to change the configuration of the host (Type A and Expansion) and OTG USB ports. By default, these ports operate in Low/Full speed modes (1.5/12 Mbits/s) to support mouse/keyboard devices. Other USB devices such as network or storage dongles/sticks will be limited to Full speed mode. By using the usb_speed utility, it is possible to support High speed devices (480 Mbits/s) as long as they are not mixed with Low/Full speed devices.
For more information on using the utility, we can do the following command:
sudo usb_speed -h