Android10.0 高通平台移植移远4G模块调试方法

最近在调试Quectel(移远)的4G 模块 ,刚开始真是毫无头绪,毕竟第一次搞。

使用的是  EG25-G 的模,我的系统是64 位的系统

了解了这个是通过USB设备进行工作的,知道了这个,是个关键。那就在USB 的对应驱动里搞事情。

首先看框架图

Android10.0 高通平台移植移远4G模块调试方法_第1张图片

从框架图可知,这需要添加 USB 的驱动,也需要添加网卡驱动。

移远会提供一些资料,指导性文档以及 .c文件。

 

1、参考《Quectel_LTE&5G_Linux_USB_Driver_User_Guide_V2.0.pdf》 该指导文件,修改USB 中的代码的内容。

(1)在kernel/msm-4.19/drivers/usb/serial/option.c  文件中添加 VID 、PID 等

(2)在kernel/msm-4.19/drivers/usb/serial/option.c  以及 kernel/msm-4.19/drivers/usb/serial/usb_wwan.c 文件中添加零包机制

(3)在kernel/msm-4.19/drivers/usb/serial/option.c 文件中添加重置恢复机制

        在kernel/msm-4.19/drivers/usb/serial/usb-serial.c 中添加 .reset_resume = usb_serial_resume,

(4)看是否需要  Use MBIM, GobiNet or QMI_WWAN Driver ,根据文档中的提示按需处理

2、参考《Quectel_LTE&5G_Linux_USB_Driver_User_Guide_V2.0.pdf》 该指导文件,修改usb网卡的内容

移远会提供一个 qmi_wwan_q.c 的文件,将该文件复制到 kernel/msm-4.19/drivers/net/usb/ 该目录下,然后修改 该目录下的Makefile 文件。

Android10.0 高通平台移植移远4G模块调试方法_第2张图片

 然后 make bootimage 看是否报错,有报错就修改错误。

无误后,进行全编译看是否会报错。能全编译过后,将软件烧录。

3、然后根据《Quectel_Android_RIL_Driver_User_Guide_V1.9.pdf》指导文件,将移远提供的库文件 libreference-ril.so   adb push到 /vendor/lib64/目录下,然后试试看能否上网或者拨打电话了(得看你所使用的模块是否能够支持打电话或者使用数据)。

 如果是拨号的方式,应该还会使用到提供的库文件中的 chat  ip-down   ip-up 这几个,也根据指导文件,push到对应的目录下。然后重启设备。

4、如果在第三步中,验证可以上网了,也就说明改模块可用了。那就将第三步中的手动操作的部分,写成代码,然后编译的时候就会自动打包进安装包中了。

首先在 system/core/roodir/init.rc 文件中 添加以下代码

#此处的是Android10 的,低于 Android 8 版本的有另外的指令


service flash_recovery /system/bin/install-recovery.sh
    class main
    oneshot

#Android 10
service ril-daemon /vendor/bin/hw/rild -l /vendor/lib64/libreference-ril.so
    class main
    user root
    group radio cache inet misc audio sdcard_rw log
    capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW


#低于Android 8,则写入以下代码
service ril-daemon /vendor/bin/hw/rild -l /vendor/lib64/libreference-ril.so
       class main
       socket rild stream 660 root radio
       socket rild-debug stream 660 radio system 

如果找不到该文件,可以使用  godir  init.rc 命令试试看。如果存在多个,可以都看看,以确保做了无效的代码输入。

然后将 移远提供的库文件 libreference-ril.so  复制  hardware/ril/extr_reference-ril/  该目录下。然后进行全编译。

可能会发现,全编译之后,hardware/ril/extr_reference-ril/ 的文件并没有打包安装包中,因为刷机之后并不能上网。那可能是原先存在的文件,没有被编译进去,使用以下命令删除,再重新全编译。

find out/target/product/ -name *ril* | xargs rm -rf

rm -rf out/target/product/kona/system*
rm -rf out/target/product/kona/vendor*
rm -rf out/target/product/kona/super*
rm -rf out/target/product/kona/product*
rm -rf out/target/product/qssi/ve*
rm -rf out/target/product/qssi/system*

然后刷机,是不可以在系统设置中看到了运营商名称?看到了IP 地址?看到了网络的图标?恭喜你,该模块功能调通了。

总结:

1、移植USB 部分的代码,添加VID 、PID 

2、移植网卡驱动代码

3、移植 libreference-ril.so  到指令路径

4、全编译,刷机

调试方法:

在开发过程当中,需要知道自己的调试步骤到哪了,哪一步是否OK 

一、在第1部的调试过程中,如何知道 USB 设备已经找到?

开机完成后,adb shell 进设备, 输入 dmesg (消息太多的话,也可以 dmesg | grep usb)

Android10.0 高通平台移植移远4G模块调试方法_第3张图片

 其中框红的地方,就是你所添加模块的 VID 、PID 部分

如果有这个打印了,说明USB 设备是找到的。接下来就可以进行 AT 指令的测试

打开一个命令行窗口

xxxx# adb shell
root# cat /dev/ttyUSB2

然后多开一个命令行窗口

xxx # adb shell
root# echo  "AT+ GMI \r\n" > /dev/ttyUSB2

在cat的窗口上有对应的回应,那就说明是OK

二、怎样知道网卡添加成功了?

通过 dmesg 命令查看 有 qmi_wwan_q 这样的关键字 打印,那就说明网卡也是添加成功的类。

三、adb push 文件的是否,返回失败,没法push  文件进系统,咋搞?

执行这几行命令后,再push 试试

 adb disable-verity
 adb reboot
 adb remount

 所需的几个文件,在我的博客下载页中  Quectel4GFiles.tar.gz

你可能感兴趣的:(Android,linux,4G模块,移远)