README.md
1# USB Peripheral Test
2
3## Overview
4
5This directory contains a test for USB peripheral role functionality in Zircon.
6It consists of two parts - a Zircon USB function driver and a Linux host test program.
7The host test (called usb-peripheral-test) tests control requests in both the IN and OUT
8direction with various payload sizes, receiving data on an interrupt endpoint and finally
9bulk transfers.
10
11## How to Run
12
13First of all, this test only works with devices that implement USB peripheral role functionality.
14The [hikey960 board](../../../../docs/targets/hikey960.md) is one of those devices, so here we
15assume you are using a hikey960 board. To run the test, follow these steps:
16
171. Connect the Hikey USB-C port to your Linux desktop
18
192. In the Hikey's shell, switch to USB peripheral mode and enable the test driver:
20```
21usbctl mode peripheral
22usbctl peripheral reset
23usbctl peripheral init-test
24```
25
263. Run the host test:
27
28```
29./build-arm64/host_tests/usb-peripheral-test
30```
31
32If the test succeeds, you should see something like:
33```
34CASE usb_peripheral_tests [STARTED]
35 control_interrupt_test_8 [RUNNING] [PASSED] (36 ms)
36 control_interrupt_test_64 [RUNNING] [PASSED] (31 ms)
37 control_interrupt_test_100 [RUNNING] [PASSED] (31 ms)
38 control_interrupt_test_256 [RUNNING] [PASSED] (31 ms)
39 control_interrupt_test_1000 [RUNNING] [PASSED] (31 ms)
40 bulk_test [RUNNING] [PASSED] (19 ms)
41CASE usb_peripheral_tests [PASSED]
42```
43
44## TODO
45
46Future versions of this test may include:
47* isochronous transfers
48* setting and clearing stall conditions
49