博客
关于我
Android 2.1下调试3G模块
阅读量:748 次
发布时间:2019-03-23

本文共 2732 字,大约阅读时间需要 9 分钟。

3G模块调试与GPRS上网实现指南

在Android 2.1系统中,调试华为EM770W 3G模块并实现GPRS上网需要从kernel到应用层分步骤完成以下工作:

一、硬件与驱动准备

采用华为EM770W模块,该模块支持WCDMA网络。由于华为提供的库只支持Android 2.2,对Android 2.1进行了以下修改:

  • **kernel驱动修改

    在 menuconfig 中进行以下设置:

    • 启用 OHCI HCD 支持。
    • 打开网络设备支持,并配置PPP协议相关选项,包括多线路、过滤和异步/同步串口支持。
    • 启用 USB 支持,并配置适用于GSM/CDMA模ulem的USB驱动。

    进一步修改 option.c 驱动文件,增加以下定义:

    #define EM770W_OPTION_VENDOR_ID 0x12d1#define EM770W_OPTION_PRODUCT_COLT 0x1001static struct usb_device_id option_ids[] = {    { USB_DEVICE(EM770W_OPTION_VENDOR_ID, EM770W_OPTION_PRODUCT_COLT) },};

    相关修改完成后,插入模块后可在 /dev 目录下找到 ttyUSB0ttyUSB5ppp 相关设备文件。


  • 二、RIL(参考电路层)代码修改

    ril/reference-ril 中对相关代码进行修改:

  • Android.mk配置

    Android.mk 中添加:

    LOCAL_CFLAGS += -DHUAWEI_EM770W
  • atchannel.c功能补充

    修改 ril/reference-ril/atchannel.c 文件,添加以下内容:

    #include 

    增加线程读取URC数据的功能:

    static int urc_fd = -1;static char s_URCBuffer[MAX_AT_RESPONSE + 1];static char *s_URCBufferCur = s_URCBuffer;static pthread_t s_tid_reader_urc;ssize_t urc_readline() {    /* ... [具体实现细节] ... */}static void *urc_readerLoop(void *arg) {    /* ... [线程执行逻辑] ... */}

    相关线程处理完成后,确保通过 pthread_create 创建成功并丢弃后台线程。

  • ril.c功能补充

    ril/rild.c 中添加针对 EM770W 模块的处理:

    #if 0#endif/* ... [具体实现细节] ... */
  • licaoppia


    三、网络配置与属性修改

    为完成网络和GPRS功能,需修改系统属性文件:

  • init.gprs-pppd属性

    system/etc/init.gprs-pppd 文件中添加运行脚本:

    PPPD_PID=/system/bin/pppd call gprs $*PPPPD_EXIT=$?PPPD_PID=$!/system/bin/log -t pppd "pppd exited with $PPPD_EXIT"/system/bin/setprop "net.gprs.ppp-exit" "$PPPD_EXIT"exit $PPPD_EXIT
  • ttyUSB设备属性

    修改 system/core/init/devices.c ,在设备权限配置中添加:

    {    "/dev/ttyUSB0",  // 列出对应设备    0777,          // 权限    AID_RADIO,      // 所属用户    AID_RADIO,      // 所属组    0              // 其他属性},
  • pppd_gprs服务属性

    修改 system/core/init/property_service.c,在 property_perms 和 control_perms 中添加相关规则:

    // Abilities{ "net.ppp0.", AID_RADIO, 0 },// Control permissions{ "pppd_gprs", AID_RADIO, AID_LOG },
  • init.rc服务开机启动

    修改 init.rc 文件添加以下服务:

    service rild /system/bin/rild -l libreference-ril.so -- -d /dev/ttyUSB2socket rild stream 660 root radiosocket rild-debug stream 660 radio systemuser rootgroup radio cache inet miscservice pppd_gprs /etc/ppp/init.gprs-pppd /dev/ttyUSB0user rootgroup radio cache inet miscdisabled

  • 四、GPRS拨号上网实现

    创建以下脚本文件:

    • /system/etc/ppp/gprs-connect-chat
    • /system/etc/ppp/gprs-disconnect-chat
    • /system/etc/ppp/ip-up
    • /system/etc/ppp/ip-down
    • /system/etc/ppp/peers/gprs

    例如,gprs-connect-chat 文件内容:

    ABORT "BUSY"ABORT "NO CARRIER"ABORT "ERROR"ABORT "+CME ERROR: 100""" ATOK AT+CGDCONT=1,"IP","CMNET"

    通过在 Settings -> Wireless controls -> Mobile networks -> Access Points Name 中添加APN,完成GPRS上网配置。


    五、使用说明

  • 模块上电:连接3G模块电源。
  • 注册网络:扫描并选择合适的APN,保存设置即可完成网络注册。
  • Pppd启动:通过 /etc/ppp/pppd call gprs 等命令启动GPRS上网。
  • 数据接入:检查 /dev/ppp0 等接口状态,添加路由规则并配置DNS。
  • 通过以上步骤,完成了在 Android 2.1 系统中使用华为 EM770W 模块实现GPRS上网功能的配置与调试。

    转载地址:http://uekzk.baihongyu.com/

    你可能感兴趣的文章
    mysql 输入密码秒退
    查看>>
    mysql 递归查找父节点_MySQL递归查询树状表的子节点、父节点具体实现
    查看>>
    mysql 通过查看mysql 配置参数、状态来优化你的mysql
    查看>>
    mysql 里对root及普通用户赋权及更改密码的一些命令
    查看>>
    Mysql 重置自增列的开始序号
    查看>>
    mysql 锁机制 mvcc_Mysql性能优化-事务、锁和MVCC
    查看>>
    MySQL 错误
    查看>>
    mysql 随机数 rand使用
    查看>>
    MySQL 面试题汇总
    查看>>
    MySQL 面试,必须掌握的 8 大核心点
    查看>>
    MySQL 高可用性之keepalived+mysql双主
    查看>>
    MySQL 高性能优化规范建议
    查看>>
    mysql 默认事务隔离级别下锁分析
    查看>>
    Mysql--逻辑架构
    查看>>
    MySql-2019-4-21-复习
    查看>>
    mysql-5.6.17-win32免安装版配置
    查看>>
    mysql-5.7.18安装
    查看>>
    MySQL-Buffer的应用
    查看>>
    mysql-cluster 安装篇(1)---简介
    查看>>
    mysql-connector-java.jar乱码,最新版mysql-connector-java-8.0.15.jar,如何愉快的进行JDBC操作...
    查看>>