WIFI 国家码修改信道方法 _ 高通平台
目录
[COUNTRY_LOOKUP sheet](#COUNTRY_LOOKUP sheet)
[REG_DMN_PAIR_LOOKUP、REG_DOMAIN_PAIRS_INPUT与ALL_COUNTRIES_INPUT sheet](#REG_DMN_PAIR_LOOKUP、REG_DOMAIN_PAIRS_INPUT与ALL_COUNTRIES_INPUT sheet)
[REG_DOMAINS_5G_LOOKUP与REG_DOMAINS_5G_INPUT sheet](#REG_DOMAINS_5G_LOOKUP与REG_DOMAINS_5G_INPUT sheet)
[Regulatory_BDF_In_6G_Data.xlsx sheet总结](#Regulatory_BDF_In_6G_Data.xlsx sheet总结)
[JP 国家码配置 5180到5240信道, 5260到5320信道 ,5550到5720信道](#JP 国家码配置 5180到5240信道, 5260到5320信道 ,5550到5720信道)
1 Qcom平台修改方法
修改前准备
打开代码目录, BP分支中WLAN.MSL.3.0.1\wlan_proc\wlan\phyrf_svc_li\tools\bdfUtil\Regulatory_BDF_tools
打开该目录下的Regulatory_BDF_6G_In_Data.xlsx
相关Sheet说明
#### COUNTRY_LOOKUP sheet
COUNTRY_LOOKUP sheet是定义国家码的,添加国家码时,需要在最后面添加CTRY_开头的国家码字符和一个不和前面重复的十进制数,如下图

-
-
REG_DMN_PAIR_LOOKUP、REG_DOMAIN_PAIRS_INPUT与ALL_COUNTRIES_INPUT sheet
-
ALL_COUNTRIES_INPUT sheet添加国家码CTRY_MCLCSTSJO对应域WORD_WORLD和国家码简写,带宽等

在REG_DMN_PAIR_LOOKUP添加,名称和序号也必须唯一,参照前面的,递增1

在REG_DOMAIN_PAIRS_INPUT sheet添加,其中WORD_WORLD是REG_DMN_PAIR_LOOKUP sheet定义的,WORLD_5G_3_id是REG_DOMAINS_5G_LOOKUP定义的,对应的信道在REG_DOMAINS_5G_INPUT设置;后面的WORLD_2G_2_id我这里是沿用之前的,如果要重新定义需要在REG_DOMAINS_5G_LOOKUP、REG_DOMAINS_5G_INPUT里定义和设置信道。
同样的如果之前的REG DOMAIN ID,和想要加的信道相同,也可以使用之前的,例如WORLD_5G_2_id

-
-
REG_DOMAINS_5G_LOOKUP与REG_DOMAINS_5G_INPUT sheet
-
REG_DOMAINS_5G_LOOKUP是5G的监管域,本人理解就是定义一个域包含哪些信道段
在REG_DOMAINS_5G_LOOKUP shett里添加WORLD_5G_3_id,VALUE也必须是唯一的,参照前面的,递增1

然后在REG_DOMAINS_5G_INPUT 相同行数添加,其中UM_REG_RULES必须与RULE总数相同,这里是52

类似的有2G的监管域REG_DOMAINS_2G_LOOKUP与REG_DOMAINS_2G_INPUT
到此,新添一个国家码信道,添加完成了
-
-
FLAGS标记定义
-
一些FLAG的描述
REGULATORY_CHAN_DISABLED:This channel is disabled.
REGULATORY_CHAN_NO_IR:不然发起辐射,也就是不能主动发我探测或信号帧、只能被动扫描,监听周围无线网络;No-IBSS,意味着不支持自组网模式.
REGULATORY_CHAN_RADAR:在该频道进行雷达检测,如果有雷达在使用这个频道,可能会切换到其它信道.
REGULATORY_CHAN_NO_OFDM:该频道上不允许使用 OFDM(正交频分复用)技术, OFDM是将高速数据流分成多个较低速率的子载波进行传输的技术。
REGULATORY_CHAN_INDOOR_ONLY:只允许在室内使用,可能是为了保护其他无线系统的正常运行。
REGULATORY_CHAN_NO_HT40:不允许使用 40 MHz 的带宽.
REGULATORY_CHAN_NO_80MHZ:不允许使用 80 MHz 的带宽.
REGULATORY_CHAN_NO_160MHZ:不允许使用 160 MHz 的带宽.
REGULATORY_CHAN_NO_20MHZ:不允许使用 20 MHz 的带宽.
REGULATORY_CHAN_NO_10MHZ:不允许使用 10 MHz 的带宽.
REGULATORY_PHYMODE_NO11A:不允许使用 11a.
REGULATORY_PHYMODE_NO11B:不允许使用 11b.
REGULATORY_PHYMODE_NO11G:不允许使用 11g.
REGULATORY_CHAN_NO11N:不允许使用 11n.
REGULATORY_PHYMODE_NO11AC:不允许使用 11ac,也就是Wi-Fi 5.
REGULATORY_PHYMODE_NO11AX:不允许使用 11ax,也就是Wi-Fi 6.
修改FLAGS的方法如下,首先从ALL_COUNTRIES_INPUT sheet里找到对应国家比如CTRY_JAPAN,通过REG_DOMAIN_PAIRS_INPUT找到对应的5G域MKK17_id,通过REG_DOMAINS_5G_LOOKUP里MKK17_id的行数找到REG_DOMAINS_5G_INPUT对应行数就是这个域对应的信道段,在REG_RULES_5G_LOOKUP找其中一个段CHAN_5170_5250_8,通过行数12找到REG_RULES_5G_INPUT里的的12行就是这个段对应的频道范围起始频道、结束频道、带宽、PWR、还有FLAGS,在这里就可以修改了

通过这张图可以看到整个Regulatory_BDF_In_6G_Data.xlsx如何定义国家码了,将途中的5G改为2G就是修改2.4G频道的方法。图中只修改了CHAN_5170_5250_8,还有其它组,也是一样的。
-
-
Regulatory_BDF_In_6G_Data.xlsx sheet总结
-

- REGDB_VERSION_HISTORY:修改记录的sheet
LOOKUP结尾的sheet都是定义,添加国家码、域组(包含2.4G域和5G域)、域(包含很多信道段)、信道段都是通过这些带LOOKUP的shett,FLAGS的话我认为是不能添加的,除非有其它对应修改
- REG_DOMAINS_2G_LOOKUP:2.4G域定义的sheet
- REG_DOMAINS_5G_LOOKUP:5G域定义的sheet
- REG_RULES_2G_LOOKUP:2G信道段定义的sheet
- REG_RULES_5G_LOOKUP:5G信道段定义的sheet
- IMPORTANT_MACROS_LOOKUP:重要的FLAGS定义的sheet
- DFS_LOOKUP:DFS FLAGS定义的sheet
- CTL_LOOKUP:CTL FLAGS定义的sheet
- COUNTRY_LOOKUP:国家码定义的sheet
- REG_DMN_PAIR_LOOKUP:5G和2.4G域组定义的sheet
INPUT结尾的sheet都是赋值,国家码、域组、域、信道段定义个十进制值,不能重复,这个应该在解析表格时为了程序容易辨识
- ALL_COUNTRIES_INPUT:设置每个国家码对应的域组、国家码简写、2.4G带宽、5G带宽等
- REG_DOMAIN_PAIRS_INPUT:设置域组对应的5G和2.4G域
- REG_RULES_2G_INPUT:设置2.4G域对应的信道范围、带宽、power、FLAGS、PAD_INTERNAL
- REG_RULES_5G_INPUT:设置5G域对应的信道范围、带宽、power、FLAGS、PAD_INTERNAL
- REG_DOMAINS_5G_INPUT:设置5G域的范围,也就是具体支持哪些域组
-
REG_DOMAINS_2G_INPUT:设置2.4G域的范围,也就是具体支持哪些域组
1.脚本运行
修改完Regulatory_BDF_6G_In_Data.xlsx后,运行同一目录下RegDB_excel2bin.py Regulatory_BDF_6G_In_Data.xlsx得到regdb.bin 和regdb.txt

为了优先使用regdb.bin内容来控制信道,需要将regdb.txt内regDbEnable置为1
具体规则是:
Software firstchecksinregdb.binand uses the following flow to load regulatory database:
■If regDbEnable (in regdb.bin) = 1, then take values from regdb.bin.
■If regDbEnable (in regdb.bin) = 0, then check for regDbFlag in bdf.
■If regDbFlag (in bdf) = 1, then take values from BDF.
■If regDbFlag (in bdf) is also 0,then take default values from driver/firmware.
-
国家码信道验证方法
如果不想等全编验证的话,可以将生成的regdb.bin push进手机并重启生效后查看当前国家码及信道
临时PUSH指令:
adb root
adb remount
adb shell mount -o rw,remount /dev/block/sde6 /vendor/firmware_mnt
adb push regdb.bin /vendor/firmware_mnt/image/qca6750/regdb.bin
adb shell sync
adb reboot
需要提交的文件

虽然起作用的只是regdb.bin,但是其它文件也要修改特别是Regulatory_BDF_In_6G_Data.xlsx,因为要是没有提交,后面人修改的这个文件就不包含你的修改,通过它生成的regdb.bin也就没有你的修改。
手机重启后,将国家码设置为对应国家,然后使用命令读取支持的信道,也可查看Log。
案例分析
### JP 国家码配置 5180到5240信道, 5260到5320信道 ,5550到5720信道
1.
#### REG_RULES_5G_INPUT
在REG_RULES_5G_INPUT 里面找到第107行,对应的起始信道5170,终止信道5250,带宽80M, 中心频段是5180,5200,5220,5240;
找到第108行,对应的起始信道为5250,终止信道为5330,带宽80M,中心频段是5240,5260,5280,5300;
找到第115行,对应的起始信道为5490,终止信道为5730,带宽为160M,中心频段为5500,5520,5540, 5560,5580,5600,5620,5640,5660,5680,5700,5720

-
-
REG_RULES_5G_LOOKUP
-
在REG_RULES_5G_LOOKUP 107行找到信道段是CHAN_5170_5250_15
在REG_RULES_5G_LOOKUP 108行找到信道段是CHAN_5250_5330_20
在REG_RULES_5G_LOOKUP 115行找到信道段是CHAN_5490_5730_1

-
-
ALL_COUNTIES_INPUT
-
ALL_COUNTIES_INPUT里面通过国家码JP搜索到第207行,JP对应的区域码为MKK5_MKKC

-
-
REG_DMN_PAIR_LOOKUP
-
在REG_DMN_PAIR_LOOKUP 中搜索到MKK5_MKKC

-
-
REG_DOMAIN_PARIS_INPUT
-
在REG_DOMAIN_PARIS_INPUT中搜索到MKK5_MKKC对应的WIFI 5G的信道段为MKK5_id

-
-
REG_DOMAINS_5G_LOOKUP
-
在REG_DOMAINS_5G_LOOKUP中找到MKK5_id对应47行

-
-
REG_DOMAINS_5G_INPUT
-
在REG_DOMAINS_5G_INPUT中47行配置RULE1为CHAN_5170_5250_15,RULE2为CHAN_5250_5330_20,RULES3为CHAN_5490_5730_1

最后保存Regulatory_BDF_In_6G_Data.xlsx文件, 编译regdb.bin文件,按前面方法push到手机,验证,最后提交相关文件上库。
总结
通过相关修改,测试机作为WIFI STA(2.4G)时,支持1-13ch
测试机作为WIFI STA(5G)时,支持36-64ch 和100-144ch。