RK3399支持5G-WiFi热点
背景
- Platform: RK3399
- OS: Android7.1.2
- Kernel: v4.4.103
以前用AP6356s模块,设置WIFI热点的时候有5G频段选项
后面发现没有了,在调试AP6256的时候也发现没有,但他们都是支持5G的。
解决
最原始的版本是通过判断mWifiManager.isDualBandSupported()
和countryCode
,来确定是否添加5G频段的选项
mWifiManager.isDualBandSupported()
,通过以下配置读取frameworks/base/core/res/res/values/config.xml
:<bool translatable="false" name="config_wifi_dual_band_support">true</bool>
frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiServiceImpl.java
:public boolean isDualBandSupported() { //TODO: Should move towards adding a driver API that checks at runtime return mContext.getResources().getBoolean( com.android.internal.R.bool.config_wifi_dual_band_support); }
countryCode
通过mWifiManager.getCountryCode();
函数获取
而国家代码是根据phoneNumber去set的,但我们没用SIM
为什么要有国家代码判断呢?
在我们中国国内5G信道只允许使用149以上的信道,因此没设置国家是无法使用5G热点的
packages/apps/Settings/src/com/android/settings/wifi/WifiApDialog.java
onCreate
中是通过checkIfSupportDualBand
函数去判断是否添加5G频段的选项checkIfSupportDualBand
函数会去根据chip_type
判断是否支持5G,所以需要在该判断中添加我们需要的wifi_chip_type
public boolean checkIfSupportDualBand() {
/*zdd*/
File file = new File(/*"/sys/firmware/devicetree/base/wireless-wlan/wifi_chip_type"*/"/data/wifi_chip"); //根据chip_id获取的WiFi名,以前是根据wireless-wlan的DTS节点指定的wifi_chip_type
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
String tempString = null;
while ((tempString = reader.readLine()) != null) {
Log.d(TAG, "Get wifi chip name: " + tempString);
if (tempString.contains("ap6234") || tempString.contains("ap6330")
|| tempString.contains("ap6335") || tempString.contains("ap6354")
|| tempString.contains("ap6441") || tempString.contains("ap6356s")
|| tempString.contains("rtl8822bs") || tempString.contains("rtl8822bu") || tempString.contains("AP6256")) {
reader.close();
return true;
}
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {}
}
}
return false;
}
/hardware/libhardware_legacy/wifi/wifi.c
save_wifi_chip_type
函数保存chip_type到/data/wifi_chip
文件,例如我现在用的是AP6256
frameworks/opt/net/wifi/service/java/com/android/server/wifi/util/ApConfigUtil.java
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 DD'Notes!
评论