README.rst
1.. zephyr:code-sample:: usb-shell
2 :name: USB shell
3 :relevant-api: usbd_api
4
5 Use shell commands to interact with USB device stack.
6
7Overview
8********
9
10The sample enables new experimental USB device support and the shell function.
11It is primarily intended to aid in the development and testing of USB controller
12drivers and new USB support.
13
14Building and flashing
15*********************
16
17Assuming the board has a supported USB device controller, the example can be
18built like:
19
20.. zephyr-app-commands::
21 :zephyr-app: samples/subsys/usb/shell
22 :board: reel_board
23 :goals: flash
24 :compact:
25
26For the USB host functionality a supported host controller is required,
27currently it is only MAX3421E. The example can be built as follows:
28
29.. zephyr-app-commands::
30 :zephyr-app: samples/subsys/usb/shell
31 :board: nrf52840dk/nrf52840
32 :shield: sparkfun_max3421e
33 :gen-args: -DCONFIG_UHC_DRIVER=y -DCONFIG_USB_HOST_STACK=y
34 :goals: flash
35 :compact:
36
37It is theoretically possible to build USB support using virtual USB controllers
38for all platforms, eventually the devicetree overlay has to be adjusted slightly if
39the platform has already defined or not ``zephyr_uhc0`` or ``zephyr_udc0`` nodelabels.
40
41.. zephyr-app-commands::
42 :zephyr-app: samples/subsys/usb/shell
43 :board: nrf52840dk/nrf52840
44 :gen-args: -DEXTRA_CONF_FILE=virtual.conf -DDTC_OVERLAY_FILE=virtual.overlay
45 :goals: flash
46 :compact:
47
48Sample shell interaction
49========================
50
51.. code-block:: console
52
53 *** Booting Zephyr OS build v4.2.0-1588-g83f1bd7341de ***
54 uart:~$ usbd defcfg
55 dev: added default string descriptors
56 dev: register FS loopback_0
57 dev: register HS loopback_0
58 dev: USB initialized
59 uart:~$ usbh init
60 host: USB host initialized
61 uart:~$ usbh enable
62 host: USB host enabled
63 uart:~$ usbh bus resume
64 host: USB bus resumed
65 uart:~$ usbd enable
66 dev: USB enabled
67 [160:04:13.870,000] <inf> usb_loopback: Enable loopback_0
68 uart:~$ usbh device list
69 1
70 uart:~$ usbh device descriptor device 1
71 host: USB device with address 1
72 bLength 18
73 bDescriptorType 1
74 bcdUSB 200
75 bDeviceClass 239
76 bDeviceSubClass 2
77 bDeviceProtocol 1
78 bMaxPacketSize0 64
79 idVendor 2fe3
80 idProduct ffff
81 bcdDevice 402
82 iManufacturer 1
83 iProduct 2
84 iSerial 3
85 bNumConfigurations 1
86 uart:~$
87