登录后免广告,享受更多奶昔会员权益!
您需要 登录 才可以下载或查看,没有账号?注册
×
链路通、IMS通、ePDG真IP、WFC也能HOME,却无法拉起WiFi calling使用只能漫游。 【提示】本文档由AI辅助整理并经过人工校对修改。本人新手小白,操作也是在agent workbuddy的指导下开展的,如有错误敬请斧正,感激不尽,仅作自身经验分享。 一、背景与目标手机:小米13,国行HyperOS3最新版本系统,系统里可以打开WLAN通话开关。 SIM卡:CTExcel UK的eSIM配置文件,写入了一张小白卡,莫名其妙拉起WiFi calling激活后,无法复现在中国大陆稳定拉起VoWiFi。 上网链路:手机→电脑共享出来的WiFi热点(当网关)→UK节点→公网。 定位伪装:用FakeTraveler把手机定位模拟成伦敦(51.5074, -0.1278),关掉WLAN/BT扫描、电池设为无限制。 目标:在中国大陆用VoWiFi打CTExcel的电话(比如888),免费;避免每通电话都走蜂窝漫游被扣 £0.2。 已确认:eSIM此前已经激活过,卡能正常出蜂窝漫游信号(说明卡本身没问题,问题在怎么让它走WiFi而不是漫游)。 二、参考的帖子(先致谢各位大佬)这次排查主要照着下面几位大佬的帖子葫芦画我的瓢,链接都放上: 三、链路与UDP支持性验证(照葫芦画瓢)VoWiFi的本质是手机用IKEv2/IPsec(走UDP 500/4500)去连运营商的ePDG网关。所以节点/代理能不能转发UDP是第一道关。我按大佬们的方法做了实测。 3.1节点与协议节点协议Hysteria2,支持UDP转发,这一跳不用担心。 电脑网关端用的是Clash的TUN模式(虚拟网卡抓全部流量,含UDP)。 3.2 DNS解析验证(暴露了fake-ip污染)在电脑网关上直接nslookup走代理,先看DNS有没有被客户端本地劫持: - <font face="Tahoma"># 早期:客户端DNS是fake-ip模式
- nslookup example.com 8.8.8.8
- 服务器: UnKnown
- Address: 8.8.8.8
- 名称: example.com
- Address: 198.18.0.50 <-- 假IP!属于Clash/sing-box的fake-ip保留段198.18.0.0/15</font>
复制代码
返回198.18.x说明DNS被本地fake-ip劫持了——这恰恰会害死IKEv2:手机解析ePDG域名会拿到假IP,IPsec带自己的SPI/协议号,fake-ip重定向对IPsec经常失灵。于是我照CRENET的帖把DNS覆写改成Redir-Host(真实DNS)后重测: - <font face="Tahoma"># 改成Redir-Host(真实DNS)之后
- nslookup example.com 8.8.8.8
- 服务器: dns.google
- Address: 8.8.8.8
- 名称: example.com
- Addresses: 104.20.23.154 <-- 真公网IP,不再假IP
- 172.66.147.243</font>
复制代码
这次PTR反查到dns.google、返回真实公网IP,说明UDP/53真的往返到了8.8.8.8——UDP出网是通的,且fake-ip污染已消除。 3.3 ePDG域名解析(手机侧adb实测)手机连上电脑热点后,在手机侧确认ePDG(EE的WFC网关)解析到的是真IP而不是假IP: - <font face="Tahoma">adb shell "ping -c1 epdg.epc.mnc033.mcc234.pub.3gppnetwork.org"
- PING epdg.epc.mnc033.mcc234.pub.3gppnetwork.org (31.94.76.2) 56(84) bytes of data.
- --- ... ping statistics ---
- 1 packets transmitted, 0 received, 100% packet loss <-- 正常!ePDG不回ICMP,丢包≠不可达</font>
复制代码
解析结果31.94.76.2是EE真实的ePDG集群IP(不在198.18.x假IP段),说明fake-ip没污染到手机侧。 100% packet loss是常态:ePDG是安全网关,本来就不回ping,能解析出真IP并成功发出探测包,就说明DNS+路由路径是通的。 结论:UDP出网通畅、ePDG解析到真IP、IKEv2/IPsec隧道在链路层是可达的。这一步排除网络不通。 四、WFC注册与逐层排查(AI:workbuddy指导adb)链路没问题,就上adb看手机内部状态。下面这些命令和结果就是和各位大佬照葫芦画瓢的部分。 4.1 IMS服务态:从NO_IMS翻成READY一开始dumpsys phone里IMS是UNAVAILABLE: - <font face="Tahoma">adb shell "dumpsys phone | grep -iE 'ImsStateCallback|NO_IMS|hasConfig|READY'"
- Listener={slotId=0, subId=4, state=UNAVAILABLE, reason=NO_IMS_SERVICE_CONFIGURED, hasConfig=false}</font>
复制代码
关键操作(注意是slot 0,不是原帖某些写法的slot 1;我的CTExcel在slot 0): - <font face="Tahoma">adb shell cmd phone ims disable -s 0
- adb shell cmd phone ims enable -s 0
- Start-Sleep -Seconds 25 # PowerShell写法,等IMS重新注册</font>
复制代码
翻成READY: - <font face="Tahoma">Listener={slotId=0, subId=4, state=READY, reason=READY, hasConfig=true}
- CallbackWrapper={subId=4, feature=MMTEL, reason=READY, pkg=com.xiaomi.registration}</font>
复制代码
4.2 WLAN IMS注册态:能HOME,但会flapping看WiFi Calling的注册状态(首行即当前态): - <div align="left"><font face="Tahoma">adb shell "dumpsys telephony.registry | grep -oE 'transportType=WLAN registrationState=[A-Z_]+'"</font></div><div align="left"><font face="Tahoma">transportType=WLAN registrationState=HOME <-- 期望状态:WFC已在家注册</font></div>
复制代码
但历史上它会在HOME ↔ UNKNOWN ↔ NOT_REG_OR_SEARCHING之间反复横跳(flapping),这是后面稳定性的隐患。当前聚合态(CTExcel卡)的样子: - <div align="left"><font face="Tahoma">mVoiceRegState=0(IN_SERVICE) <-- 语音在服务中</font></div><div align="left"><font face="Tahoma">mDataRegState=0(IN_SERVICE) <-- 数据在服务中</font></div><div align="left"><font face="Tahoma">domain=PS transportType=WLAN registrationState=HOME accessNetworkTechnology=IWLAN</font></div><div align="left"><font face="Tahoma">domain=CS transportType=WWAN registrationState=DENIED <-- 蜂窝被拒绝(手动选网后)</font></div>
复制代码
4.3 WFC相关设置(settings put global)确认并补齐了这些键(漫游态那组原本是null,是后来补的): - <div align="left"><font face="Tahoma">wfc_ims_enabled=1</font></div><div align="left"><font face="Tahoma">wfc_ims_mode=1 (WIFI_PREFERRED,AOSP默认=WiFi优先)</font></div><div align="left"><font face="Tahoma">wfc_ims_mode1=1 (slot0专属键)</font></div><div align="left"><font face="Tahoma">wfc_ims_roaming_enabled=1</font></div><div align="left"><font face="Tahoma">wfc_ims_roaming_enabled1=1</font></div><div align="left"><font face="Tahoma">wfc_ims_roaming_mode=1</font></div><div align="left"><font face="Tahoma">wfc_ims_roaming_mode1=1 (漫游态也允许WFC,且WiFi优先)</font></div>
复制代码
4.4 AI(workbuddy)发现:carrier_config把WFC判成不可用 dumpsys carrier_config(CTExcel这张卡subId=4)里清清楚楚: - <div align="left"><font face="Tahoma">carrier_wfc_ims_available_bool = false <-- 核心闸门:WFC可用性=false</font></div><div align="left"><font face="Tahoma">carrier_default_wfc_ims_roaming_enabled_bool = false</font></div><div align="left"><font face="Tahoma">carrier_wfc_supports_wifi_only_bool = false</font></div><div align="left"><font face="Tahoma">carrier_wfc_supports_ims_preferred_bool = false</font></div><div align="left"><font face="Tahoma">carrier_config_applied_bool = false <-- 这张卡根本没套用任何carrier config</font></div>
复制代码
原因:国行HyperOS没有CTExcel(MCC/MNC 234/33,英国MVNO)的carrier config,于是落到默认值——WFC不可用。这恰好对应手机里的显示: 拨 *#*#4636#*#*→手机信息1→IMS状态:WLAN语音通话:不支持该付费方式。
AI分析:它比拨号器优先走蜂窝更底层:是一道availability闸门。只要蜂窝有语音可用,就走蜂窝(£0.2);只有当蜂窝没有语音时,才fallback到WLAN IMS语音(而EE网络侧其实接受这条WLAN语音→免费)。
4.5飞行模式现象(和各位大佬一致)这部分现象跟大佬们的实录一模一样,列出来对照: 飞行模式开→拨号器直接拒拨:请关闭飞行模式或连接至无线网络才能拨打电话。
蜂窝一旦驻留(显示漫游信号)→拨号器一律走蜂窝漫游 £0.2。 五、我的完整时间线(血泪史)下面按日期把整个过程写清楚,方便大家看我是怎么一步步从能通走到彻底不通的。 5.1 7月29日凌晨:误打误撞拉起VoWiFi连着电脑热点,重启后没有按照主流教程保持飞行模式,而是直接关闭飞行模式打开ctexcel卡移动数据后拨888误打误撞把WiFi Calling拉起来了,拨888打通了。 通话过程中,手机上明确显示了VoWiFi标志。 通话结束后,VoWiFi标志消失。 随后收到CTExcel的激活短信,但手机没信号了。 我不停地重启飞行模式,又成功过一次VoWiFi。
5.2 7月30日:想稳定复现,反而得到一串诡异现象我打算稳定复现昨天的成功,步骤是:连电脑热点→开飞行模式→拔卡→重启→插卡。结果插卡后显示的是漫游(不再是没信号)。之后出现一个固定序列: 打888→漫游通话能打通(走蜂窝,会扣费)。 挂断后紧接着再打888→VoWiFi标志再次出现,但通话不通,几秒后自动挂断。 自动挂断后VoWiFi标志消失;此时漫游信号明明是满格,却无法打漫游电话、也无法发短信,只能重启手机。 之后无论怎么重复上面的操作,都陷入同一个死循环:漫游电话拨通+重拨888出VoWiFi标志但通话不通+挂断后漫游满格却无服务。 5.3 7月31日:彻底只能走漫游再次连电脑热点→飞行模式→拔卡→关定位→重启→插卡→关飞行模式。 无论怎么打,都是漫游通话;再也复现不了7/30那天第一次漫游+第二次VoWiFi的序列。 打888默认就是漫游,WiFi Calling再也拉不起来。 5.4 8月1日(今天):系统用adb排查+手动选网昨天之后我换个思路,参照luxun大佬《CTExcel UK大陆激活:链路搭建与逐层排查记录》——链路搭建思路、逐层排查方法的主要参考,用workbuddy帮我把手机内部状态一层层扒开(就是上面第四节的内容),并做了新的尝试: 确认WFC设置、IMS已READY、ePDG解析到真IP 31.94.76.2。 AI发现carrier_config里carrier_wfc_ims_available_bool=false这道闸门(国行无CTExcel配置)。 关键新尝试:关闭自动选择网络运营商(改手动选网)→让蜂窝注册变成DENIED(等于无服务),逼框架只能走WFC。 手动选网后的状态: isManualNetworkSelection=true(manual) <-- 手动选网已生效 transportType=WLAN registrationState=HOME <-- WFC仍在家 transportType=WWAN registrationState=DENIED <-- 蜂窝被拒绝=无服务 mVoiceRegState=0(IN_SERVICE) accessNetworkTechnology=IWLAN <-- 语音改由IWLAN(WiFi Calling) 提供
依旧拨不了电话,AI说就只剩root+ Magisk翻闸门这一条路。 六、当前结论 & 想请教大家的问题已经实打实确认没问题的: 链路UDP出网通畅(TUN + Redir-Host真实DNS)。 ePDG解析到真IP 31.94.76.x,IKEv2/IPsec隧道在链路层可达。 IMS服务READY、hasConfig=true;WFC能注册到HOME。 卡住的点: 国行HyperOS没有CTExcel的carrier config,carrier_wfc_ims_available_bool=false,把WFC可用性判成不可用;导致蜂窝在时拨号器走漫游,蜂窝无时才fallback WFC。 WLAN IMS注册会flapping(HOME↔UNKNOWN↔NOT_REG),稳定性存疑。 模块)——尚未做。 想请教各位大佬/同好几个问题: 有没有人用国行小米+非原生WFC的卡这种组合成功过稳定VoWiFi? |