高通Android7.1 WIFI国家码问题

不同国家WIFI使用的信道不同,需指定WIFI国家码确定扫描和连接信道。文章介绍了三种设置国家码的方法,包括通过设置prop设置、通过WifiManager提供的结构设置以及从扫描结果获取国家码,还说明了各方法的具体流程和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

20:12:08.774420  [20:12:03.149290] [000000002A1ADFB1] [wpa_s] wlan: [I :HDD] hdd_driver_command: Received COUNTRY CN cmd from Wi-Fi GUI***
20:12:08.774457  [20:12:03.149318] [000000002A1AE1BC] [wpa_s] wlan: [I :SME] sme_ChangeCountryCode: 5688:  called
20:12:08.774490  [20:12:03.149334] [000000002A1AE2FD] [wpa_s] wlan: [I :SME] sme_ChangeCountryCode: 5728:  returned
20:12:08.774520  [20:12:03.149476] [000000002A1AEDA0] [VosMC] wlan: [IH:VOS] vos_timer_stop: Timer Addr inside voss_stop : 0xbf3733d4
20:12:08.774550  [20:12:03.149494] [000000002A1AEF01] [VosMC] wlan: [I :WDA] <------ WDA_UpdateChReqCallback 
20:12:08.774580  [20:12:03.149564] [000000002A1AF43B] [VosMC] wlan: [I :WDA] <------ WDA_UpdateScanParamsReqCallback, wdiStatus: 0
20:12:08.774609  [20:12:03.149574] [000000002A1AF4F8] [VosMC] wlan: [IH:VOS] Timer Addr inside voss_start : 0xbf3733d4 
20:12:08.774639  [20:12:03.149598] [000000002A1AF6C1] [VosMC] wlan: [I :VOS] VosMCThread: Servicing the VOS SME MC Message queue
20:12:08.774668  [20:12:03.149616] [000000002A1AF819] [VosMC] wlan: [I :VOS] regdomain request
20:12:08.774943  [20:12:03.149624] [000000002A1AF8AB] [VosMC] wlan: [W :VOS]  get country information from kernel db
20:12:08.774984  [20:12:03.443815] [000000002A71293C] [VosMC] wlan: [I :VOS] runtime country code : CN is found in kernel db
20:12:08.775014  [20:12:03.443894] [000000002A712F06] [wpa_s] wlan: [I :HDD] Exit:hdd_driver_command
20:12:08.775045  [20:12:03.443903] [000000002A712FA2] [VosMC] wlan: [IH:VOS] vos_timer_stop: Timer Addr inside voss_stop : 0xbf3733d4
20:12:08.775075  [20:12:03.443907] [000000002A712FE7] [wpa_s] wlan: [I :HDD] Exit:__hdd_ioctl
20:12:08.775106  [20:12:03.443920] [000000002A7130E9] [VosMC] wlan: [I :WDA] <------ WDA_UpdateScanParamsRespCallback 
20:12:08.775136  [20:12:03.443937] [000000002A71322C] [VosMC] wlan: [IH:VOS] vos_list_remove_front: list empty
20:12:08.775165  [20:12:03.444199] [000000002A7145E2] [kwork] wlan: [I :VOS] cfg80211 reg notifier callback for country for initiator 1
20:12:08.775195  [20:12:03.444211] [000000002A7146B3] [kwork] wlan: [I :VOS] __wlan_hdd_linux_reg_notifier: Req initiator 1 CC=CN

不同国家,WIFI使用的信道是不同的,2.4G一共有14个信道,中国使用1-13信道,美国则使用1-11信道。因此,我们需要指定WIFI的国家码,来确定WIFI在扫描和连接过程中,可以在哪些信道上进行。

设置国家码有三种方法,我们逐一介绍:

1.通过设置prop设置

oem产商设置国家码在

device/qcom/msm8909w/system.prop

文件中设置一个prop就可以了。

ro.boot.wificountrycode=CN

设置好prop后,我们分析下国家码的设置过程。

在SystemServer起来后,会加载WifiServiceImpl,即WIFI服务。在WIFI服务中,将获取设置的WIFI国家码属性。并作为参数传给WifiStateMachine的构造函数中。

public WifiServiceImpl(Context context) {
    mCountryCode = new WifiCountryCode(
            WifiNative.getWlanNativeInterface(),
            SystemProperties.get(BOOT_DEFAULT_WIFI_COUNTRY_CODE),
            mFacade.getStringSetting(mContext, Settings.Global.WIFI_COUNTRY_CODE),
            mContext.getResources().getBoolean(
                    R.bool.config_wifi_revert_country_code_on_cellular_loss));
    mWifiStateMachine = new WifiStateMachine(mContext, mFacade,
        wifiStateMachineThread.getLooper(), mUserManager, mWifiInjector,
        new BackupManagerProxy(), mCountryCode);
}

此处首先构造了WifiCountryCode对象,我们看构造方法:

    public WifiCountryCode(
            WifiNative wifiNative,
            String oemDefaultCountryCode,
            String persistentCountryCode,
            boolean revertCountryCodeOnCellularLoss) {

        mWifiNative = wifiNative;
        mRevertCountryCodeOnCellularLoss = revertCou
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值