Skip to content

Planned USB host support work #95661

@jfischer-no

Description

@jfischer-no

Important
This is a meta issue for maintainers and developers of relevant subsystems to track progress on USB support. Please do not ask general questions or make comments about USB support here. Please do not start a metaphysical discussion about the reasons for the existence of the host stack.

Problem Description

Follow up on #42066, focusing on host support. For the USB device support see #95649.

Support for USB hosts in Zephyr is ramping up, but it will take some time to reach the same level as support for devices. It is not ready for productive use. We cannot say when it will be ready, nor can we specify an exact date for the implementation of feature XYZ. Please note that all APIs are experimental and may change at any time. Bear this in mind when working on new drivers or class drivers.

There are basic tests for both USB device and host support, which run in CI on the PR basis. We also have experimental USB/IP support, which is primarily used for exporting USB devices. There should not be any regressions, as these would also affect users of the USB device stack.

Drivers

If you start working on the new driver, please use MAX3421E or virtual driver as a reference point and template for the new driver. Please follow the coding style guidelines and keep the style consistent with the USB drivers/subsystem code. Please note that clangformat does not format code according to the coding style guidelines, so you will need to fix it afterwards.

  • New driver for controller foobar ()

Stack

The stack is in an experimental, early-development state. Ongoing work:

USB Class/Function driver

There is no support for any classes or functions in the Zephyr tree. However, there is ongoing work and draft PRs on some functions. There are also no examples available yet that can be used as templates. The plan is to first add a basic test function as a counterpart to the device's loopback function, which could then be used for testing and as a template for the new class driver implementations. If you want to start work on the new class/function driver, this is the right issue to discuss. Please follow the coding style guidelines and keep the style consistent with the USB drivers/subsystem code. Please note that clangformat does not format code according to the coding style guidelines, so you will need to fix it afterwards.

Metadata

Metadata

Labels

MetaA collection of features, enhancements or bugsarea: USBUniversal Serial Bus

Type

Projects

Status

4.4

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions