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

本文共 2775 字,大约阅读时间需要 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 0x1001
    static 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/ttyUSB2
    socket rild stream 660 root radio
    socket rild-debug stream 660 radio system
    user root
    group radio cache inet misc
    service pppd_gprs /etc/ppp/init.gprs-pppd /dev/ttyUSB0
    user root
    group radio cache inet misc
    disabled

  • 四、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"
    "" AT
    OK 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/

    你可能感兴趣的文章
    nslookup 的基本知识与命令详解
    查看>>
    NSOperation基本操作
    查看>>
    NSRange 范围
    查看>>
    NSSet集合 无序的 不能重复的
    查看>>
    NSURLSession下载和断点续传
    查看>>
    NSUserdefault读书笔记
    查看>>
    NS图绘制工具推荐
    查看>>
    NT AUTHORITY\NETWORK SERVICE 权限问题
    查看>>
    NT symbols are incorrect, please fix symbols
    查看>>
    ntelliJ IDEA 报错:找不到包或者找不到符号
    查看>>
    NTFS文件权限管理实战
    查看>>
    ntko web firefox跨浏览器插件_深度比较:2019年6个最好的跨浏览器测试工具
    查看>>
    ntko文件存取错误_苹果推送 macOS 10.15.4:iCloud 云盘文件夹共享终于来了
    查看>>
    ntp server 用法小结
    查看>>
    ntpdate 通过外网同步时间
    查看>>
    ntpdate同步配置文件调整详解
    查看>>
    NTPD使用/etc/ntp.conf配置时钟同步详解
    查看>>
    NTP及Chrony时间同步服务设置
    查看>>
    NTP服务器
    查看>>
    NTP配置
    查看>>