【Android】adb修改无线国家码的方法
背景
由于日本早已对于民众开放使用6Ghz频段、
在APP测试中、为模拟中国以外用户的使用场景、排除6Ghz才会发生的BUG,需调查6Ghz在中国国内测试的可行性和对应办法——
中国6Ghz现状
中国无线6Ghz(6425-7125MHz)频段的使用情况调查
1.2023年7月中国工业和信息化部发布新版《中华人民共和国无线电频率划分规定》, 将6Ghz(6425-7125MHz)全部或部分频段划分用于IMT(国际移动通信,含5G/6G)系统。
工业和信息化部发布新版《中华人民共和国无线电频率划分规定》 率先在全球将6GHz频段划分用于5G/6G系统_部门动态_中国政府网
2.基于《中华人民共和国无线电管理条例》中第八章第70条规定, 违反本条例规定,未经许可擅自使用无线电频率,或者擅自设置、使用无线电台(站)的,由无线电管理机构责令改正,没收从事违法活动的设备和违法所得,可以并处5万元以下的罚款。
中华人民共和国国务院 中华人民共和国中央军事委员会令(第672号) 中华人民共和国无线电管理条例__2016年第35号国务院公报_中国政府网
因此,政府为了避免国内极客擅自使用6Ghz,进行了以下屏蔽方法——
①国内购买的路由器不支持6Ghz。就算是从海外购置了支持6Ghz的路由器———也不行,见②
②无论国内还是国外购置了支持6Ghz的手机(从25年开始的新手机基本上都支持6Ghz频段,是否支持可以查询一下),在联网激活后,手机的无线国家码会强制切换到CN,导致6Ghz频段无法连接
手机的无线国家码
为什么你的设备到了国外就“水土不服”?
你可能觉得,Wi-Fi不就是个全球通用的技术吗,怎么还分国家?这其实是个法规和物理层结合的“坑”。简单来说,Wi-Fi信号是在2.4GHz和5GHz这两个公共频段上“跑”的,但不同国家或地区,对这两个频段里具体哪些“车道”(也就是信道)可以开放使用,有着严格的法律规定。这就好比开车,有的国家靠右行驶,有的靠左,你不能乱来。
以最常见的2.4GHz频段为例,它被划分成了14个信道。在中国,我们允许使用第1到第13个信道。但在美国,FCC(联邦通信委员会)只批准了第1到第11个信道。如果你在中国生产的设备,默认国家码是CN,它就会在1-13信道上欢快地工作。但如果你把它带到美国,不修改国家码,它可能会尝试去扫描或连接第12、13信道,这在当地法规下是不允许的,轻则信号不稳定,重则根本无法使用。这就是我们常说的“合规性”问题,搞不好还会引发法律风险。
国家码目的
Wi-Fi国家码的核心,其实是信道映射表。这个表定义了在这个国家码下,哪些频段(2.4G、5G、6G)下的哪些信道是允许被使用的。这个定义权,掌握在每个国家或地区的无线电管理机构手里,比如中国的SRRC(国家无线电监测中心)、美国的FCC、欧洲的ETSI。
为什么要有这个限制?主要原因有两个:
避免干扰:无线电频谱是宝贵的公共资源。除了Wi-Fi,蓝牙、 Zigbee、对讲机、甚至微波炉(没错,2.4GHz)都在用相近的频段。国家码规定就是为了让不同设备“错峰出行”,减少相互干扰,保证大家都能正常通信。
军事与安全:部分频段可能被预留用于军事、航空导航等关键领域,民用设备必须避开。
国家码设置优先级逻辑
在Android系统里,决定最终使用哪个国家码,有一套优先级逻辑。
最高优先级:用户手动设置。如果用户在系统设置->网络和互联网->WIFI->WIFI偏好设置(或类似路径)中手动选择了国家/地区,系统会优先采用这个设置。但这个选项不一定对所有用户可见,取决于OEM的定制。
次高优先级:SIM卡信息。当设备插入SIM卡并成功注册到移动网络时,系统可以从移动网络运营商(MNO)获取国家码(MCC,移动国家代码)。Android的WifiCountryCode模块会尝试将这个MCC转换为对应的WIFI国家码(如460->CN)。这是最“智能”的方式,能让设备“走到哪,适配到哪”。
默认/保底优先级:系统属性。如果以上两者都不可用(比如Wi-Fi Only的平板,或者用户没设置),系统就会回退到读取一个特定的系统属性(ro.boot.wificountrycode或ro.wifi.country)来获取默认国家码。我们开发者主要操作的,就是这个层级。
最低优先级:驱动默认值。如果连系统属性都没设置,WIFI芯片驱动(比如高通的QCA驱动)会使用其固件中编译的默认值,这个值往往是全球通用但限制最严的(比如US或00),以保证最基本的合规。
因此为了在国内进行6Ghz频段的顺利连接,以下条件是必须的:
国外购买支持6Ghz的路由器
国内/国外购买支持6Ghz的Android手机
手机更改国家码为对应频段的
通过adb变更Android国家码
注意!此种修改方式,一旦手机重启,就会失效。
第一步,先把手机Root:参见下文
PC的adb环境搭建:参见下文
打开开发者选项和USB调试

打开USB调试模式

查看手机是否连接成功
adb devices获取root权限
adb root用完,可以将root权限取消:
adb unroot读取手机当前国家码
adb shell cmd wifi get-country-code修改国家码
adb shell cmd wifi force-country-code enabled US国家码可用信道查询网站
确认新国家码
adb shell cmd wifi get-country-code
