Para oferecer suporte à API da camada de abstração de hardware (HAL) USB, os fabricantes de dispositivos precisam implementar a versão correspondente da HAL USB. Para usar a API USB HAL, é necessário um app com privilégios de sistema.
A HAL USB é compatível com a API de redefinição da porta USB, que exige a HAL USB v2.0 e está disponível para dispositivos com o Android 13 e versões mais recentes. Use essa API para redefinir a conexão USB com o host conectado.
Encontrar a HAL USB e as APIs dela
Os fabricantes de dispositivos precisam implementar a HAL USB para oferecer suporte às APIs.
- Para encontrar a implementação padrão da HAL USB, use os seguintes caminhos: - AIDL de versão (mais recente): - <aosp>/hardware/interfaces/usb/gadget/1.2/default/
- Para encontrar o arquivo de cabeçalho da interface de hardware, use o seguinte caminho: - AIDL de versão (mais recente): - <aosp>/hardware/interfaces/usb/gadget/1.2/IUsbGadget.hal
- Para encontrar as APIs, use o seguinte caminho para localizá-las no arquivo de cabeçalho AIDL. Esse caminho também é o ponto de entrada do framework do Android para a API: - android.hardware.usb:- <aosp>/core/java/android/hardware/usb
Implementar a HAL de USB
Para trabalhar com a API HAL USB, implemente:
- Versão correta da HAL de USB. Nenhuma implementação de interface do sistema é necessária. 
- HAL AIDL USB para a API USB Port Reset, redefinindo a conexão USB entre o dispositivo de destino e o host. 
Entender a arquitetura da API HAL USB
A API USB HAL é integrada ao pacote android.hardware.usb e usa a HAL USB para interagir com o dispositivo. Confira detalhes sobre a arquitetura da API na figura abaixo.
API USB Port Reset
A figura a seguir ilustra o fluxo de código da API USB Port Reset em um framework, incluindo a implementação da HAL USB.
 
 
Figura 1.1: exemplo de fluxo de código da API USB Port Reseat.
Validar sua implementação
Cada versão da HAL USB e a API correspondente estão associadas a um caso de teste no Vendor Test Suite (VTS).
API USB Port Reset
Para encontrar o caso de teste do VTS para a API USB Port Reset, acesse:
<aosp>/test/vts-testcase/hal/usb/gadget/V1_2/
O caso de teste do VTS para USB HAL v1.2 é um caso de teste do lado do host que pode ser usado para realizar essas ações.
- Para invocar a API USB Port Reset, use o comando - adb shell(- #svc usb resetUsbPort).
- Confirme se o dispositivo em teste (DUT) pode ser desconectado e reconectado. 
