Android11 连接车机热点无法上网问题分析

文章讨论了车机开启热点后,手机连接不上外网的问题,原因在于高通ro.radio.noril设置影响了网络切换广播,导致车机未为移动网络添加转发路由。解决方法是将ro.radio.noril改为false并修复相关代码流程。
摘要由CSDN通过智能技术生成

1.背景

偶现车机自身有网,开启热点,手机连接无法上网问题,经过分析找出必现步骤:

  1. 车机使用移动网络打开热点
  2. 车机连接wifi网络
  3. 车机断开wifi网络

2.问题原因

手机连接车机热点,想要访问外网,需要车机添加一条转发路由:
“from all iif wlan1 lookup vlan9”

按必现步骤操作之后,wifi断掉,车机没有重新为移动网络添加对应的路由,手机的数据包就不会被转发到APN3网卡,导致无法上网。

3.分析

在这里插入图片描述

根本原因如上述代码所示,高通将ro.radio.noril被设置为了true,ConnectivityService源码中读取ro.radio.noril属性,来决定是否把Mobile类型的网络加入到支持列表,如果对应的网络不在支持列表,则发生网络切换的时候(例如关闭wifi,默认网络重新切换到APN3时),系统不会发送新的默认网络连接广播,代码如下:
在这里插入图片描述

问题发生的时候,即断掉wifi之后,会走到上述代码流程,isTypeSupported(type) 判断新的网络是否是支持的类型,由于ro.radio.noril为true,所以直接return,后续不会再发送新的网络连接的广播。

而且热点模块监听了网络连接广播,只有收到新的网络连接,才会为新的网络添加转发路由,代码如下:
在这里插入图片描述

最终调到netd,配置新网络转发路由:

在这里插入图片描述

ro.radio.noril 改为 false之后,正常配置路由的log流程:

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值