Android4.2 Quectel EC20 R2.1模块移植
注意:
?本文檔不支持熱插拔,本文使用GobiNET方式實現4G上網,并沒使用PPPD模式。
1、內核部分的移植
1.1 usb串口驅動的修改
修改:
autochips/kernel/drivers/usb/serial/option.c
kernel/drivers/usb/serial/qcserial.c
kernel/drivers/usb/serial/usb_wwan.c
修改: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_wwan_intf_private *data;
?? ?printk("option_probe, 1\n"); ?
?? ?#if 1 //Added by Quectel
?? ?//Quectel UC20's interface 4 can be used as USB Network device
?? ?if (serial->dev->descriptor.idVendor == 0x05C6 && serial->dev->descriptor.idProduct ==
?? ??? ??? ?0x9003 && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
?? ??? ?return -ENODEV;
?? ??? ?//Quectel EC20's interface 4 can be used as USB Network device
?? ?if (serial->dev->descriptor.idVendor == 0x05C6 && serial->dev->descriptor.idProduct ==
?? ??? ??? ?0x9215 && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
?? ??? ?return -ENODEV;
?? ??? ?if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C) &&?
?? ??? ??? ?serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
?? ??? ?return -ENODEV;
?? ?#endif
?? ?//end ?yiyuan
..........................................................
}
static struct usb_serial_driver option_1port_device = {
?? ?.driver = {
?? ??? ?.owner =?? ?THIS_MODULE,
?? ??? ?.name =?? ??? ?"option1",
?? ?},
?? ?.description ? ? ? = "GSM modem (1-port)",
?? ?.id_table ? ? ? ? ?= option_ids,
?? ?.num_ports ? ? ? ? = 1,
?? ?.probe ? ? ? ? ? ? = option_probe,
?? ?.open ? ? ? ? ? ? ?= usb_wwan_open,
?? ?.close ? ? ? ? ? ? = usb_wwan_close,
?? ?.dtr_rts?? ? ? = usb_wwan_dtr_rts,
?? ?.write ? ? ? ? ? ? = usb_wwan_write,
?? ?.write_room ? ? ? ?= usb_wwan_write_room,
?? ?.chars_in_buffer ? = usb_wwan_chars_in_buffer,
?? ?.set_termios ? ? ? = usb_wwan_set_termios,
?? ?.tiocmget ? ? ? ? ?= usb_wwan_tiocmget,
?? ?.tiocmset ? ? ? ? ?= usb_wwan_tiocmset,
?? ?.ioctl ? ? ? ? ? ? = usb_wwan_ioctl,
?? ?.attach ? ? ? ? ? ?= usb_wwan_startup,
?? ?.disconnect ? ? ? ?= usb_wwan_disconnect,
?? ?.release ? ? ? ? ? = option_release,
?? ?.read_int_callback = option_instat_callback,
#ifdef CONFIG_PM
?? ?.suspend ? ? ? ? ? = usb_wwan_suspend,
?? ?.resume ? ? ? ? ? ?= usb_wwan_resume,
#if 1 //Added by Quectel
?? ?//.reset_resume = usb_wwan_resume,
#endif
#endif
};
修改:kernel/drivers/usb/serial/qcserial.c ?去掉文件中跟移遠4G模塊VID和PID相沖突的選項,如下:
static const struct usb_device_id id_table[] = {
? ? ?......................................................................
? ? ?{USB_DEVICE(0x05c6, 0x9214)},?? ?/* Acer Gobi 2000 QDL device (VP413) */
?? ?//for EC20 yiyuan module remove?
?? ?//{USB_DEVICE(0x05c6, 0x9215)},?? ?/* Acer Gobi 2000 Modem device (VP413) */
?? ?{USB_DEVICE(0x05c6, 0x9264)},?? ?/* Asus Gobi 2000 QDL device (VR305) */
? ? ?.................................................................................
}
修改:kernel/drivers/usb/serial/usb_wwan.c文件,將移遠模塊在USB串口urb數據上傳時使用0數據包處理,數據上行和下行使用USB網絡接口,修改如下:
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 *))
{
?? ?struct urb *urb;
?? ?if (endpoint == -1)
?? ??? ?return NULL;?? ?/* endpoint not needed */
?? ?urb = usb_alloc_urb(0, GFP_KERNEL);?? ?/* No ISO */
?? ?if (urb == NULL) {
?? ??? ?dbg("%s: alloc for endpoint %d failed.", __func__, endpoint);
?? ??? ?return NULL;
?? ?}
?? ?/* Fill URB using supplied data. */
?? ?usb_fill_bulk_urb(urb, serial->dev,
?? ??? ??? ? ?usb_sndbulkpipe(serial->dev, endpoint) | dir,
?? ??? ??? ? ?buf, len, callback, ctx);
?? ?//add for EC20 yiyuan
?? ?#if 1//Added by Quectel for Zero Packet
?? ?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
?? ?//end EC20
?? ?return urb;
}
1.2USB網絡接口的修改
? 移遠的4G模塊使用Gobinet驅動來實現網絡數據的上行和下行,方法如下:
? 將移遠提供的驅動包中的文件放到
? kernel/drivers/net/usb/GobiUSBNet.c
? kernel/drivers/net/usb/QMI.c
? kernel/drivers/net/usb/QMI.h
? kernel/drivers/net/usb/QMIDevice.c
? kernel/drivers/net/usb/QMIDevice.h
?kernel/drivers/net/usb/Structs.h
修改kernel/drivers/net/usb/Makefile,添加編譯選項,如下:
obj-y += GobiNet.o
GobiNet-objs := GobiUSBNet.o QMIDevice.o QMI.o
obj-$(CONFIG_USB_CATC)?? ??? ?+= catc.o
修改kernel/drivers/net/usb/qmi_wwan.c ?USB網絡接口驅動,添加EC2.1模塊的VID和PID,將GobiNet驅動跟USB網絡驅動鏈接到一起,將文件系統接口的ttyUSB訪問時轉接到GobiNet驅動上,同時去掉接口中針對移遠模塊的舊的VID、PID配置,修改如下:
static const struct usb_device_id products[] = {
? ? ?..............................................................................
? ? {QMI_GOBI_DEVICE(0x03f0, 0x251d)},?? ?/* HP Gobi 2000 Modem device (VP412) */
?? ?//{QMI_GOBI_DEVICE(0x05c6, 0x9215)},?? ?/* Acer Gobi 2000 Modem device (VP413) */
?? ?{QMI_GOBI_DEVICE(0x05c6, 0x9265)},?? ?/* Asus Gobi 2000 Modem device (VR305) */
? ? ?...............................................................................
? ? {QMI_GOBI_DEVICE(0x1199, 0x901b)},?? ?/* Sierra Wireless MC7770 */
?? ?#if 1//Added by Quectel
?? ?//{QMI_GOBI_DEVICE(0x05C6, 0x9090) }, /* Quectel UC15 */
?? ?//{QMI_GOBI_DEVICE(0x05C6, 0x9003) }, /* Quectel UC20 */
?? ?{QMI_GOBI_DEVICE(0x05c6, 0x9215)}, //For Quectel EC20
?? ?{QMI_GOBI_DEVICE(0x2C7C, 0x0125)}, //For Quectel EC20
?? ?{QMI_GOBI_DEVICE(0x2C7C, 0x0121)}, //For Quectel EC20
?? ?#endif
?? ?{ }?? ??? ??? ??? ??? ?/* END */
};
1.3 內核配置文件修改
修改:autochips/kernel/arch/arm/configs/ac83xx_defconfig
添加ppp的配置選項:
CONFIG_PPP=y
CONFIG_PPP_BSDCOMP=y
CONFIG_PPP_DEFLATE=y
CONFIG_PPP_FILTER=y
CONFIG_PPP_MPPE=y
CONFIG_PPP_MULTILINK=y
CONFIG_PPPOE=y
CONFIG_PPPOL2TP=y
CONFIG_PPPOLAC=y
CONFIG_PPPOPNS=y
CONFIG_PPP_ASYNC=y
CONFIG_PPP_SYNC_TTY=y
CONFIG_SLHC=y
USB網絡的配置:
CONFIG_USB_USBNET=y ? ---------->必選
CONFIG_USB_NET_AX8817X=y
CONFIG_USB_NET_CDCETHER=y
CONFIG_USB_NET_CDC_NCM=y
CONFIG_USB_NET_NET1080=y
CONFIG_USB_NET_CDC_SUBSET=y
CONFIG_USB_BELKIN=y
CONFIG_USB_ARMLINUX=y
CONFIG_USB_NET_ZAURUS=y
USB串口配置:
CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_GENERIC=y
CONFIG_USB_SERIAL_WWAN=y
CONFIG_USB_SERIAL_OPTION=y
2、HAL的配置
2.1 刪除ATC平臺本身自帶的與ril層撥號相關的部分
首先刪除本身ATC平臺之前調試3G模塊針對電話網絡部分的修改,主要有chat、ip-down、ip-up、rild以及reference-ril,這個幾個部分跟EC2.1模塊的ril層使用有沖突,不去掉編譯將報錯誤或者在ril層撥號時不成功。刪除部分如下:
autochips/hardware/ril/
autochips/external/chat/Android.mk
autochips/external/ppp/android/Android.mk
autochips/device/atc/ac8317/.overlay/hardware/ril/
1)刪除autochips/hardware/ril 這個目錄
2)刪除autochips/device/atc/ac8317/.overlay/hardware/ril 這個目錄
3) 修改autochips/external/chat/Android.mk文件,去掉編譯選項,如下:
#ifeq ($(TARGET_ARCH),arm)
ifeq ($(TARGET_ARCH), )
....................................
}
或將android.mk修改成android_mk,如下:
autochips/external/chat/Android_mk 去掉自帶chat的編譯
4) 將autochips/external/ppp/android/Android.mk修改成:
autochips/external/ppp/android/Android_mk.bak
將autochips/external/ppp/android/目錄下的文件不編譯進系統。
2.2 添加EC2.1模塊的ril層代碼
2.2.1 如果是源碼代碼,請按照以下方式
? 將移遠提供的EC2.1模塊的ril代碼reference-ril文件夾添加到hardware/ril/目錄中,替換掉系統中自帶的hardware/ril/reference-ril/目錄,如下:
hardware/ril/reference-ril_bak/
hardware/ril/reference-ril_bak/Android_mk
? hardware/ril/reference-ril/
2.2.2 如果提供的是二進制文件和庫,請使用如下方式修改
? 去掉系統自帶的的hardware/ril/reference-ril/目錄
? hardware/ril/reference-ril_bak/
? hardware/ril/reference-ril_bak/Android_mk
? 在autochips/hardware/ril/目錄或者hardware/ril/目錄中創建reference-ril目錄,將廠家提供的二進制文件放到reference-ril目錄中,mtk平臺放到autochips/hardware/ril/reference-ril/目錄下,其它平臺放到hardware/ril/reference-ril/目錄下,如下:
autochips/hardware/ril/reference-ril/Android.mk
autochips/hardware/ril/reference-ril/ip-up
autochips/hardware/ril/reference-ril/ip-down
autochips/hardware/ril/reference-ril/chat
autochips/hardware/ril/reference-ril/libreference-ril.so
修改autochips/hardware/ril/reference-ril/Android.mk 內容如下:
LOCAL_PATH := $(call my-dir)
###############################################################
# copy the shell script to etc/ppp
#
###############################################################
include $(CLEAR_VARS)
LOCAL_MODULE := ip-up
#LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/ppp
LOCAL_SRC_FILES := $(LOCAL_MODULE)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := ip-down
#LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/ppp
LOCAL_SRC_FILES := $(LOCAL_MODULE)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE:= chat
#LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS:= EXECUTABLES
LOCAL_MODULE_PATH := $(TARGET_OUT_EXECUTABLES)
LOCAL_SRC_FILES := $(LOCAL_MODULE)
include $(BUILD_PREBUILT)
修改autochips/device/atc/ac8317/generic_ac8317.mk文件,添加libreference-ril.so的拷貝方式,如下:
PRODUCT_COPY_FILES := \
$(AUTOCHIPS_DIR)/hardware/ril/reference-ril/libreference-ril.so:system/lib/libreference-ril.so
2.2.3 如果有存在out目錄,并且系統之前編譯的中間件文件有ip-up、ip-down、chat、libreference-ril.so的條件下,請按如下方式修改
請刪除以下文件,否則系統全部編譯完成后,
out/target/product/ac8317/system/lib/libreference-ril.so
out/target/product/ac8317/system/bin/chat
out/target/product/ac8317/system/etc/ppp/ip-up
out/target/product/ac8317/system/etc/ppp/ip-down
目錄中的文件仍然是之前系統編譯生成的中間件文件,刪除之前編譯生成的中間件文件目錄,如下:
out/target/product/ac8317/obj/EXECUTABLES/chat_intermediates/ ?---------->刪除
out/target/product/ac8317/obj/SHARED_LIBRARIES/libreference-ril*.so_intermediates/ --->刪除
out/target/product/ac8317/obj/SHARED_LIBRARIES/libreference-ril_intermediates/ --->刪除
out/target/product/ac8317/obj/lib/libreference-ril.so ------>刪除
out/target/product/ac8317/obj/ETC/ip-down_intermediates/ ------>刪除
out/target/product/ac8317/obj/ETC/ip-up_intermediates / ------>刪除
2.2.4 如果保留out目錄進行編譯,編譯完成后請驗證輸出結果
請在編譯完成之后對比客戶給的文件跟系統生成的文件是否一致,系統生成的文件如下:
out/target/product/ac8317/system/lib/libreference-ril.so
out/target/product/ac8317/system/bin/chat
out/target/product/ac8317/system/etc/ppp/ip-up
out/target/product/ac8317/system/etc/ppp/ip-down
跟客戶給的文件請使用Beyond compare工具對比,如果不一致證明文件拷貝有問題或者中間件文件沒刪除干凈,一致則OK.
2.3 添加移遠提供的ril代碼中的chat、ip-down、ip-up選項
? 修改build/target/product/base.mk修改,如下:
? ?PRODUCT_PACKAGES += \
? ? 20-dns.conf \
95-configured \
..........................
?libreference-ril \
? ?chat \
? ?ip-up \
? ?ip-down \
? ?libreverbwrapper \
? ?..............................
? ?Vold
2.4 修改系統自帶的rild
hardware/ril/rild/rild.c 去掉main()函數中用戶切換功能,修改如下:
int main(int argc, char **argv)
{
............................................
OpenLib:
#endif
? ? //switchUser();
? ? dlHandle = dlopen(rilLibPath, RTLD_NOW);
.....................................................
}
3 Android os層的配置
3.1 init.rc啟動時服務和訪問文件權限的配置
修改autochips/build/.overlay/device/atc/ac8317/configs/main/init_for_mmc.rc
? ? ?autochips/build/.overlay/device/atc/ac8317/configs/new/init_for_mmc.rc
修改如下:
在on post-fs-data標簽中添加chat、ip-down、ip-up的權限配置,如下:
on post-fs-data
? ? # We chown/chmod /data again so because mount is run as root + defaults
? ? chown system system /data
chmod 0771 /data
..............................
chmod 0777 /system/bin/switch_usb_mode.sh
chmod 0777 /system/bin/storage_stress_test.sh
# create the lost+found directories, so as to enforce our permissions
mkdir /data/lost+found 0770 root root
? ??
# change permissions for ppp
chmod 777 /system/etc/ppp/ip-up
chmod 777 /system/etc/ppp/ip-down
chmod 777 /system/etc/ppp/chat
........................................................
去掉之前的系統的3G模塊的服務,更換成EC20 R2.1模塊的服務配置,如下:
#service ril-daemon /system/bin/rild -l libmtk-ril.so -- -d /dev/ttyUSB3
# ? ?class main
# ? ?socket rild stream 660 root radio
# ? ?socket rild-debug stream 660 radio system
# ? ?user root
# ? ?group radio cache inet misc audio log
service ril-daemon /system/bin/rild -l /system/lib/libreference-ril.so
? ? ?class main
? ? ?socket rild stream 660 root radio
? ? ?socket rild-debug stream 666 radio system
? ? ?user ?root
? ? ?group radio cache inet misc audio sdcard_rw log
3.2 Android Framework層針對電話網絡模塊的配置
這個部分主要修改:
autochips/build/.overlay/frameworks/base/core/res/res/values/main/config.xml
autochips/build/.overlay/frameworks/base/core/res/res/values/new/config.xml
修改如下:
?<string-array translatable="false" name="networkAttributes">
? ? ? ? <item>"wifi,1,1,1,-1,true"</item>
? ? ? ? <item>"ethernet,9,9,1,-1,true"</item>
? ? ? ? <item>"mobile_bluetooth,7,7,1,-1,true"</item>
? ? ? ? <item>"wifi_p2p,13,1,0,-1,true"</item>?? ?
? ? ? ? <item>"mobile,0,0,0,-1,true"</item>
? ? ? ? <item>"mobile_mms,2,0,2,60000,true"</item>
? ? ? ? <item>"mobile_supl,3,0,2,60000,true"</item>
?? ??? ?<item>"mobile_fota,10,0,3,60000,true"</item>
? ? ? ? <item>"mobile_ims,11,0,3,60000,true"</item>
? ? ? ? <item>"mobile_cbs,12,0,3,60000,true"</item>
? ? ? ? <item>"mobile_dun,4,0,3,60000,true"</item>
? ? ? ? <item>"mobile_hipri,5,0,3,60000,true"</item> ? ??
</string-array>
<string-array translatable="false" name="radioAttributes">
? ? ? ? <item>"1,1"</item>
? ? ? ? <item>"0,1"</item>
?? ??? ?<!-- <item>"7,1"</item>-->
? ? ? ? <item>"9,1"</item>
? ? </string-array>
?<integer-array translatable="false" name="config_tether_upstream_types">
? ? ? ? <item>0</item>
?? ??? ?<item>1</item>
? ? ? ? <item>7</item>
?? ??? ?<item>4</item>
?? ??? ?<item>5</item>
? ? ? ? <item>2</item>
? ? ? ? <item>3</item>
?? ??? ?<item>9</item>
? ? ? ? <item>11</item>
? ? ? ? <item>12</item>
</integer-array>
<bool name="config_showNavigationBar">true</bool>
3.3 APN的配置
這個部分主要修改:
autochips/device/atc/ac8317/data/etc/apns-conf.xml ?添加紅色字體部分:
<apns version="7">
?? ?<!--CHINA MOBILE-->
?? ?<apn carrier="CMCC"
? ? ? ? ? ? ? ? mcc="460"
? ? ? ? ? ? ? ? mnc="00"
? ? ? ? ? ? ? ? apn="cmnet"
? ? ? ? ? ? ? ? user="*"
? ? ? ? ? ? ? ? server="*"
? ? ? ? ? ? ? ? password="*"
? ? ? ? ? ? ? ? mmsc="null"
/>
.................................................
?<apn carrier="T-Mobile NL MMS"
? ? ? ? ?mcc="204"
? ? ? ? ?mnc="16"
? ? ? ? ?apn="mms"
? ? ? ? ?user="tmobilemms"
? ? ? ? ?password="tmobilemms"
? ? ? ? ?server="*"
? ? ? ? ?mmsproxy="010.010.010.011"
? ? ? ? ?mmsport="8080"
? ? ? ? ?mmsc="http://t-mobilemms"
? ? ? ? ?type="mms"
? ? />
? ? <apn carrier="China Unicom 3GNET"
? ? ? ? ?mcc="460"
? ? ? ? ?mnc="01"
? ? ? ? ?apn="3gnet"
? ? ? ? ?user=""
? ? ? ? ?server=""
? ? ? ? ?password=""
? ? ? ? ?mmsc=""
? ? />
? ? <apn carrier="China Mobile CMNET"
? ? ? ? ?mcc="460"
? ? ? ? ?mnc="00"
? ? ? ? ?apn="cmnet"
? ? ? ? ?user=""
? ? ? ? ?server=""
? ? ? ? ?password=""
? ? ? ? ?mmsc=""
? ? />
? ? <apn carrier="China Mobile CMNET"
? ? ? ? ?mcc="460"
? ? ? ? ?mnc="02"
? ? ? ? ?apn="cmnet"
? ? ? ? ?user=""
? ? ? ? ?server=""
? ? ? ? ?password=""
? ? ? ? ?mmsc=""
? ? />
? ? <apn carrier="China Mobile CMNET"
? ? ? ? ?mcc="460"
? ? ? ? ?mnc="07"
? ? ? ? ?apn="cmnet"
? ? ? ? ?user=""
? ? ? ? ?server=""
? ? ? ? ?password=""
? ? ? ? ?mmsc=""
? ? />
? ? ?<apn carrier="China Mobile CTNET"
? ? ? ? ?mcc="460"
? ? ? ? ?mnc="03"
? ? ? ? ?apn="ctnet"
? ? ? ?? ? ?user="ctnet@mycdma.cn"
? ? ? ? ?password="vnet.mobi"
?? ? ?proxy="10.0.0.200"
?? ? ?port="80"
? ? ? ? ?type="default,supl"
? ? />
? ? <apn carrier="China Mobile CTNET"
? ? ? ? ?mcc="460"
? ? ? ? ?mnc="11"
? ? ? ? ?user="ctnet@mycdma.cn"
? ? ? ? ?password="vnet.mobi"
? ? ? ? ?apn="ctnet"
? ? ? ? ?type="default,supl"
? ? />
</apns>
4.默認系統是不在狀態欄顯示4G圖標
? ?默認系統是不在狀態欄顯示4G圖標,請將系統自帶的SystemUI、Settings、SettingsProvider這三個APK中的Android.mk打開,然后進入源碼目錄中,使用mm ?./ 單獨編譯這三個APK,編譯完成后保留在另外目錄或U盤中。
?將編譯好的系統進行升級到機器上,之后將/flysystem/app/目錄中SystemUI、Settings、SettingsProvider三個APK替換到成系統自帶的SystemUI、Settings、SettingsProvider三個APK文件,之后重啟系統,插入4G模塊之后就有了4G信號顯示圖標了。
#mount -o remount, rw flysystem/
#cp Settings.apk /flysystem/app/
#cp SettingsProvider.apk /flysystem/app/
#cp SystemUI.apk /flysystem/app/
注意拷貝的時候先替換Settings.apk、SettingsProvider.apk,替換完SystemUI.apk系統會直接重啟,所以首先替換Settings.apk、SettingsProvider.apk,后替換SystemUI.apk。
4G模塊插入后到看到狀態欄有4G圖標顯示并有4G字樣之后,即可打開瀏覽器上網
同時請修改架構層和APP層打開LTE選項,否則默認是3G網絡,沒法顯示4G圖標,修改如下:
修改: frameworks\base\telephony\java\com\android\internal\telephony\RILConstants.java
? //int PREFERRED_NETWORK_MODE ? ?= ?NETWORK_MODE_WCDMA_PREF;
int PREFERRED_NETWORK_MODE ? ? ?= ?NETWORK_MODE_LTE_GSM_WCDMA;
修改:packages\apps\Phone\res\values\config.xml
<!-- <bool name="world_phone">false</bool>--->
? <bool name="world_phone">true</bool>
修改好之后全部編譯,將/system/app/Phone.apk push到機器的,flysystem/app/目錄下替換機器中的文件。
5.測試并進行驗證
修改配置完成后使用
$source selfenv newui
$./selfbuild cpoverlay newui
$./selfbuild
編譯整個系統,編譯完成后,將system、ramdisk、kernel三個部分做升級包升級到系統中。
插入4G模塊,開機啟動。之后按照第4章中的說明將Settings.apk、SettingsProvider.apk、SystemUI.apk、Phone.apk 四個APK push到flysystem/app目錄中替換掉之前的APK,然后插入4G模塊,在設置菜單中選擇“更多”---->”移動網絡”------>”網絡模式”---------->”LTE/CDMA”選項打勾,點擊”確定”即可。
插入4G模塊之后一會就可以看到 4G圖標了。
有問題時抓取radio log。
#adb shell
#logcat -b radio ? 抓取radio的日志,看是否撥號成功,成功之后,使用ping和netstat看網絡狀態。
root@android:/ # netstat
Proto Recv-Q Send-Q Local Address ? ? ? ? ?Foreign Address ? ? ? ?State
?tcp ? ? ? 0 ? ? ?0 127.0.0.1:5037 ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ?LISTEN
?tcp ? ? ? 0 ? ? ?0 127.0.0.1:5038 ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ?LISTEN
?tcp ? ? ? 0 ? ? ?0 127.0.0.1:5040 ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ?LISTEN
?tcp ? ? ? 0 ? ? ?0 0.0.0.0:7000 ? ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ?LISTEN
tcp6 ? ? ? 1 ? ? ?0 ::ffff:10.153.50.37:36212 ::ffff:74.125.204.102:443 SYN_SENT
tcp6 ? ? ? 1 ? ? ?1 ::ffff:10.153.50.37:37211 ::ffff:220.181.163.3:80 LAST_ACK
tcp6 ? ? ? 0 ? ? ?1 ::ffff:10.153.50.37:55686 ::ffff:183.129.161.214:80 CLOSE_WAIT
root@android:/ # ping www.baidu.com
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39: icmp_seq=1 ttl=53 time=21.9 ms
64 bytes from 14.215.177.39: icmp_seq=2 ttl=53 time=35.2 ms
64 bytes from 14.215.177.39: icmp_seq=3 ttl=53 time=30.1 ms
64 bytes from 14.215.177.39: icmp_seq=4 ttl=53 time=32.7 ms
64 bytes from 14.215.177.39: icmp_seq=5 ttl=53 time=31.9 ms
注意:在4G模塊插入的時候會彈出對話框,選擇”暫時不用”,否則4G網絡會存在不能使用的問題
總結
以上是生活随笔為你收集整理的Android4.2 Quectel EC20 R2.1模块移植的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 厦门明发家乐福免费班车行车线路和时间表
- 下一篇: 将图片转换成视频