Android 12'de kullanıma sunulan Wi-Fi/hücresel birlikte var olma kanalından kaçınma özelliği, hücresel kanallardan veya hücresel kanallara müdahale olabileceği durumlarda güvenli olmayan Wi-Fi kanallarını tanımlar ve kullanmaktan kaçınır. STA, SoftAp, Wi-Fi Direct (P2P), Wi-Fi Aware (NAN) gibi arayüzler buna dahildir.
Bu sayfada aşağıdaki konular ele alınmaktadır:
- Hücresel modemin Android çerçevesine bildirmesi gereken bilgiler
- Kablosuz ağ çerçevesinin, kaçınılması gereken kablosuz ağ kanallarını hesaplamak için kullandığı algoritmalar
- Cihaz üreticilerinin kablosuz ağ çerçevesi için sağlaması gereken yapılandırma tabloları
- Kanaldan kaçınma özelliğiyle ilgili sistem API'leri, yapılandırmalar ve HAL API'leri
- Kanaldan kaçınma işlemini yönetmeye yönelik çerçeve davranışı
- Kanal önlemeyi ele almak için çip satıcısı davranışı
- Kanal engelleme ile ilgili uygulama ayrıntıları
- Kanaldan kaçınma davranışını doğrulama testleri
Arka plan
LTE, 5G NR ve Lisanslı Destekli Erişim (LAA) gibi hücresel teknolojilere sahip cihazlarda, kullanılan hücresel kanallar, kullanılan kablosuz kanalına müdahale edebilir. Bu durum, hücresel ve kablosuz kanallar kısa frekans aralığında (komşu kanallar) olduğunda veya harmonik ve intermodülasyon girişimi olduğunda meydana gelir.
Bu tür parazitler, bir anten iletim yaparken başka bir antenin aynı anda alım yapması durumunda sorun oluşturur. Bu durumda, iletim anteni, alıcı anteni doldurarak alım kalitesini etkiler.
Bu belgede, parazit oluşturan vericiden saldırgan, parazit yaşayan alıcıdan ise mağdur olarak bahsedilir. Saldırgan veya kurban olan Wi-Fi kanalı, güvenli olmayan kanal olarak adlandırılır.
Kablosuz/hücresel birlikte var olma kanalından kaçınma özelliği, kanal kaçınma için tutarlı bir yaklaşım sunarak kablosuz çerçevesinden farklılaşan tescilli kod ihtiyacını azaltır. Ayrıca bu özellik, cihaz üreticilerinin özelliği yapılandırmasına, etkinleştirmesine, devre dışı bırakmasına ve geçersiz kılmasına olanak tanır.
Bu özellik, kablosuz kanallarını kontrol ederek kanal çakışmasını önler. Kablosuz kanal önleme şeması, dört soyut adımdan oluşan bir dizi olarak tanımlanabilir:
- Modem raporları hücresel frekansta değişiklik olduğunu bildiriyor
- Birlikte var olma önleme algoritması, güvenli olmayan kablosuz kanalları hesaplar
- Birlikte var olma önleme algoritması, kablosuz hizmetini bilgilendirir
- Çerçeve veya sürücü uygun kablosuz işlemi gerçekleştirir.
1. şekil. Kanaldan kaçınma planı
Hücresel frekanstaki değişikliği bildirme
Telefon hizmeti, şu anda kullanılan hücresel kanalları bildirir. Çalışan hücresel frekans değiştiğinde modem, bu bilgiyi IRadio::PhysicalChannelConfig
üzerinden telefon hizmetine bildirir.
Bu bilgiler arasında lisanslı destekli erişim (LAA) ve taşıyıcı toplama (CA) göstergeleri yer alır.
Android 12'den itibaren, 1.6 IRadio::PhysicalChannelConfig
içindeki aşağıdaki alanlar, modemin doldurması gereken birlikte var olma formülleri için gerekli bilgileri sağlar.
struct PhysicalChannelConfig {
/** Connection status for cell. Valid values are PRIMARY_SERVING and SECONDARY_SERVING */
CellConnectionStatus status;
/** The radio technology for this physical channel */
RadioTechnology rat;
/** Downlink Absolute Radio Frequency Channel Number */
int32_t channelNumberDownlink;
/** Uplink Absolute Radio Frequency Channel Number */
int32_t channelNumberUplink;
/** Downlink cell bandwidth, in kHz */
int32_t cellBandwidthDownlink;hte
/** Uplink cell bandwidth, in kHz */
int32_t cellBandwidthUplink;
}
Güvenli olmayan kablosuz kanalları hesaplama
Modem, hücresel frekansta bir değişiklik olduğunu bildirdiğinde, birlikte var olma kanalı algoritması hücresel ve kablosuz ağ kanalları arasındaki girişimi hesaplar ve hangi kablosuz ağ kanallarının güvenli olmadığını belirler.
Farklı formüller gerektiren birden fazla parazit türü vardır: komşu ve harmonik/intermodülasyon. Cihazlar arasındaki anten ve düzen farklılıkları nedeniyle her cihazın komşu ve harmonik/intermodülasyon girişimi kalıpları farklıdır. Bunu hesaba katmak için cihaz üreticileri, iki tür parazit için parametreleri genel formüllere yerleştirmek üzere bir arama tablosu sağlamalıdır. Bu parametreler, hücre bandı başına tanımlanır ve etkin hücre kanallarının bantları tarafından referans alınır.
Arama tablosunda maksimum güç sınırı tanımlanabilir. Maksimum güç sınırı tanımlanmışsa güvenli olmayan bir kanal, sağlanan güç sınırı ile iletim yapar. Güç sınırı yoksa kanal tam güçte iletim yapar.
Genel olarak, kanal önleme özelliği, performansı optimize etmek için güvenli olmayan kablosuz kanallardan kaçınmak üzere en iyi çabayı gösterir. Ancak belirli durumlarda (ör. operatör şartları nedeniyle) belirli arayüzlerin belirli hücresel bantlar için güvenli olmayan kanallardan kaçınması zorunludur. Bu gibi durumlarda, zorunlu kısıtlamalar, Wi-Fi Direct (P2P), SoftAp ve Wi-Fi Aware (NAN) gibi belirli kanalların yasaklanıp yasaklanmayacağıyla ilgili değerleri içeren bir bit maskesi olarak gösterilir. Güvenli olmayan bir kanal, bu kanalın tüm kullanım alanlarında kullanılmaması yönünde bir öneri olarak değerlendirilirken zorunlu kısıtlamalar, belirli kullanım alanlarında zorunlu olarak kaçınılması gereken durumları işaretler.
2,4 GHz veya 5 GHz bandının her kanalı güvenli değil olarak işaretlenirse arama tablosu, güvenli olmayan hücre bandı başına varsayılan 2,4 GHz kanalı veya varsayılan 5 GHz kanalı en güvenli seçenek olarak tanımlayabilir. Bu varsayılan kanallar, grubun geri kalanı güvenli olmayan olarak raporlandığında güvenli olmayan kanallar olarak raporlanmaz.
Geçersiz kılma listesi
Formüle dayalı yaklaşım, girişimin bant genişliğine büyük ölçüde bağlı olduğu durumlarda (bu nedenle daha büyük bant genişliğine sahip kanallar güvenli olmayabilir ancak daha küçük bant genişliğine sahip kanallar güvenli olabilir) sınırlıdır. LAA gibi durumlarda hesaplamaları atlayıp belirtilen güvenli olmayan kanallar listesini kullanmak faydalıdır.
Bunu yapmak için belirli girişlerin arama tablosunda güvenli olmayan kanalların geçersiz kılma listesini belirtebilirsiniz. Tablo girişindeki geçersiz kılma listesi, söz konusu hücre kanalı için hesaplamanın atlandığını ve eşleşen hücre kanalına ait güvenli olmayan kablosuz kanalların geçersiz kılma listesi tarafından belirtildiğini gösterir.
Bant genişliğinin önemli olduğu durumlarda, geçersiz kılma listesinde belirli bant genişliklerine sahip belirli kanalları belirterek belirli bant genişliklerinden seçici olarak kaçınabilirsiniz. Bunun nedeni, her kablosuz kanal numarasının belirli bir bant genişliğine karşılık gelmesidir.
Geçersiz kılma listesi, her bir kablosuz bant için kanal numaraları veya önceden tanımlanmış kategori anahtar kelimelerinin listesiyle gösterilir:
2g kategorileri:
all
(2,4 GHz bandının tamamı)
5G kategorileri:
all
(5 GHz bandının tamamı)20mhz
(5 GHz 20 MHz kanallar)40mhz
(5 GHz 40 MHz kanallar)80mhz
(5 GHz 80 MHz kanallar)160mhz
(5 GHz 160 MHz kanallar)
Komşu kanal paraziti
Komşu kanal parazitini belirlemek için birlikte var olma önleme algoritması, saldırgan ve kurban kanal arasındaki ΔF mesafesinin belirtilen eşik değerinin altına düşmemesini sağlar.
Şekil 2. Saldırgan ve mağdur kanal arasındaki mesafe
Eşik, cihazın fiziksel yapılandırmasına ve arama tablosu girişinde her bir müdahale eden bant için sağlanan eşik değerine göre belirlenir. Girişime neden olmadığı düşünülen bantların tablo girişi yoktur ve güvenli olmayan kanalların hesaplanması gerekmez (çoğu zaman).
Komşu müdahale parametreleri
wifiVictimMhz
: Kablosuz bağlantıdan etkilenen bir cihaz için MHz cinsinden mesafe eşiği (hücreden yukarı bağlantı)cellVictimMhz
: Bir hücre kurbanı için MHz mesafe eşiği (hücre downlink'i)
Algoritma, her etkin hücre kanalı için aşağıdaki gibi davranır:
- Kanalın bant genişliği için bir arama tablosu girişi bulmaya çalışır. Tablo girişi bulunamazsa bu hücre kanalı için güvenli olmayan kanal içermeyen sonuçlar döndürülür.
- Hücresel banda göre, hangi kablosuz bandın risk altında olduğunu ve parazitin bandın hangi tarafından geldiğini (örneğin, daha düşük 2,4 GHz kanalları, daha yüksek 2,4 GHz kanalları, daha düşük 5 GHz kanalları) belirler.
wifiVictimMhz
mevcutsa ve hücresel kanalın uplink veKablosuz bantın alt kısmı risk altındaysa
- Hücrenin en yüksek frekansına
wifiVictimMhz
ekleyerek güvenli olmayan kanalların üst sınırını bulur. - Alt kenarı sınırla çakışan ilk 20 MHz'lik kablosuz kanalını bulur.
- Wi-Fi kanalını, onu içeren her daha büyük bant genişliğine sahip kanalı (örneğin, 40 MHz, 80 MHz) ve güvenli olmayan kanalla aynı banttaki her daha düşük kanalı işaretler.
- Hücrenin en yüksek frekansına
Kablosuz bantın üst kısmı risk altındaysa
- Kablosuz ağ kurbanı MHz değerini hücresel bağlantının en düşük frekansından çıkararak güvenli olmayan kanalların alt sınırını bulur.
- Üst kenarı sınırla çakışan ilk kablosuz kanalını bulur.
- Wi-Fi kanalını, onu içeren daha büyük her kanalı (örneğin, 40 MHz, 80 MHz) ve aynı banttaki daha yüksek her kanalı güvenli olmayan kanal olarak işaretler.
cellVictimMhz
mevcutsa ve hücresel kanalın aşağı bağlantısı varsa.- Eşik olarak
cellVictimMhz
'ı kullanarak 3. adımı gerçekleştirir ve hücreden yukarı bağlantı yerine hücreden aşağı bağlantı ile karşılaştırır.
- Eşik olarak
Tablo girişinin güç sınırını, hesaplanan güvenli olmayan kanallara uygular.
3.Şekil Komşu kanal müdahalesi için güvenli olmayan kanal hesaplaması
Harmonik veya intermodülasyon bozulması
Harmonik veya intermodülasyon bozulması için birlikte var olma motoru, harmonik veya intermodülasyon sinyalinin aralığını hesaplar ve olası bir kurban kanalla olan yüzde çakışmasını değerlendirir. Çakışma, çakışma eşiğini aşarsa algoritma bunu güvenli olmayan bir durum olarak kabul eder. Bir kurban kanalındaki harmonik veya intermodülasyon bozulmasının yüzde olarak çakışma oranı aşağıdaki denklemle hesaplanır:
Harmonik bozulma durumunda algoritma, Wi-Fi kanallarını etkileyen bir hücre uplink kanalının harmonik bozulmasını dikkate alır. Ardından, hücre uplink frekanslarına ve $ N $ harmonik derecesine göre bozulma yüksek ve bozulma düşük değerlerini harmonik değerlerle değiştirir.
Şekil 4. Harmonik bozulma için güvenli olmayan kanal hesaplaması
İntermodülasyon durumunda algoritma, hücre yukarı bağlantısının intermodülasyon bozulmasını ve hücre aşağı bağlantı kanalını etkileyen kablosuz kanalını dikkate alır. Ardından, bozulma yüksek ve bozulma düşük değerlerini, hücre uplink frekanslarına, kablosuz frekanslarına ve iki intermodülasyon katsayısına ($ M $, $ N $) dayalı intermodülasyon değerleriyle değiştirir.
5.şekil Intermodülasyon bozulması için güvenli olmayan kanal hesaplaması
Arayan hücre bandı başına arama tablosunda $ M $, $ N $ ve çakışma değerlerini belirtebilirsiniz. Bir bantta parazit yoksa bu bant girişi için değerler tablodan çıkarılır. Kablosuz 2,4 GHz ve 5 GHz bantları için bu değerlerin iki grubu bağımsız olarak tanımlanabilir.
Komşu girişimi algoritmasına benzer şekilde, algoritma, girişim yapan hücre bandı başına tanımlanan aynı güç sınırı değerini yeniden kullanır.
Algoritma, her etkin hücre kanalı için aşağıdaki gibi davranır:
- Hücre kanalının bandı için bir arama tablosu girişi bulmaya çalışır. Tablo girişi bulunamazsa bu kanal için güvenli olmayan kanal içermeyen bir sonuç döndürülür.
Parametreler tanımlanmışsa harmoniklerden güvenli olmayan 2,4 GHz kanalları bulur.
- 2,4 GHz için harmonik derece N'yi bulur.
- N ve hücre yukarı bağlantısına göre harmonik yüksek frekansı ve harmonik düşük frekansı hesaplar.
- Aşağıdan gelen harmoniklerin alt sınırında bulunan ilk 20 MHz'lik kablosuz kanalını bulur.
- Harmoniğin kablosuz kanal üzerindeki çakışmasını hesaplar ve çakışma 2,4 GHz kablosuz çakışma eşiğini aşarsa kanalı güvenli değil olarak işaretler.
- Yukarıdan gelen harmoniklerin üst sınırında olan ilk 20 MHz'lik Wi-Fi kanalını bulur.
- Harmoniğin kablosuz kanal üzerindeki çakışmasını hesaplar ve çakışma 2,4 GHz kablosuz çakışma eşiğini aşarsa kanalı güvenli değil olarak işaretler.
- Aradaki her 20 MHz'lik kanalı güvenli olmayan kanal olarak işaretler.
Parametreler tanımlanmışsa harmoniklerden güvenli olmayan 5 GHz kanalları bulur.
- 5 GHz için harmonik derece N'yi bulur. N 0 ise 5. adıma geçilir.
- N ve hücre yukarı bağlantısına göre harmonik yüksek frekansı ve harmonik düşük frekansı hesaplar.
Güvenli olmayan 20 MHz kanalları bulur.
- Aşağıdan gelen harmoniklerin alt sınırında olan ilk 20 MHz'lik Wi-Fi kanalını bulur.
- Harmoniğin kablosuz kanal üzerindeki çakışmasını hesaplar ve çakışma 2,4 GHz kablosuz çakışma eşiğini aşarsa kanalı güvenli değil olarak işaretler.
- Yukarıdan gelen harmoniklerin üst sınırında olan ilk 20 MHz'lik Wi-Fi kanalını bulur.
- Harmoniğin kablosuz kanal üzerindeki çakışmasını hesaplar ve çakışma 2,4 GHz kablosuz çakışma eşiğini aşarsa kanalı güvenli değil olarak işaretler.
- Aradaki her 20 MHz'lik kanalı, belirtilen güç sınırıyla güvenli olmayan bir kanal olarak işaretler.
Güvenli olmayan 40 MHz, 80 MHz ve 160 MHz kanalları bulur.
- 3a adımını 40 MHz, 80 MHz ve 160 MHz ile tekrarlar.
- Harmonik kenardaki kanalların çakışmalarını hesaplamak yerine, daha küçük bileşen kanallardan hesaplanan çakışmaları yeniden kullanır (örneğin, iki 20 MHz kanal 40 MHz'lik bir kanal oluşturuyorsa ve% 30 ile% 90 çakışıyorsa 40 MHz'lik kanalın ortalama çakışma oranı% 60'tır).
Parametreler tanımlanmışsa intermodülasyondan güvenli olmayan 2,4 GHz kanalları bulur.
- 2, 4 GHz için intermodülasyon katsayıları N ve M'yi bulur.
Her 2,4 GHz kablosuz ağ kanalı için:
- N, M, hücresel bağlantı ve kablosuz ağ kanalına göre intermodülasyon düşük frekansını ve intermodülasyon yüksek frekansını hesaplar.
- Hücre downlink'i üzerindeki intermodülasyonun çakışmasını hesaplar ve çakışma 2,4 GHz hücre çakışma eşiğini aşarsa kanalı güvenli değil olarak işaretler.
Parametreler tanımlanmışsa intermodülasyondan kaynaklanan güvenli olmayan 5 GHz kanalları bulur.
- 5 GHz kablosuz kanalları ve 5 GHz hücresel çakışma eşiğini kullanarak 4. adımı tekrarlar.
Tablo girişinin güç sınırını, hesaplanan güvenli olmayan kanallara uygular.
Kesin sonuç
Hem komşu hem de harmonik parazitten kaynaklanan güvenli olmayan kanallar hesaplandıktan sonra, her iki kümenin birleşimi alınarak son küme hesaplanır (çakışma varsa daha düşük güç sınırı seçilir) ve zorunlu kısıtlama uygulanmamışsa varsayılan kanallar kümeden kaldırılır.
Algoritma şu şekilde çalışır:
- 2,4 GHz'lik tüm kablosuz kanallar güvenli olmayan kanal olarak işaretlenirse varsayılan 2,4 GHz'lik kablosuz kanal kümeden kaldırılır.
- Her 5 GHz kablosuz kanal güvenli olmayan kanal olarak işaretlenirse varsayılan 5 GHz kablosuz kanal kümeden kaldırılır.
- Güvenli olmayan kanalların son kümesini döndürür.
Arama tablosu biçimi
Arama tabloları, overlayable
config dizesinde config_wifiCoexTableFilepath
bulunan bir XML dosyasında gösterilir ve aşağıdaki XSD ile tanımlanır.
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
version="1.0">
<xsd:element name="table">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="entry" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="entry">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="rat" type="ratType"/>
<xsd:element name="band" type="xsd:int"/>
<xsd:element name="powerCapDbm" type="xsd:int" minOccurs="0"/>
<xsd:choice>
<xsd:element ref="params"/>
<xsd:element ref="override"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="ratType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="LTE"/>
<xsd:enumeration value="NR"/>
</xsd:restriction>
</xsd:simpleType>
<!-- Define coex algorithm parameters -->
<xsd:element name="params">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="neighborThresholds" minOccurs="0"/>
<xsd:element name="harmonicParams2g" type="harmonicParams" minOccurs="0"/>
<xsd:element name="harmonicParams5g" type="harmonicParams" minOccurs="0"/>
<xsd:element name="intermodParams2g" type="intermodParams" minOccurs="0"/>
<xsd:element name="intermodParams5g" type="intermodParams" minOccurs="0"/>
<xsd:element ref="defaultChannels" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="neighborThresholds">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="wifiVictimMhz" type="xsd:int" minOccurs="0"/>
<xsd:element name="cellVictimMhz" type="xsd:int" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="harmonicParams">
<xsd:sequence>
<xsd:element name="N" type="xsd:int"/>
<xsd:element name="overlap" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="intermodParams">
<xsd:sequence>
<xsd:element name="N" type="xsd:int"/>
<xsd:element name="M" type="xsd:int"/>
<xsd:element name="overlap" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="defaultChannels">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="default2g" type="xsd:int" minOccurs="0"/>
<xsd:element name="default5g" type="xsd:int" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- Define algorithm override lists -->
<xsd:element name="override">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="override2g" minOccurs="0"/>
<xsd:element ref="override5g" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="override2g">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="category" type="overrideCategory2g" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="channel" type="xsd:int" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="override5g">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="category" type="overrideCategory5g" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="channel" type="xsd:int" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="overrideCategory2g">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="all"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="overrideCategory5g">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="all"/>
<xsd:enumeration value="20Mhz"/>
<xsd:enumeration value="40Mhz"/>
<xsd:enumeration value="80Mhz"/>
<xsd:enumeration value="160Mhz"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
Örnek XML tablosu
Aşağıda örnek bir XML arama tablosu verilmiştir:
<table>
<!-- Entry using algorithm parameters -->
<entry>
<rat>LTE</rat>
<band>40</band>
<powerCapDbm>50</powerCapDbm>
<params>
<neighborThresholds>
<wifiVictimMhz>25</wifiVictimMhz>
<cellVictimMhz>40</cellVictimMhz>
</neighborThresholds>
<harmonicParams2g>
<N>3</N>
<overlap>50</overlap>
</harmonicParams2g>
<harmonicParams5g>
<N>3</N>
<overlap>50</overlap>
</harmonicParams5g>
<intermodParams2g>
<N>-2</N>
<M>1</M>
<overlap>75</overlap>
</intermodParams2g>
<intermodParams5g>
<N>-2</N>
<M>1</M>
<overlap>75</overlap>
</intermodParams5g>
<defaultChannels>
<default2g>6</default2g>
<default5g>36</default5g>
</defaultChannels>
</params>
</entry>
<!-- Entry using the override list -->
<entry>
<rat>LTE</rat>
<band>41</band>
<powerCapDbm>50</powerCapDbm>
<override>
<override2g>
<channel>6</channel>
<channel>11</channel>
...
</override2g>
<override5g>
<category>40Mhz</category>
<channel>34</channel>
...
</override5g>
</override>
</entry>
</table>
Operatör toplama
Taşıyıcı toplama (CA) için her bir yukarı bağlantı veya aşağı bağlantının harmonik ya da intermodülasyon aralıkları, tek başına parazite neden olacak kadar örtüşmeyebilir ancak birleştirildiğinde yeterli örtüşme oluşabilir. Algoritma, her harmonik veya intermodülasyon aralığını ayrı ayrı değerlendirir ve döndürülen güvenli olmayan kanalların birleşimini alır. İntermodülasyon durumunda bu, her bir UL'nin her bir DL üzerindeki intermodülasyon aralığını değerlendirmek anlamına gelir.
Algoritma, PCELL, PSCELL veya SCELL arasında ayrım yapmaz ve bunları eşit olarak ele alır.
Lisanslı Destekli Erişim
Lisanslı Destekli Erişim (LAA), 46. bant olarak tanımlanır. Algoritma, bu grubu diğer gruplara benzer şekilde ele alır. Bu durumda, 5 GHz kanallarının tamamı arama tablosunda geçersiz kılma listesi olarak ayarlanabilir.
Kanal önleme algoritması, operatörün şartlarına bağlı olarak 5 GHz kablosuz bant için SoftAP ve Wi-Fi Direct (P2P) üzerinde zorunlu kısıtlamalar belirler. Algoritmanın bu kullanım alanını işlemesi için taşıyıcı yapılandırma değeri restrict_5g_softap_wifi_direct_for_laa
tanımlanmalıdır. Hücre kanalı LAA'da ve restrict_5g_softap_wifi_direct_for_laa
true
ise algoritma, 5 GHz bandının tamamıyla birlikte güvenli olmayan kanallar kümesini döndürür ve SoftAP ile Wi-Fi Direct (P2P) için zorunlu kısıtlama işaretlerini ayarlar.
Kablosuz hizmetini bilgilendirme
Birlikte var olma kanalı algoritması güvenli olmayan kanalları hesapladıktan sonra, sistem uygulamalarınıza güvenli olmayan kanalları ve kısıtlamalarını sağlamak için Android çerçevesinde tanımlanan aşağıdaki @SystemApi veri yapısını kullanın.
public final class CoexUnsafeChannel {
public static final int POWER_CAP_NONE
public @WifiAnnotations.WifiBandBasic int getBand();
public int getChannel();
// Returns the specified power cap in dBm, or POWER_CAP_NONE if not specified.
public int getPowerCapDbm();
}
Güvenli olmayan kanallar değiştiğinde uygulamaların güncellenmiş değerleri almasını sağlamak için aşağıdaki WifiManager
@SystemApi yöntemlerini ve geri çağırmayı kullanın.
public static final int COEX_RESTRICTION_WIFI_DIRECT;
public static final int COEX_RESTRICTION_SOFTAP;
public static final int COEX_RESTRICTION_WIFI_AWARE;
// Register a CoexCallback to listen on onCoexUnsafeChannelsChanged callbacks. The callback will be called whenever the unsafe channels change, as well as immediately after registering to get the current values.
public void registerCoexCallback(Executor executor, CoexCallback callback);
public void unregisterCoexCallback(CoexCallback callback);
public abstract static class CoexCallback {
//Gets called whenever getCoexUnsafeChannels()/getCoexRestrictions() have updated values
public void onCoexUnsafeChannelsChanged(List<CoexUnsafeChannels> unsafeChannels, int restrictions);
}
Kablosuz işlem gerçekleştirme
Kablosuz hizmet, güvenli olmayan kanallar grubu hakkında bilgi aldığında bu kanallardan kaçınılmasını sağlamak için uygun işlemi gerçekleştirir. Bu bölümde, kablosuz hizmetinin farklı senaryolardaki davranışı açıklanmaktadır.
Sürücüyü bilgilendirme
Sürücü, kanal önleme işlemini gerçekleştirmede önemli bir role sahip olduğundan güvenli olmayan kanalları sürücüye ve donanım yazılımına iletmek gerekir. Bunu yapmak için aşağıdaki IWifiChip
HAL API'sini kullanın.
AIDL için:
void setCoexUnsafeChannels(in CoexUnsafeChannel[] unsafeChannels,
in int restrictions)
HIDL (1.5 veya daha yeni) için:
setCoexUnsafeChannels(vec<CoexUnsafeChannel> unsafeChannels,
bitfield<IfaceType> restrictions);
SoftAP
SoftAP, güvenli olmayan kanaldan kaçınma için temel kullanım alanıdır. Aşağıdaki bölümde, ACS ile kanal önlemenin uygulanabileceği temel SoftAp senaryoları özetlenmiştir. Senaryolarda, kanal engelleme algoritmasının ve sürücünün ya da donanım yazılımının davranışı açıklanmaktadır.
ACS etkinleştirilmişken SoftAP'yi başlatma (henüz SoftAP başlatılmadı)
Kanallar güvenli değilse ve SoftAP kısıtlaması varsa
- Çerçeve, güvenli olmayan kanalları ACS listesinden kaldırır.
- Liste boşsa çerçeve SoftAP'yi durdurur.
Kanallar güvenli değilse ve kısıtlama yoksa
- Tedarikçi sürücüsü veya donanım yazılımı, güvenli kanallara güvenli olmayan kanallara göre öncelik verir.
SoftAP, ACS etkinleştirilmiş olarak çalışıyor ve güvenli olmayan kanallar güncelleniyor
SoftAP kanalı güvenli değilse ve SoftAP kısıtlaması varsa
- Çerçeve, güvenli olmayan kanalları kaldırarak ACS listesini günceller.
- Liste boşsa çerçeve SoftAP'yi kapatır.
SoftAP kanalı güvenli değilse ve kısıtlama yoksa
- Çerçeve tarafından herhangi bir işlem yapılmaz. Güvenli olmayan kanallardan kaçınma veya kaçınma mümkün değilse güç sınırını uygulama, satıcı sürücüsü ya da donanım yazılımı tarafından gerçekleştirilir.
Wi-Fi Direct (P2P)
Kablosuz doğrudan bağlantı (P2P) kısıtlamaları olan güvenli olmayan kanallar varsa.
- Çerçeve, HAL yöntemini kullanarak güvenli olmayan kanallardan kaçınmak için
wpa_supplicant
isteğinde bulunurISupplicantP2pIface::setDisallowedFrequencies()
.
- Çerçeve, HAL yöntemini kullanarak güvenli olmayan kanallardan kaçınmak için
Kısıtlama uygulanmayan güvenli olmayan kanallar varsa
- Satıcı sürücüsü veya donanım yazılımı, Kablosuz Doğrudan Bağlantı (P2P) kısıtlaması olmayan güvenli olmayan bir kanal kullanılıyorsa güç sınırını uygular.
Wi-Fi Aware (NAN)
Çerçeve, Wi-Fi Aware (NAN) için kanal seçimine dahil edilmez ve herhangi bir çerçeve işlemi yapılmaz. Wi-Fi Aware (NAN) kanalından kaçınma özelliğinden satıcı sürücüsü veya donanım yazılımı sorumludur.
Algoritmayı devre dışı bırakma
Varsayılan algoritma uygulamasını devre dışı bırakmak ve kendi güvenli olmayan kanallar listenizi iletmek istiyorsanız yer paylaşımını config_wifiDefaultCoexAlgorithmEnabled
yapılandırın. Yer paylaşımı yanlış olarak ayarlanırsa varsayılan algoritma devre dışı bırakılır. Ardından, aşağıdaki sistem API'sini kullanarak çerçeveye yönlendirilecek güvenli olmayan kanalların listesini oluşturmak için kendi bant dışı tescilli algoritmanızı kullanabilirsiniz.
public void setCoexUnsafeChannels(Set<CoexUnsafeChannel> coexUnsafeChannels,
int coexRestrictions);
Uygulamayı doğrulama
Kablosuz/hücresel birlikte var olma kanalından kaçınma özelliğini uygulamanızı doğrulamak için aşağıdaki testleri kullanın.
CTS testleri
WifiManagerTest.java
testCoexMethodsShouldFailNoPermission()
testListenOnCoexUnsafeChannels()
ACTS testleri
WifiManagerTest.py
test_set_get_coex_unsafe_channels()
VTS testleri
AIDL uygulanıyorsa:
wifi_chip_aidl_test.cpp
TEST_P(WifiChipAidlTest, SetCoexUnsafeChannels)
HIDL uygulanıyorsa:
wifi_chip_hidl_test.cpp
TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)