.. _usb_device_stack_next: New experimental USB device support ################################### Overview ******** The new USB device support is experimental. It consists of :ref:`udc_api` and :ref:`usbd_api`. The new device stack brings support for multiple device controllers, support for multiple configurations, and dynamic registration of class instances to a configuration at runtime. The stack also provides a specific class API that should be used to implement the functions (classes). It will replace :ref:`usb_device_stack`. If you would like to play around with the new device support, or the new USB support in general, please try :zephyr:code-sample:`usb-shell` sample. The sample is mainly to help test the capabilities of the stack and correct implementation of the USB controller drivers. Supported USB classes ********************* Bluetooth HCI USB transport layer ================================= See :ref:`bluetooth-hci-usb-sample` sample for reference. To build the sample for the new device support, set the configuration ``-DCONF_FILE=usbd_next_prj.conf`` either directly or via ``west``. CDC ACM ======= CDC ACM implementation has support for multiple instances. Description from :ref:`usb_device_cdc_acm` also applies to the new implementation. See :zephyr:code-sample:`usb-cdc-acm` sample for reference. To build the sample for the new device support, set the configuration ``-DCONF_FILE=usbd_next_prj.conf`` either directly or via ``west``. Mass Storage Class ================== See :zephyr:code-sample:`usb-mass` sample for reference. To build the sample for the new device support, set the configuration ``-DCONF_FILE=usbd_next_prj.conf`` either directly or via ``west``. Networking ========== At the moment only CDC ECM class is implemented and has support for multiple instances. It provides a virtual Ethernet connection between the remote (USB host) and Zephyr network support. See :zephyr:code-sample:`zperf` for reference. To build the sample for the new device support, set the configuration overlay file ``-DDEXTRA_CONF_FILE=overlay-usbd_next_ecm.conf`` and devicetree overlay file ``-DDTC_OVERLAY_FILE="usbd_next_ecm.overlay`` either directly or via ``west``.