지연 시간이 적은 Wi-Fi 모드

Android 10은 Wi-Fi 잠금 API를 확장하여 지연 시간에 민감한 앱이 Wi-Fi를 지연 시간이 짧은 모드로 구성할 수 있도록 합니다. 지연 시간이 짧은 모드는 다음 조건이 모두 충족될 때 시작됩니다.

  • Wi-Fi가 사용 설정되었으며 기기가 인터넷에 액세스할 수 있습니다.
  • 앱이 Wi-Fi 잠금을 생성하고 획득했으며 포그라운드에서 실행 중입니다.
  • 화면이 켜져 있습니다.

기기에서 지연 시간이 짧은 모드를 지원할 수 있으려면 기기 제조업체에서 WLAN 드라이버 및 공급업체 HAL을 업데이트해야 합니다. 지연 시간이 짧은 모드에서는 절전 모드(IEEE 802.11 표준에서는 잠자기 상태라고도 함)가 프레임워크에 의해 명시적으로 사용 중지됩니다. 드라이버 및 펌웨어 레이어의 검색 및 로밍 매개변수를 최적화하면 Wi-Fi 지연 시간을 더욱 단축할 수 있습니다. 정확한 최적화는 구현에 따라 다릅니다.

Android에는 지연 시간이 짧은 모드와 별도로, 고성능 Wi-Fi 잠금 모드(API 수준 12에서 도입됨)가 있습니다.

구현

Wi-Fi 저지연 모드 기능을 지원하려면 다음 IWifiChip 함수에 대한 구현을 제공하세요.

AIDL HAL:

  • int getFeatureSet()
  • void setLatencyMode(in LatencyMode mode)

HIDL HAL(1.3 이상):

  • getCapabilities_1_3() generates (WifiStatus status, bitfield<ChipCapabilityMask> capabilities)
  • setLatencyMode(LatencyMode mode) generates (WifiStatus status)

참조 구현은 다음 함수가 포함된 wifi_legacy_hal.cpp에서 찾을 수 있습니다.

  • wifi_error wifi_get_supported_feature_set(wifi_interface_handle iface, feature_set *set)
  • wifi_error wifi_set_latency_mode(wifi_interface_handle handle, wifi_latency_mode mode)

지연 시간이 짧은 모드에서는 절전 모드가 Android 프레임워크의 WifiLockManager에 의해 명시적으로 사용 중지됩니다. 이 기능을 지원하려면 WLAN 드라이버에서 절전 모드를 사용 설정 및 사용 중지할 수 있도록 NL80211 명령어 NL80211_CMD_SET_POWER_SAVE를 지원해야 합니다. Wi-Fi 절전 모드가 사용 중지될 때 Wi-Fi 시스템은 켜진 상태로 유지되고 최소한의 지연으로 패킷을 보내거나 받을 준비가 되어 있어야 합니다.

기능 사용 중지

저지연 모드 기능을 사용 중지하려면 AIDL HAL의 경우 getFeatureSet(), HIDL HAL의 경우 getCapabilities_1_3()의 기본 코드를 capabilities & SET_LATENCY_MODE = 0와 같이 업데이트합니다. 여기서 SET_LATENCY_MODEIWifiChip AIDL 또는 HIDL에 정의되어 있습니다. 이 기능을 사용 중지하면 프레임워크는 저지연 모드가 활성 상태일 때만 절전 모드를 사용 중지합니다.

유효성 검사

지연 시간이 짧은 모드가 사용 설정되었을 때 작동하는지 테스트하려면 다음과 같은 자동화된 테스트 및 수동 핑 지연 시간 테스트를 실행하세요.

자동 테스트

다음 공급업체 테스트 모음 (VTS) 및 호환성 테스트 모음 (CTS) 테스트를 실행하여 자동화된 테스트를 실행합니다.

수동 테스트

필수 테스트 장비 및 환경

수동 테스트에는 다음 설정이 필요합니다.

  • Wi-Fi 액세스 포인트(AP)
  • 테스트 대상 기기 (DUT) 스마트폰 및 테스트 컴퓨터
    • DUT가 Wi-Fi를 통해 액세스 포인트에 연결되어 있어야 합니다.
    • 테스트 컴퓨터는 Wi-Fi 또는 이더넷을 통해 액세스 포인트에 연결되어 있어야 합니다.
    • 테스트 컴퓨터는 USB를 통해 DUT에 연결되어 있어야 합니다.
  1. 지연 시간이 짧은 모드를 사용 설정합니다.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. 컴퓨터가 Android 디버그 브리지 (ADB)를 통해 휴대전화와 연결되어 있는지 확인합니다. ADB 셸에서 1초 간격으로 3시간 동안 게이트웨이를 지속적으로 핑합니다.

  3. 테스트 출력을 텍스트 파일로 저장하고 스프레드시트 또는 Python 스크립트를 사용하여 핑 지연 시간 테스트 결과의 히스토그램을 생성합니다.

  4. 지연 시간 모드가 사용 중지된 상태에서 1~3단계를 반복합니다.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. 테스트 결과를 비교하여 지연 시간이 짧은 모드가 사용 설정되었을 때 핑 지연 시간 평균값이 감소하였는지 확인합니다.

  1. 지연 시간이 짧은 모드를 사용 설정합니다.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. 테스트 컴퓨터의 명령줄에서 1초 간격으로 3시간 동안 스마트폰의 IP 주소를 지속적으로 핑합니다.

  3. 테스트 출력을 텍스트 파일로 저장하고 스프레드시트 또는 Python 스크립트를 사용하여 핑 지연 시간 테스트 결과의 히스토그램을 생성합니다.

  4. 지연 시간 모드가 사용 중지된 상태에서 1~3단계를 반복합니다.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. 테스트 결과를 비교하여 지연 시간이 짧은 모드가 사용 설정되었을 때 핑 지연 시간 평균값이 감소하였는지 확인합니다.

기타 테스트

다른 환경에서 위의 테스트를 반복합니다. 예를 들어 집이나 사무실에서 테스트를 반복합니다.