Android 出现4G模块无法上网问题

2024-06-04 7583阅读

作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习

擅长领域:驱动开发,嵌入式软件开发,BSP开发

作者主页:一个平凡而乐于分享的小比特的个人主页

文章收录专栏:RK3568_Android11_驱动开发,此专栏为RK3568开发板Android11系统开发,学习记录

欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

背景:

出现这个问题之前,4G模块EM05在Linux系统可以通过ECM模式上网,但是到了Android系统发现usb0网络无法获取到IP地址,从而无法上网。在Windows和Linux系统下会有后台进程帮我们自动获取IP,只需要我们把模块设置成ECM模式就可以了,但是Android下没有这个服务

RILD介绍

Android系统带的RIL机制,Android RIL提供了Android电话服务和无线电硬件之间的抽象层。Android RIL在HAL(Hardware Abstract Layer)层(C++层)由三个部分组成:

  • RILD是系统的守护进程,主要用于初始化LIBRIL以及启动厂商自定义的Vendor RIL;
  • LIBRIL被RILD初始化完成后,用于与Vendor RIL之间进行交互,负责接收、发送指令;
  • Vendor RIL是第三方厂商自定义的一个库,用于向Modem发送指令或者接收来自LIBRIL或者Modem的指令。

    三者之间的关系图如下所示:

    Android 出现4G模块无法上网问题 第1张

    从这里可以看到,RILD在启动时,负责将LibRil以及Vendor RIL进行初始化,将相应的回调函数以及调用接口进行注册,LibRIL向vendor RIL提供了接口RIL_Env,当Vendor有消息时,利用该回调返回;而Vendor RIL 同样提供了接口RIL_RadioFunctions,给LibRIl调用。

    在Android系统下存在一个rild_damon这个守护进程,RILD(RIL Daemon)是系统的守护进程,系统已启动,就会一直运行。手机开机时,kernel完成初始化后,Android启动一个初始化进程Init用于加载系统基础服务,如文件系统,zygote进程,服务管家ServiceManager,以及RILD

    解决方法:

    在/home/android/rk3568/android11/hardware/ril/rild下存在一个rild.rc文件,在这个文件中配置了rild_damon这个服务,也是解决这个问题的关键。

    1. 获取移远公司提供的libreference-ril.so , 在系统执行rild可执行文件的时候会链接到这个动态库

    2. 将libreference-ril.so添到/home/android/rk3568/android11/vendor/rockchip/common/phone/lib目录下,并重命名为libreference-ril-em05.so

      Android 出现4G模块无法上网问题 第2张

    3. 修改/home/android/rk3568/android11/vendor/rockchip/common/phone/phone.mk

    Android 出现4G模块无法上网问题 第3张

    (这里添加这个动态库的目的是让最后生成的根文件系统里的/vendor/lib64/下存在libreference-ril-em05.so,如果不存在这个动态库,rild_daemon守护进程会一直打印退出重启信息,直到/vendor/lib64/下存在该动态库)

    1. 修改/home/android/rk3568/android11/hardware/ril/rild/rild.rc

      Android 出现4G模块无法上网问题 第4张

    ​ (从第一行可以看到,在启动ril-daemon这个服务的时候,系统会调用/vendor/bin/hw/rild程序,该程序需要链接到动态库)

    修改好上面内容后,重新编译,烧录新的镜像到开发板中

    测试结果:

    1. 将EM05上电(上电流程参考RK3568—4G模块驱动实验)

    2. 上电后会出现如下信息

      Android 出现4G模块无法上网问题 第5张

    (中间的denied信息是由于SELinux下权限问题,暂时先不用管)

    我们通过ifconfig usb0查看usb0的信息

    Android 出现4G模块无法上网问题 第6张

    通过ping www.baidu.com测试上网功能

    Android 出现4G模块无法上网问题 第7张


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]