The ultra-wideband (UWB) module, introduced in Android 13, contains a UWB stack above the HAL interface, which is based on the FiRa specification.
The UWB module provides the following benefits for device manufacturers:
- A complete Android native UWB stack available for UWB capable devices
- Improved quality and interoperability of UWB across the Android ecosystem
- Faster and more flexible support for new FiRa use cases and specification updates
Details
The following are details of the UWB module:
- Includes a complete UWB stack in AOSP in Android 13 that uses the UCI specification defined by FiRa as the HAL interface.
- Allows system apps to provision custom profiles.
- Includes a system API surface to allows system apps to use custom profiles in their ranging sessions.
- Includes infrastructure to expose RROs that can be used by device manufacturers to customize the behavior of the stack.
UWB stack architecture
The UWB stack consists of the UWB mainline module and the HAL implementation provided by a UWB chip vendor.
Figure 1. UWB stack architecture
Module boundary
The module code is in the following locations:
UWB Mainline Apex:
com.android.uwb
UWB API surface (Java)
- Code location:
packages/modules/Uwb/framework
- Process:
<bootclasspath>
- Code location:
UwbService (Java)
- Code location:
packages/modules/Uwb/service
- Process:
system_server
- Code location:
Uwb Native stack (C++/Rust)
- Code location:
external/uwb
- Process:
system_server
- Code location:
HAL interface and implementations (C++)
- Interface code location:
hardware/interfaces/uwb
- Implementation code location:
vendor/<vendor-name>/uwb
- Process:
<vendor defined>
- Interface code location:
Package format
The UWB module (com.google.android.uwb
) uses the
APEX format.
Dependencies
The UWB mainline module depends on the following:
- HAL implementation from a UWB chip vendor.
- Bluetooth stack for all OOB interactions.
- Secure element for all secure service interactions.
- Core framework for UWB runtime permission enforcement.