From Android 13, Android includes a default framework implementation for ultra-wideband (UWB) radio technology, a technology that enables highly secure, precise ranging between supported devices. The platform AOSP UWB stack is available as an optional module for device manufacturers. For more details on the module, see Module: UWB.
Architecture
The UWB stack consists of the UWB mainline module and the HAL implementation provided by a UWB chip vendor as shown in Figure 1.
Figure 1. UWB stack architecture
AOSP stack
The AOSP UWB stack, packaged as an optional module, com.google.android.uwb
, contains the following components:
- UWB platform API surface
- Code location:
packages/modules/Uwb/framework
- Code location:
- Support library
- Code location:
packages/modules/Uwb/service/support_lib
- Code location:
- UwbService layer and Common Service Management Layer (CSML) defined components defined by FiRa
- Code location:
packages/modules/Uwb/service
- Code location:
- Rust native UCI layer
- Code location:
external/uwb
- Code location:
- UWB HAL interface based on the UWB command interface (UCI) specification defined by FiRa
- Code location:
hardware/interfaces/uwb
- Code location:
Vendor components
The vendor stack includes a UWB HAL vendor implementation, UWB driver, and a UWB device.
API surfaces for UWB
The UWB stack includes API surfaces for system apps and third-party apps.
System apps
Device manufacturers use the android.uwb.UwbManager
system API surface to allow low-level access for system apps. To use this API surface, system apps must use the support library (packages/modules/Uwb/service/support_lib
).
Third-party apps
Third-party apps use the Jetpack UWB public API surface, androidx.core.uwb
. For more information, see Ultra-wide band communication.
Verification
To verify your implementation of UWB, ensure that your device passes the CTS tests located under /cts/tests/uwb
.