博客
关于我
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 死锁(先delete 后insert)日志分析
    查看>>
    MySQL 死锁了,怎么办?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 添加列,修改列,删除列
    查看>>
    mysql 添加索引
    查看>>
    MySQL 添加索引,删除索引及其用法
    查看>>
    mysql 状态检查,备份,修复
    查看>>
    MySQL 用 limit 为什么会影响性能?
    查看>>
    MySQL 用 limit 为什么会影响性能?有什么优化方案?
    查看>>
    MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)
    查看>>
    mysql 用户管理和权限设置
    查看>>
    MySQL 的 varchar 水真的太深了!
    查看>>
    mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
    查看>>
    MySQL 的instr函数
    查看>>
    MySQL 的mysql_secure_installation安全脚本执行过程介绍
    查看>>
    MySQL 的Rename Table语句
    查看>>
    MySQL 的全局锁、表锁和行锁
    查看>>
    mysql 的存储引擎介绍
    查看>>
    MySQL 的存储引擎有哪些?为什么常用InnoDB?
    查看>>