지연 시간이 짧은 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. 컴퓨터가 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. 테스트 결과를 비교하여 지연 시간이 짧은 모드가 사용 설정되었을 때 핑 지연 시간 평균값이 감소하였는지 확인합니다.

기타 테스트

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