本文共 2732 字,大约阅读时间需要 9 分钟。
在Android 2.1系统中,调试华为EM770W 3G模块并实现GPRS上网需要从kernel到应用层分步骤完成以下工作:
采用华为EM770W模块,该模块支持WCDMA网络。由于华为提供的库只支持Android 2.2,对Android 2.1进行了以下修改:
**kernel驱动修改
在 menuconfig 中进行以下设置:进一步修改 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
目录下找到 ttyUSB0
到 ttyUSB5
与 ppp
相关设备文件。
在 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
创建以下脚本文件:
/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上网配置。
/etc/ppp/pppd call gprs
等命令启动GPRS上网。/dev/ppp0
等接口状态,添加路由规则并配置DNS。通过以上步骤,完成了在 Android 2.1 系统中使用华为 EM770W 模块实现GPRS上网功能的配置与调试。
转载地址:http://uekzk.baihongyu.com/