![USB Location](/helios64/img/usb/usb_ports.jpg) ## USB Controller Types There are 3 types of USB controller available on RK3399 SoC. Each type has 2 controllers, so in total there are 6 USB controllers. Below a description of each controller type. ### Generic OHCI USB 1.1 Controller This controller is Host only controller that is compatible with USB 1.1. Supported speeds: - Full Speed (12 Mbps) - Low Speed (1.5 Mbps) ### Generic EHCI USB 2.0 Controller This controller is Host only controller that is compatible with USB 2.0. The controller shared port with *Generic OHCI USB 1.1 Controller* therefore any USB 1.1 device connected to the port, will be automatically routed to *Generic OHCI USB 1.1 Controller*. Supported speed: - High Speed (480 Mbps) ### Synopsys DesignWare USB 3.0 Dual-Role Device Controller This controller support On-The-Go / Dual Role which means it can be configured as Host or as Device. Supported speeds: - Super Speed (5 Gbps) - High Speed (480 Mbps) - Full Speed (12 Mbps) - Low Speed (1.5 Mbps) This controller is connected to RK3399 Type-C PHY. ## USB on Helios64 ![USB Connection](/helios64/img/usb/usb_diagram.png) * The first USB 3.0 Dual-Role Device Controller is connected to USB Type-C connector (J15) and configured as OTG with help of [FUSB302](https://www.onsemi.com/products/interfaces/usb-type-c/fusb302). * The second USB 3.0 Dual-Role Device Controller is connected to USB Hub 3.1 Gen 1 and configured as Host only. * One of EHCI Controller (and OHCI Controller) is connected to M.2 socket. ### Power Budget Each external USB port is protected by a Power Distribution switch with following current limit. | Port | Voltage | Maximum Current | Remarks | |------------|-------|------------------|---------| | USB 3.0 Upper Back Panel | 5V | 900 mA | | | USB 3.0 Lower Back Panel | 5V | 900 mA | | | USB 3.0 Front Panel | 5V | 900 mA | | | Type-C | 5V | 1200 mA | PDO source only | ## Type-C Functionality on Helios64 To minimize number of interfaces and cables, Helios64 combined 4 functions into the USB Type-C interface : * Serial Console * Display Port * Host Mode * Device Mode (aka DAS mode) ![USB Mux](/helios64/img/usb/usb_mux.png) Helios64 uses an High Speed multiplexer on USB 2.0 signal. By default the USB 2.0 signal is routed to USB Serial Console. The multiplexer can be override using [jumper P13](/helios64/jumper/#usb-consolerecovery-mode-p13) or by software via GPIO. ### Serial Console Serial Console of Helios64 is connected to FT232 USB Serial converter and the USB 2.0 signal of the FT232 is connected to USB 2.0 signals of USB Type-C Port. ### Display Port Using USB Type-C to DisplayPort cable, Helios64 can be connected to monitor to display Linux Desktop or others GUI applications. ![Type-c to DisplayPort](/helios64/img/usb/typec_dp.jpg) Using USB Type-C to HDMI cable/dongle, Helios64 can be connected to a TV and used as a media center. ![Type-c to HDMI female](/helios64/img/usb/typec_hdmi_dongle.jpg) *USB Type-C to HDMI dongle* ![Type-c to HDMI male](/helios64/img/usb/typec_hdmi.jpg) *USB Type-C to HDMI cable* !!! note - DisplayPort Alternate Mode is NOT supported on U-Boot. - USB Type-C to HDMI cable might not work if it used DisplayPort dual mode (DP++). ### Host Mode Using OTG cable (Type-C to Type A female) such as, ![Type-C to Type-A female](/helios64/img/usb/typec_typea_female.jpg) Helios64 can act as USB host and can be connected to various USB devices. ### Device Mode Using Type-C to Type A male cable such as, ![Type-C to Type-A male](/helios64/img/usb/typec_typea_male.jpg) Helios64 can be used as Direct Attached Storage (DAS) with the required software configuration. It can also be used as "USB eMMC reader/writer" during system recovery mode.