Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

Wi-Fi STA/STA 동시성

Android 12에는 Wi-Fi STA/STA 동시성이 도입되어 기기가 두 개의 Wi-Fi 네트워크에 동시에 연결할 수 있습니다. 이 선택적 기능은 다음 기능을 활성화합니다.

  • Make-before-break : 장치가 기존 연결을 끊기 전에 새 Wi-Fi 네트워크에 연결합니다. 따라서 Wi-Fi 네트워크 간에 전환할 때 전환이 더 원활해집니다.
  • 동시 로컬 전용 및 인터넷 연결 : 디바이스의 기본 인터넷 제공 연결을 중단하지 않고 디바이스가 로컬 전용 네트워크에 연결됩니다.
  • 동시 제한 및 인터넷 연결 : 장치의 기본 인터넷 제공 연결을 중단하지 않고 장치가 제한된 네트워크(특정 권한 있는 앱에서만 사용 가능)에 연결됩니다.

이 페이지에서는 이 기능이 활성화된 경우의 장치 동작과 장치 제조업체 및 공급업체에 대한 구현 세부정보를 설명합니다.

구현

Wi-Fi STA/STA 동시성을 구현하려면 장치가 다음을 지원해야 합니다.

  • Wi-Fi 칩 또는 펌웨어는 2개의 동시 STA 연결을 지원해야 합니다. 펌웨어는 두 연결 모두에 대해 모든 채널 및 대역 조합을 지원해야 합니다. 성능 문제를 방지하려면 2x2+2x2 DBS 지원 Wi-Fi 칩을 사용하는 것이 좋습니다.

  • 기기는 공급업체 HAL 버전 1.5 에서 다음 API를 지원해야 합니다.

    • IWifiChip.setMultiStaPrimaryConnection()
    • IWifiChip.setMultiStaUseCase()
  • HAL Wi-Fi 인터페이스 조합에는 [{STA} <= 2, ...] 와 같은 사양 형식을 사용하여 노출되는 두 개의 동시 STA 인터페이스가 있어야 합니다. 자세한 내용은 Wi-Fi 다중 인터페이스 동시성 을 참조하십시오.

이러한 전제 조건이 충족되면 다음을 수행하여 Wi-Fi STA/STA 동시성을 구현합니다.

  1. 런타임 리소스 오버레이 를 사용하여 하나 이상의 기능을 개별적으로 활성화합니다(기본적으로 비활성화됨).

    • Make-before-break : config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • 동시 로컬 전용 및 인터넷 연결 : config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • 동시 제한 및 인터넷 연결 : config_wifiMultiStaRestrictedConcurrencyEnabled
  2. 아래의 해당 섹션에 설명된 대로 각 구현을 검증하십시오.

Wi-Fi STA/STA 동시성을 더 잘 지원하려면 OEM 맞춤 프레임워크 및 앱에서 WifiManager#getConnectionInfo() 대신 NetworkCallback#onCapabilitiesChanged() 메서드를 사용하는 것이 좋습니다. 이 메서드는 단일 네트워크에 대해서만 WifiInfo 를 반환하고 Android 12에서 더 이상 사용되지 않습니다. 자세한 내용 은 피어 투 피어 연결을 위한 Wi-Fi 네트워크 요청 API를 참조하세요.

휴식 전 만들기

Make -before-break 기능을 사용하면 장치가 기존 Wi-Fi 네트워크 연결을 유지하면서 새 Wi-Fi 네트워크에 연결할 수 있습니다. 새 Wi-Fi 네트워크에 성공적으로 연결되고 인터넷에 액세스할 수 있는 경우에만 이전 네트워크에서 연결을 끊습니다.

make-before-break 사용 사례는 Android 11 이하에서 다음과 같은 문제를 해결합니다. 여기서 기기는 새 네트워크에 연결하기 전에 기존 Wi-Fi 네트워크에서 연결을 해제해야 합니다(break-before-make).

  • 새 네트워크에 연결할 때 장치에 잘못된 Wi-Fi 암호가 저장되어 있거나 새 네트워크에 인터넷에 액세스할 수 없음을 발견할 수 있습니다. 이렇게 하면 장치가 이전 네트워크로 다시 전환되어 Wi-Fi 연결 없이 상당한 시간이 소요됩니다.

  • 이전 네트워크는 갑자기 연결이 끊어지므로 모든 소켓이 닫힙니다. 앱은 갑작스러운 연결 끊김에 잘 반응하지 않는 경우가 많으며 이로 인해 사용자는 새 연결이 완전히 설정될 때까지 몇 초 동안 인터넷 연결이 끊길 수 있습니다.

  • 기본 네트워크는 이전 Wi-Fi 네트워크에서 셀룰러로, 셀룰러에서 새 Wi-Fi 네트워크로 두 번 변경됩니다. 이로 인해 앱은 네트워크 변경 사항에 두 번 반응합니다. 또한 장치는 셀룰러 데이터를 사용하여 짧은 시간을 보내야 합니다.

make-before-break 흐름은 OS에서 시작한 자동 Wi-Fi 네트워크 스위치에만 사용됩니다. 사용자 시작 네트워크 스위치는 새 네트워크가 연결되기 전에 이전 네트워크의 연결이 완전히 끊어지는 기존 break-before-make 흐름을 사용합니다. 특정 경우에, 예를 들어 공장 MAC 주소를 사용하도록 구성된 두 네트워크 사이를 전환할 때 OS에 의해 시작된 자동 전환에서도 break-before-make 흐름이 사용됩니다.

앱은 WifiManager#isMakeBeforeBreakWifiSwitchingSupported() API를 사용하여 이 사용 사례가 기기에서 지원되는지 확인할 수 있습니다.

Make-before Break 확인

구현을 검증하려면 자동 Wi-Fi 네트워크 스위치를 트리거하고(현재 연결된 네트워크보다 신호 강도가 더 강한 네트워크를 사용할 수 있도록 하여) 새 네트워크에 연결하는 동안 장치가 기존 연결을 유지하는지 확인합니다. 두 Wi-Fi 인터페이스의 상태를 보고 둘 다 연결되었는지 확인하려면 다음 명령을 사용합니다.

adb shell wpa_cli -i wlan0 status ; echo ; adb shell wpa_cli -i wlan1 status

새 네트워크에 연결이 없는 경우 장치는 기존 네트워크와의 연결을 유지하면서 네트워크에 연결을 시도하고 새 네트워크에 인터넷이 없는 것을 감지하면 시도를 중단합니다. 그런 다음 장치는 기존 연결을 기본 Wi-Fi 네트워크로 계속 사용합니다.

동시 로컬 전용 및 인터넷 연결

로컬 전용 및 인터넷 동시 연결 기능을 통해 디바이스는 기본 인터넷 제공 네트워크와 동시에 IoT 디바이스 연결과 같은 로컬 전용 연결에 연결할 수 있습니다. 이 기능은 안드로이드 10에 추가된 WifiNetworkSpecifier API를 통해 카메라와 같은 IoT 기기에 직접 연결할 때 사용자 경험을 향상시킵니다.

Android 11 이하에서는 IoT 기기에 연결할 때 기기가 기본 Wi-Fi 네트워크에서 연결 해제되어 인터넷 연결이 끊어집니다(기기에 셀룰러 데이터와 같은 다른 전송 유형이 있는 경우 제외).

앱은 WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported() API를 사용하여 기기에서 이 기능이 지원되는지 확인할 수 있습니다.

Android 12의 동시 로컬 전용 및 인터넷 연결 기능에 대한 변경 사항에 대한 자세한 내용 은 피어 투 피어 연결을 위한 Wi-Fi 네트워크 요청 API를 참조하세요.

로컬 전용 및 인터넷 연결 확인

이 기능을 검증하려면 다음 CTS 및 ACTS 테스트를 사용하십시오.

  • CTS: MultiStaConcurrencyWifiNetworkSpecifierTest
  • ACTS: WifiStaConcurrencyNetworkRequestTest

동시 제한 및 인터넷 연결

동시 제한 및 인터넷 연결 기능을 통해 장치는 사용자의 기본 Wi-Fi 네트워크와 일부 앱에서만 사용할 수 있는 제한된 Wi-Fi 네트워크에 동시에 연결할 수 있습니다.

앱은 WifiManager#isStaConcurrencyForRestrictedConnectionsSupported() API를 사용하여 기기에서 이 기능이 지원되는지 확인할 수 있습니다.

장치가 제한된 보조 Wi-Fi 네트워크에 연결할 수 있도록 하려면 다음 단계를 따르세요.

  1. setOemPaid 또는 setOemPrivate 가 true로 설정된 Wi-Fi 네트워크 제안 을 추가합니다.

  2. ConnectivityManager 에서 해당 기능으로 NetworkRequest 를 제출합니다.

장치가 OEM 유료 또는 OEM 비공개 제안과 일치하는 네트워크로 스캔 결과를 감지하면 자동으로 보조 네트워크로 연결합니다.

동시 제한 및 인터넷 연결 확인

이 기능을 검증하려면 다음 CTS 및 ACTS 테스트를 사용하십시오.

  • CTS: MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest
  • ACTS: WifiStaConcurrencyNetworkRequestTest

공급업체 Wi-Fi 칩 지침

Wi-Fi 칩 공급업체의 경우 다음 지침을 사용하여 Wi-Fi STA/STA 동시성을 지원합니다.

Wi-Fi 칩은 이중 동시 STA 연결을 지원해야 합니다. 즉, 다음을 지원합니다.

  • 각 STA 인터페이스에는 프레임워크에서 프로그래밍할 수 있는 고유한 MAC이 있습니다.
  • 보조 STA 인터페이스는 동적으로 생성 및 소멸될 수 있습니다.
  • 각 STA는 다른 SSID(동일한 대역 내 또는 다른 대역 내)에 연결할 수 있습니다.
  • 각 STA는 동일한 SSID(동일한 대역 내 또는 다른 대역 내)에 연결할 수 있습니다. 두 STA는 동일한 BSSID에 연결 되어서 는 안 됩니다.

중요한 기능은 인터페이스별로 작동해야 하며 기본 인터페이스에서 사용할 수 있어야 합니다. 다음은 이러한 중요한 기능의 목록입니다.

  • 로밍은 최소한 기본 인터페이스에서 지원되어야 합니다( IWifiChip.setMultiStaPrimaryConnection() 을 사용하여 설정). 두 인터페이스에서 로밍이 지원되는 경우 한 연결에 대한 결정이 두 번째 동시 연결과 충돌하지 않아야 합니다. 예를 들어, 한 인터페이스는 다른 연결의 BSSID로 로밍해서는 안 됩니다.

  • APF(및 ARP 및 NS와 같은 기타 오프로드)는 최소한 기본 인터페이스( IWifiChip.setMultiStaPrimaryConnection() 를 사용하여 설정)에서 지원되어야 합니다.

  • 링크 계층 통계는 인터페이스별로 작동해야 합니다.

다음은 다양한 동시성 시나리오에 권장되는 Wi-Fi 칩 구현입니다.

  • Wi-Fi 칩은 프레임워크가 현재 기능을 지정하기 위해 다음 상수 중 하나를 사용하여 IWifiChip.setMultiStaUseCase() 를 호출할 수 있도록 허용해야 합니다.

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY : Make-Before-Break 기능을 지정합니다. 기본 연결의 품질이 보조 연결보다 우선되어야 합니다.
    • DUAL_STA_NON_TRANSIENT_UNBIASED : 동시 로컬 전용 및 인터넷 연결 또는 동시 제한 및 인터넷 연결 기능을 지정합니다. 두 연결의 품질은 동등하게 우선 순위가 지정되어야 합니다.
  • 이중 동시 STA는 MCC, SCC 및 DBS 작동 모드로 이어질 수 있으므로 공급업체 구현은 프레임워크가 기능을 나타내기 위해 IWifiChip.setMultiStaUseCase() 를 호출할 때 최상의 무선 구성을 선택해야 합니다. 다음은 일반적인 지침입니다.

    • 가능한 경우 2x2+2x2 DBS가 선호됩니다.
    • 연결 품질에 과도한 영향을 미치므로 가능한 1x1+1x1 DBS를 피하십시오. 대신 MCC를 선호하십시오.
    • MCC 듀티 사이클은 다양한 기능에 대해 드라이버 또는 펌웨어에서 구성할 수 있어야 합니다. 프레임워크는 MCC 듀티 사이클을 직접 설정하지 않지만 StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent 를 사용하여 이 정보를 쿼리합니다.
    • MCC를 사용하는 경우 기본 연결과 보조 연결 간에 다음 듀티 사이클을 권장합니다.

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY : 기본 70%, 보조 30%.
      • DUAL_STA_NON_TRANSIENT_UNBIASED : 기본 50%, 보조 50%.