Speakers
George Chan
(Google - Android Security)
Neill Kapron
(Google)
Description
The Android USB stack was originally architected around the constraints of early smartphones. Initially designed primarily for phones with a single USB Micro-B device port, the stack lacks the modern API surface required for advanced USB applications. While incremental changes have been implemented out of necessity, a larger refactoring is required to better support modern USB features like Type-C and multiple-UDC topologies.
This presentation will highlight some of the limitations of the existing frameworks, provide an update on current projects, and solicit feedback on the new architecture plans and API surfaces.
Topics for Discussion:
- Userspace AOA via function_fs: Deprecating the out-of-tree kernel AOA driver and moving protocol handling entirely to userspace.
- Upstream Type-C Integration: Hooking the framework directly into the Type-C connector class, allowing applications to query cable capabilities and provide safe role-swap hints to the TCPC.
- Multi-UDC & Per-Port Configuration: Refactoring the framework to break the single-UDC assumption, allowing for independent per-port configurations on laptop-class devices.
- Modular Function Provider Patterns: Replacing legacy broadcast mechanisms with strict provider patterns and robust APIs with proper error handling.
Author
Neill Kapron
(Google)
Co-author
George Chan
(Google - Android Security)