项目场景:

rk3288 android7.1.2 gm191模块调试


问题描述:

        gm191模块开机后自动拨号,开启gps定位功能,并同时使用ping命令访问百度,在一段时间后会出现4g模块断网,等待一点时间后,4g上网功能恢复。


原因分析:

        触发了framework 保活机制。这个保活机制就是在连上网后,send了数据包但是recv的数据包为0,就会累积send的数据包。当累积send的数据包大于10,就会触发recovery机制,第一次recovery只会列出当前网络状态,第二次就会断网重连。

        此问题是在定位功能与上网功能同时开启的时候才会出现,基本确定是模块问题,后与模块供应商沟通,并未找到好的结局办法。


解决方案:

临时解决方案:增加send包累计次数,可以大概率避免触发recovery机制

frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DcTracker.java

@@ -137,7 +137,7 @@ public class DcTracker extends Handler {
     // 10 min. default polling interval when screen is off.
     private static final int POLL_NETSTAT_SCREEN_OFF_MILLIS = 1000*60*10;
     // Default sent packets without ack which triggers initial recovery steps
-    private static final int NUMBER_SENT_PACKETS_OF_HANG = 10;
+    private static final int NUMBER_SENT_PACKETS_OF_HANG = 200;
 
     // Default for the data stall alarm while non-aggressive stall detection
     private static final int DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS_DEFAULT = 1000 * 60 * 6;

修改send包累计次数后,测试未出现过4g断网问题

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐