O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Simultaneidade de STA / STA de Wi-Fi

O Android 12 apresenta a simultaneidade Wi-Fi STA / STA, que permite que os dispositivos se conectem a duas redes Wi-Fi simultaneamente. Este recurso opcional ativa as seguintes funções.

  • Make-antes-break: O dispositivo estabelece uma ligação a uma nova rede Wi-Fi antes de quebrar a conexão existente. Isso resulta em transições mais suaves ao alternar entre redes Wi-Fi
  • Concurrent somente local e ligação à Internet: As Ligações dispositivo a uma rede local-only sem interromper conexão primária de cedência de internet do dispositivo.
  • Concurrent restrito e ligação à Internet: As Ligações dispositivo a uma rede restrita (disponível apenas para determinadas aplicações privilegiadas) sem interromper conexão primária de cedência de internet do dispositivo.

Esta página descreve o comportamento do dispositivo quando esse recurso está ativado e os detalhes de implementação para fabricantes e fornecedores de dispositivos.

Implementação

Os dispositivos devem suportar o seguinte para implementar a simultaneidade de STA / STA de Wi-Fi:

  • O chip ou firmware Wi-Fi deve oferecer suporte a duas conexões STA simultâneas. O firmware deve suportar todas as combinações de canal e banda para ambas as conexões. Para evitar problemas de desempenho, recomendamos o uso de um chip Wi-Fi compatível com 2x2 + 2x2 DBS.

  • O dispositivo deve suportar as seguintes APIs em fornecedor HAL versão 1.5

    • IWifiChip.setMultiStaPrimaryConnection()
    • IWifiChip.setMultiStaUseCase()
  • A combinação de interface HAL Wi-Fi deve ter duas interfaces STA simultâneos expostos usando um formato specifaction como [{STA} <= 2, ...] . Para mais informações, consulte Wi-Fi multi-interface de concorrência .

Se esses pré-requisitos forem atendidos, implemente a simultaneidade Wi-Fi STA / STA fazendo o seguinte:

  1. Ativar uma ou mais funções individualmente usando sobreposições de recursos de tempo de execução (desativado por padrão).

    • Make-antes-break: config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • Concurrent somente local e ligação à Internet: config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • Concurrent restrito e ligação à Internet: config_wifiMultiStaRestrictedConcurrencyEnabled
  2. Valide cada implementação conforme descrito em suas respectivas seções abaixo.

Para um melhor suporte Wi-Fi STA / STA concorrência, recomendamos que os quadros e aplicativos OEM personalizadas usar o NetworkCallback#onCapabilitiesChanged() método em vez de WifiManager#getConnectionInfo() , que retorna apenas WifiInfo para uma única rede e foi reprovado no Android 12 . para mais informações, consulte Wi-Fi de rede Request API para conectividade peer-to-peer .

Faça antes do intervalo

A função make-antes-break permite que os dispositivos para connnect a uma nova rede Wi-Fi, mantendo a conexão de rede Wi-Fi existente, apenas a desligar a partir da rede de idade, quando ele se conecta com sucesso para a nova rede Wi-Fi e tem acesso à internet.

O caso de uso make-before-break aborda os seguintes problemas no Android 11 ou inferior, onde o dispositivo deve se desconectar da rede Wi-Fi existente antes de se conectar a uma nova rede (break-before-make).

  • Ao se conectar a uma nova rede, o dispositivo pode descobrir que tem uma senha Wi-Fi incorreta salva ou que a nova rede não tem acesso à Internet. Isso força o dispositivo a voltar para a rede antiga, levando a uma quantidade significativa de tempo sem conectividade wi-fi.

  • A rede antiga é desconectada abruptamente, o que significa que todos os soquetes são fechados. Muitas vezes, os aplicativos não reagem bem a uma perda repentina de conectividade e isso pode fazer com que o usuário fique alguns segundos sem conexão com a Internet até que a nova conexão seja totalmente estabelecida.

  • A rede padrão muda duas vezes, da antiga rede Wi-Fi para o celular e, em seguida, do celular para a nova rede Wi-Fi. Isso faz com que os aplicativos reajam duas vezes às mudanças na rede. O dispositivo também deve passar um curto período de tempo usando dados do celular.

O fluxo make-before-break só é usado para comutadores automáticos de rede Wi-Fi iniciados pelo sistema operacional. Os switches de rede iniciados pelo usuário usam o fluxo break-before-make legado, em que a rede anterior é totalmente desconectada antes que a nova rede seja conectada. Em certos casos, o fluxo break-before-make é usado mesmo em comutadores automáticos iniciados pelo SO, por exemplo, ao alternar entre duas redes configuradas para usar o endereço MAC de fábrica.

Apps pode verificar se este caso de uso é suportado no dispositivo usando o WifiManager#isMakeBeforeBreakWifiSwitchingSupported() API.

Validando o make-before-break

Para validar sua implementação, acione uma troca automática de rede Wi-Fi (garantindo que uma rede com uma intensidade de sinal mais forte do que a rede atualmente conectada esteja disponível) e verifique se o dispositivo mantém a conexão existente enquanto se conecta à nova rede. Para visualizar o status de ambas as interfaces Wi-Fi e verificar se ambas estão conectadas, use o seguinte comando.

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

Se a nova rede não tiver conectividade, o dispositivo tenta se conectar à rede, enquanto mantém a conexão com a rede existente, e aborta a tentativa quando detecta que a nova rede não tem internet. O dispositivo então continua usando a conexão existente como a rede Wi-Fi primária.

Conexão simultânea apenas local e com a Internet

A função simultânea conexão local apenas e internet permite que os dispositivos para ligar a uma conexão somente local, tal como uma ligação a um dispositivo de Internet das coisas, em simultâneo com a rede de cedência de internet primário. Esta função melhora a experiência do utilizador quando directamente para ligar dispositivos IdC, tais como câmaras, o que é possível através da WifiNetworkSpecifier API adicionado em Android 10.

No Android 11 e inferior, os dispositivos se desconectam da rede Wi-Fi primária ao se conectar a um dispositivo IoT, resultando em uma perda de conectividade com a Internet (a menos que o dispositivo tenha outro tipo de transporte disponível, como dados de celular).

Apps pode verificar se esta função for suportada no dispositivo usando o WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported() API.

Para mais informações sobre alterações ao concorrente função local apenas e ligação à Internet no Android 12, consulte Wi-Fi de rede Request API para conectividade peer-to-peer .

Validando somente conexão local e internet

Para validar esta função, use os seguintes testes CTS e ACTS:

  • CTS: MultiStaConcurrencyWifiNetworkSpecifierTest
  • ACTS: WifiStaConcurrencyNetworkRequestTest

Restrita e conexão simultânea com a Internet

O concorrente restrita e função de ligação à Internet permite que o dispositivo conccurently conectar a uma rede Wi-Fi primária para o usuário e uma rede Wi-Fi restrita que só está disponível para selecionar aplicativos.

Apps pode verificar se esta função for suportada no dispositivo usando o WifiManager#isStaConcurrencyForRestrictedConnectionsSupported() API.

Para permitir que um dispositivo se conecte a redes Wi-Fi restritas secundárias, siga estas etapas:

  1. Adicionar sugestões de rede Wi-Fi com setOemPaid ou setOemPrivate conjunto para true.

  2. Em ConnectivityManager , apresentar uma NetworkRequest com os recursos correspondentes:

Quando o dispositivo detecta os resultados da verificação com uma rede que corresponde à sugestão paga do OEM ou privada do OEM, ele se conecta automaticamente como uma rede secundária.

Validando conexão simultânea restrita e internet

Para validar esta função, use os seguintes testes CTS e ACTS:

  • CTS: MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest
  • ACTS: WifiStaConcurrencyNetworkRequestTest

Diretrizes de chip de Wi-Fi do fornecedor

Para fornecedores de chips Wi-Fi, use as seguintes diretrizes para oferecer suporte à simultaneidade Wi-Fi STA / STA.

O chip Wi-Fi deve oferecer suporte a conexões STA simultâneas duplas. Isso significa que ele suporta o seguinte:

  • Cada interface STA possui um MAC exclusivo programável pela estrutura.
  • A interface STA secundária pode ser criada e destruída dinamicamente.
  • Cada STA pode ser conectada a um SSID diferente (na mesma banda ou em uma banda diferente).
  • Cada STA pode ser conectada ao mesmo SSID (na mesma banda ou em uma banda diferente). Os dois STAs nunca podem ser conectados ao mesmo BSSID.

Os recursos críticos devem operar por interface e devem estar disponíveis na interface primária. A seguir está uma lista desses recursos essenciais:

  • Roaming deve ser suportado em, pelo menos, a interface primária (conjunto usando IWifiChip.setMultiStaPrimaryConnection() ). Se o roaming for suportado em ambas as interfaces, as decisões em uma conexão não devem entrar em conflito com a segunda conexão simultânea. Por exemplo, uma interface não deve fazer roaming para o BSSID da outra conexão.

  • APF (e outros descarregamentos como ARP e NS) deve ser suportado em, pelo menos, a interface primária (conjunto usando IWifiChip.setMultiStaPrimaryConnection() ).

  • As estatísticas da camada de link devem operar por interface.

A seguir estão as implementações de chip Wi-Fi recomendadas para diferentes cenários de simultaneidade:

  • O chip Wi-Fi deve permitir que o quadro para chamar IWifiChip.setMultiStaUseCase() com uma das seguintes constantes para especificar a função atual:

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY : Especifica a função de fazer antes de-Break. A qualidade da conexão primária deve ser priorizada em relação à conexão secundária.
    • DUAL_STA_NON_TRANSIENT_UNBIASED : Especifica o local, apenas e conexão simultânea internet ou a função conexão com a internet restrito e simultâneos. A qualidade de ambas as conexões deve ser priorizada igualmente.
  • Porque dupla STAs simultâneos podem levar a modos MCC, SCC, e DBS de operação, a implementação do fornecedor deve escolher a melhor configuração de rádio quando a estrutura chama IWifiChip.setMultiStaUseCase() para indicar a função. A seguir estão as diretrizes gerais:

    • 2x2 + 2x2 DBS é o preferido, se disponível.
    • Evite 1x1 + 1x1 DBS, se possível, devido ao impacto excessivo na qualidade da conexão. Em vez disso, prefira MCC.
    • O ciclo de trabalho do MCC deve ser configurável pelo driver ou firmware para as várias funções. O quadro não define o ciclo de trabalho MCC diretamente, mas questiona essas informações usando StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent .
    • Se estiver usando MCC, recomendamos os seguintes ciclos de trabalho entre as conexões primária e secundária:

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY : 70% primário, secundário 30%.
      • DUAL_STA_NON_TRANSIENT_UNBIASED : 50% primário, 50% secundário.