android 6.0 EC20驱动移植
版本:android 6.0
模块:移远EC20 R2.1 PCIE接口
参考
- Quectel_Android_RIL_Driver_User_Guide_V1.6.pdf
- reference-ril/quectel_ril_porting_guide.txt
文档中有描述不全的,结合网上搜索资料,整理一下移植注意事项
- 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 - 修改: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;
- /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
- /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
- /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;
- 修改启动脚本/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
- 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(); - extract Quectel's reference-ril.zip to hardware/ril/reference-ril/
- re-build your android source code
- xxx
问题点:
- build/core/base_rules.mk:157: *** hardware/ril/reference-ril: MODULE.TARGET.EXECUTABLES.chat already defined by external/ppp/chat. Stop.
- build/core/base_rules.mk:157: *** hardware/ril/reference-ril: MODULE.TARGET.EXECUTABLES.chat already defined by external/ppp/chat. Stop.
删除external/ppp/chat
- 移植成功后,使用移动的物联卡,需要手动设置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驱动移植相关推荐
- android usb wifi驱动下载,android 平台USB wifi驱动移植及使用
一. Android平台Wifi的基本代码路径 1. Wpa_supplicant源码部分 external/wpa_supplicant_6/ 生成库libwpa_client.so ...
- android+usb转串口+唯一id,Android平台3G模块驱动移植-USB转串口
Android平台3g模块是通过ril库来支持数据.短信.彩信.电话.第三方通话.USSD等功能的.其相应的组件有:rild用来为rild socket建立文件,pppd和chat为拨号文件,libr ...
- Android 12.0 通过驱动实现禁用usb鼠标和usb键盘功能
1.1概述 在12.0的系统产品定制化开发中,在进行定制中有关于usb键盘和usb鼠标的需求中,产品要求禁止usb口挂载usb鼠标和usb键盘,所以需要要求在usb挂载类型的时候 判断如果是usb鼠标 ...
- MTK平台安卓Q 10.0 camera驱动移植——sensor
平台MTK676X 安卓:Q/10.0 1. 添加驱动程序文件 将模组厂商提供的驱动程序及调试参数文件拷贝到以下目录.厂商可能会自行客制化,但都是kernel和vendor两处下面,不一定和下面列出的 ...
- 4G模块 EC20 R2.0 USB Serial/GobiNet/QMI WWAN 驱动移植过程
4G模块 EC20 R2.0 USB Serial/GobiNet/QMI WWAN 驱动移植过程 一.开发环境 二.确定 EC20 R2.0 的基本信息 三.USB Serial 驱动移植 opti ...
- 移远EC20在linux下驱动移植
在进行驱动移植前,首先得下载linux内核源码 参考前一篇博客:https://blog.csdn.net/qq_42908042/article/details/97129502 一.增加PID&a ...
- 飞思卡尔i.MX 6Quad Android 4.2.2的LVDS屏幕驱动移植
http://blog.csdn.net/xnwyd/article/details/11671123 1 概述 平台:freescale i.MX 6Quad 4核开发板MCIMX6Q-S ...
- android LVDS屏幕驱动移植
飞思卡尔i.MX 6Quad Android 4.2.2的LVDS屏幕驱动移植 分类: Android2013-09-14 09:13 1263人阅读 评论(0) 收藏 举报 目录(?)[+] 1 ...
- 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移 ...
最新文章
- vue更新data无效,页面data没刷新 vue.set
- 怎么自动备份mysql数据库备份_3步教你一键自动备份mysql数据库的方法
- 2017 Material design 第二章第六节《富有创造性的定制方案》
- Java基础入门笔记-静态方法
- js中使用slice进行补0日期和时间
- linux使用windows中编辑的文件,格式问题
- 测试开发必备技能-Jmeter二次开发
- selenium课程笔记2--selenium操作chrome浏览器
- 服务器系统无法共享打印机驱动程序,windows-server-2003 – windows服务器共享打印机,为什么本地机器需要驱动程序?...
- Vue实现pdf、docx、jpg在线预览功能
- PPT文件怎么快速压缩?
- mate50 鸿蒙,华为Mate50Pro概念机:瀑布环绕屏+鸿蒙系统,就算涨价我也劝你买...
- 苹果开发者账号申请教程
- web前端学习之———互联网与HTML篇
- Impala String函数大全
- 送给大一新生的一些话
- 采用预训练模型来训练新的模型
- 使用python解密pdf
- 手把手教你Vue从零撸一个迷你版MVVM框架
- Orkut 试用报告