热门内容

公众号"MAKE1"

获取行业最新资讯

请扫码添加

专业客服企业微信

问题:手机无法通过信道13连接wifi

简介

问题:手机无法通过信道13连接wifi

问题:手机无法通过信道13连接wifi

首先在文件

androiddeviceqcommsm8916_32WCNSS_qcom_cfg.ini

中设置g11dSupportEnabled=0,让其不支持802.11d

抓取kmsg和logcat的信息发现如下错误

<6>[ 112.231365] DefaultCountry is US

由于国家错误的配置为US,US仅仅是支持到1到11信道

从log上看,只要修改国家为CN中国应该就可以解决这个问题了

导出wlan的配置文件

(1)使用USB连接到电脑

(2)adb root

adb shell

# insmod /system/lib/modules/wlan.ko con_mode=5

# ps ptt

# kill xxx (ptt 进程号)

# ptt_socket_app -v -d -f

(3)QRCT

选择 FTM_Command --> WLAN --> WCN1312...

选择 WCN3620

点击 FTM Start

获取到对应wlan的xml配置

从xml配置文件中找到如下信息

<DefaultCountryTable>

<RegulatoryDomain Map="0:FCC,1:ETSI,2:JAPAN,3:WORLD,4:N_AMER_EXC_FCC,5:APAC,6:KOREA,7:HI_5GHZ,8:NO_5GHZ">0</RegulatoryDomain>

<CountryCode>

<Value>85</Value>

<Value>83</Value>

<Value>73</Value>

</CountryCode>

</DefaultCountryTable>

国家选择的是0---US,需要选择到3----WORLD

下面countrycode需要改成下面信息

<CountryCode>

<Value>67</Value>

<Value>78</Value>

<Value>73</Value>

</CountryCode>

下面数字均是ascall码

85,83,73--->USI

67,78,73--->CNI

修改了配置文件以后,使用QRCT把修改的配置文件重新push到手机上验证ok

这是需要考虑的是,把wlan配置直接弄到升级代码中

由于导出的wlan的配置文件,在源码中和文件系统中是已WCNSS_qcom_wlan_nv.bin形式的二进制文件存储的

去哦们只需要把修改以后的WCNSS_qcom_wlan_nv.bin二进制文件pull出来,放到工程源码中编译就可以了

通过在源码中搜索发现

下面几个地方有相关的bin文件

vendor/qcom/opensource/wlan/qcacld-2.0/firmware_bin/WCNSS_qcom_wlan_nv.bin

vendor/qcom/opensource/wlan/prima/firmware_bin/WCNSS_qcom_wlan_nv.bin

devices/qcom/msm8916_32/WCNSS_qcom_wlan_nv.bin

究竟是替换哪一个呢?

在手机上能够在两个路径下发现这个二进制文件

/persist

/system/etc/firmware/wlan/prima

使用ll命令查看二进制的文件的状态发现

shell@msm8916_32:/system/etc/firmware/wlan/prima # ll

-rw-r--r-- root root 11290 2014-11-21 11:11 WCNSS_cfg.dat

lrw-r--r-- root root 2014-11-21 11:11 WCNSS_qcom_cfg.ini -> /da ta/misc/wifi/WCNSS_qcom_cfg.ini

lrw-r--r-- root root 2014-11-21 11:11 WCNSS_qcom_wlan_nv.bin -> /persist/WCNSS_qcom_wlan_nv.bin

发现实际产生效果的文件是放在目录/persist这个下面的

在源码里面是怎么拷贝过去的呢?

在文件srcLINUXandroiddeviceqcommsm8916_32msm8916_32.mk中发现拷贝动作

#wlan driver

PRODUCT_COPY_FILES +=

device/qcom/msm8916_32/WCNSS_qcom_cfg.ini:system/etc/wifi/WCNSS_qcom_cfg.ini

device/qcom/msm8916_32/WCNSS_qcom_wlan_nv.bin:persist/WCNSS_qcom_wlan_nv.bin

上面其实就是拷贝语句

把:前的文件拷贝到:后面的地方

所以我们修改后的二进制bin应该替换到device/qcom/msm8916_32/WCNSS_qcom_wlan_nv.bin

现在还有一个疑问软连接是什么时候建立的呢?

在文件srcLINUXandroiddeviceqcommsm8916_32AndroidBoard.mk中有建立软连接的动作

#Create symbolic links

$(shell mkdir -p $(TARGET_OUT_ETC)/firmware/wlan/prima;

ln -sf /persist/WCNSS_qcom_wlan_nv.bin

$(TARGET_OUT_ETC)/firmware/wlan/prima/WCNSS_qcom_wlan_nv.bin;

ln -sf /data/misc/wifi/WCNSS_qcom_cfg.ini

$(TARGET_OUT_ETC)/firmware/wlan/prima/WCNSS_qcom_cfg.ini)

endif

这个AndroidBoard.mk是在编译软件的时候就会运行,来建立这个软连接

注意:

在文件系统中

/system/etc/firmware/wlan/prima/WCNSS_qcom_wlan_nv.bin

这个bin文件根本不是,源码中下面目录的bin

vendor/qcom/opensource/wlan/prima/firmware_bin/WCNSS_qcom_wlan_nv.bin

 

0
 条评论
相关内容推荐