版本:android 6.0

模块:移远EC20 R2.1 PCIE接口

参考

  • Quectel_Android_RIL_Driver_User_Guide_V1.6.pdf
  • reference-ril/quectel_ril_porting_guide.txt

文档中有描述不全的,结合网上搜索资料,整理一下移植注意事项

  1. Linux Kernel Configure by "make menuconfig ARCH=arm64"            
      1.1 USB Driver Configure for UC15/UC20/EC20
        Device Drivers  --->
          [*] USB support  --->
            <*> USB Serial Converter support
              [*] USB Generic Serail Driver
              [*] USB Driver for GSM and CMDA modems
  2. 修改:autochips/kernel/drivers/usb/serial/option.c  文件,添加EC20模块的注册时的VID和PID号,以及生成设备阶段的接口4用于网络设备
    static const struct usb_device_id option_ids[] = {{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6000)}, /* ZTE AC8700 */{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000)}, /* SIMCom SIM5218 *///EC20 yiyuan 4G LTE module configure#if  1//Added by Quectel{ USB_DEVICE(0x05C6, 0x9090) }, /* Quectel UC15 */{ USB_DEVICE(0x05C6, 0x9003) }, /* Quectel UC20 */{ USB_DEVICE(0x05C6, 0x9215) }, /* Quectel EC20 */{ USB_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC25/EC20 R2.0 */{ USB_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21 */#endif{ USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6280) },
    }static int option_probe(struct usb_serial *serial,const struct usb_device_id *id)
    {struct usb_interface_descriptor *iface_desc =&serial->interface->cur_altsetting->desc;struct usb_device_descriptor *dev_desc = &serial->dev->descriptor;#if 1 //Added by Quectel//Quectel UC20's interface 4 can be used as USB Network deviceif (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) && serial->dev->descriptor.idProduct == cpu_to_le16(0x9003)&& serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)return -ENODEV;//Quectel EC20's interface 4 can be used as USB Network deviceif (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) && serial->dev->descriptor.idProduct == cpu_to_le16(0x9215)&& serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)return -ENODEV;//Quectel EC25&EC21 's interface 4 can be used as USB Network deviceif (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C)&& serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)return -ENODEV;
    #endif/* Never bind to the CD-Rom emulation interface */if (iface_desc->bInterfaceClass == 0x08)return -ENODEV;
    
  3. /drivers/usb/serial/qcserial.c 新增
     static const struct usb_device_id id_table[] = {
    #if 1 //Added by Quectel
    { USB_DEVICE(0x05C6, 0x9090) }, /* Quectel UC15 */
    { USB_DEVICE(0x05C6, 0x9003) }, /* Quectel UC20 */
    { USB_DEVICE(0x05C6, 0x9215) }, /* Quectel EC20 */
    { USB_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC25/EC20 R2.0 */
    { USB_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21 */
    #endif
  4. /drivers/net/usb/qmi_wwan.c 新增
     #if 1 //Added by Quectel
    {QMI_GOBI_DEVICE(0x05C6, 0x9090) }, /* Quectel UC15 */
    {QMI_GOBI_DEVICE(0x05C6, 0x9003) }, /* Quectel UC20 */
    {QMI_GOBI_DEVICE(0x05C6, 0x9215) }, /* Quectel EC20 */
    {QMI_GOBI_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC25/EC20 R2.0 */
    {QMI_GOBI_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21 */
    #endif
  5. /drivers/usb/serial/usb_wwan.c 新增
     static struct urb *usb_wwan_setup_urb(struct usb_serial *serial, int endpoint,
    int dir, void *ctx, char *buf, int len,void (*callback) (struct urb *))#if 1  //Added by Quectel for Zero Packet
    if (dir == USB_DIR_OUT) {
    struct usb_device_descriptor *desc = &serial->dev->descriptor;
    if (desc->idVendor == cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9090))
    urb->transfer_flags |= URB_ZERO_PACKET;
    if (desc->idVendor == cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9003))
    urb->transfer_flags |= URB_ZERO_PACKET;
    if (desc->idVendor == cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9215))
    urb->transfer_flags |= URB_ZERO_PACKET;
    if (desc->idVendor == cpu_to_le16(0x2C7C))
    urb->transfer_flags |= URB_ZERO_PACKET;
    }
    #endif
    return urb;
  6. 修改启动脚本/system/core/rootdir/init.rc
    service ril-daemon /system/bin/rild -l /system/lib64/libreference-ril.soclass mainsocket rild stream 660 root radiosocket rild-debug stream 666 radio systemuser rootgroup radio cache inet misc audio sdcard_rw logservice quectel-pppd /etc/ppp/init.quectel-pppdclass mainuser rootgroup radio cache inet misc logdisabled
    
  7. modifying the Right of service ril-daemon
        serivce ril-daemon require root privilege. 
        comment out the function switchUser() in the file hardware/ril/rild/rild.c. as below:
        OpenLib:
        #endif
          //switchUser();
  8. extract Quectel's reference-ril.zip to hardware/ril/reference-ril/
  9. re-build your android source code
  10. xxx
     

问题点:

  1. build/core/base_rules.mk:157: *** hardware/ril/reference-ril: MODULE.TARGET.EXECUTABLES.chat already defined by external/ppp/chat.  Stop.
  2. build/core/base_rules.mk:157: *** hardware/ril/reference-ril: MODULE.TARGET.EXECUTABLES.chat already defined by external/ppp/chat.  Stop.
删除external/ppp/chat
  1. 移植成功后,使用移动的物联卡,需要手动设置APN为CMIOT才能正常上网

添加CMIOT到系统默认APN中,一般有下面几个位置
           1. frameworks/base/core/res/res/xml/apns.xml

2. 我的A64在: device/softwinner/common/rild/apns-conf_sdk.xml

3. RK平台中,采用此路径: device/rockchip/common/phone/etc/apns-full-conf.xml

添加内容为:

<!-- add by zhangrl -->
<apn carrier="CMIOT" mcc="460" mnc="04" apn="CMIOT" type="default,supl" />

android 6.0 EC20驱动移植相关推荐

  1. android usb wifi驱动下载,android 平台USB wifi驱动移植及使用

    一.   Android平台Wifi的基本代码路径 1.       Wpa_supplicant源码部分 external/wpa_supplicant_6/ 生成库libwpa_client.so ...

  2. android+usb转串口+唯一id,Android平台3G模块驱动移植-USB转串口

    Android平台3g模块是通过ril库来支持数据.短信.彩信.电话.第三方通话.USSD等功能的.其相应的组件有:rild用来为rild socket建立文件,pppd和chat为拨号文件,libr ...

  3. Android 12.0 通过驱动实现禁用usb鼠标和usb键盘功能

    1.1概述 在12.0的系统产品定制化开发中,在进行定制中有关于usb键盘和usb鼠标的需求中,产品要求禁止usb口挂载usb鼠标和usb键盘,所以需要要求在usb挂载类型的时候 判断如果是usb鼠标 ...

  4. MTK平台安卓Q 10.0 camera驱动移植——sensor

    平台MTK676X 安卓:Q/10.0 1. 添加驱动程序文件 将模组厂商提供的驱动程序及调试参数文件拷贝到以下目录.厂商可能会自行客制化,但都是kernel和vendor两处下面,不一定和下面列出的 ...

  5. 4G模块 EC20 R2.0 USB Serial/GobiNet/QMI WWAN 驱动移植过程

    4G模块 EC20 R2.0 USB Serial/GobiNet/QMI WWAN 驱动移植过程 一.开发环境 二.确定 EC20 R2.0 的基本信息 三.USB Serial 驱动移植 opti ...

  6. 移远EC20在linux下驱动移植

    在进行驱动移植前,首先得下载linux内核源码 参考前一篇博客:https://blog.csdn.net/qq_42908042/article/details/97129502 一.增加PID&a ...

  7. 飞思卡尔i.MX 6Quad Android 4.2.2的LVDS屏幕驱动移植

    http://blog.csdn.net/xnwyd/article/details/11671123 1      概述 平台:freescale i.MX 6Quad 4核开发板MCIMX6Q-S ...

  8. android LVDS屏幕驱动移植

    飞思卡尔i.MX 6Quad Android 4.2.2的LVDS屏幕驱动移植 分类: Android2013-09-14 09:13 1263人阅读 评论(0) 收藏 举报 目录(?)[+] 1   ...

  9. 3g android4 移植 飞思卡尔i.MX 6Quad Android 4.2.2的中兴和Ublox 3G驱动移植 Android——4.2 - 3G移植之路

    点击打开链接 3g android4 移植 点击打开链接 飞思卡尔i.MX 6Quad Android 4.2.2的中兴和Ublox 3G驱动移植 点击打开链接  Android--4.2 - 3G移 ...

最新文章

  1. vue更新data无效,页面data没刷新 vue.set
  2. 怎么自动备份mysql数据库备份_3步教你一键自动备份mysql数据库的方法
  3. 2017 Material design 第二章第六节《富有创造性的定制方案》
  4. Java基础入门笔记-静态方法
  5. js中使用slice进行补0日期和时间
  6. linux使用windows中编辑的文件,格式问题
  7. 测试开发必备技能-Jmeter二次开发
  8. selenium课程笔记2--selenium操作chrome浏览器
  9. 服务器系统无法共享打印机驱动程序,windows-server-2003 – windows服务器共享打印机,为什么本地机器需要驱动程序?...
  10. Vue实现pdf、docx、jpg在线预览功能
  11. PPT文件怎么快速压缩?
  12. mate50 鸿蒙,华为Mate50Pro概念机:瀑布环绕屏+鸿蒙系统,就算涨价我也劝你买...
  13. 苹果开发者账号申请教程
  14. web前端学习之———互联网与HTML篇
  15. Impala String函数大全
  16. 送给大一新生的一些话
  17. 采用预训练模型来训练新的模型
  18. 使用python解密pdf
  19. 手把手教你Vue从零撸一个迷你版MVVM框架
  20. Orkut 试用报告

热门文章

  1. ReactNative系列之十九表情emoji与文字混排的两种方案实现
  2. 弹性计算双周刊 第20期
  3. Python 与金融科技5|批量抓取并保存上证50的交易数据
  4. ElasticSearch底层Lucene的执行流程与细节
  5. 单片机8x8点阵让数字0从右到左依次显示循环
  6. Android App使用Edge大声朗读功能
  7. 目标检测论文解读复现【NO.21】基于改进YOLOv7的小目标检测
  8. 计算机视觉与摄影测量
  9. 投资学 | 投资日记(2)
  10. linux记事本的文本换到win10 换行失效的问题