zte me3xxx 4g调试
生活随笔
收集整理的這篇文章主要介紹了
zte me3xxx 4g调试
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第一部分 RIL適配
請按照本節的內容對Android系統進行修改,否則RIL將無法正常運行。
1. 在內核中添加USB串口驅動和USB網卡驅動,可以選擇將其直接編入內核,或者編譯為模塊待內核啟動時加載,總之,要確保Linux內核啟動完成后,這兩個驅動是運行在內核當中的。
通常,配置內核是通過指令make menuconfig,執行該指令后:
? 添加USB串口驅動:
device drivers-->
? usb support-->
usb serial converter support-->
? USB driver for GSM and CDMA modems
? 添加USB網卡驅動
devices drivers-->
? Network device support-->
usb Network Adapters-->
? Mulil-purpose USB Networking Framework
* 注:如果您的內核結構與上面不一致,可能需要在其它的路徑下面選擇,總之,只要確保源文件中的 option.c 及其相關的部分(USB串口驅動),cdc_ether.c 及其相關部分(USB網卡驅動)參與編譯即可
2. 在內核中添加PPP組件
通常,配置內核是通過指令make menuconfig,執行該指令后:
devices drivers-->
Network device support-->
? ppp support-->
? ? ppp filtering?
ppp support for async serial ports?
ppp support for sync tty ports?
ppp deflate compression?
ppp BSD-compress compression
3. 在內核驅動源文件中添加ZTE模塊相關的信息:USB網卡驅動可以自動識別到ZTE模塊,因此,其對應的cdc_ether.c文件中不需要添加任何內容。但是USB串口驅動不能自動識別,必須要添加ZTE模塊的設備信息到源文件 option.c 中。
文件路徑:/kernel/drivers/usb/serial/option.c
? 添加USB端口的VID和PID信息,見下面藍色部分。這里0x0199為ME3860模塊和ME3760_V2模塊的PID,0x1476為ME3620模塊的PID,如果您使用的是其它模塊,將其中的PID值更換為相應的值即可。
static const struct usb_device_id option_ids[] = {
{ USB_DEVICE(0x19d2, 0x0199) },
{ USB_DEVICE(0x19d2, 0x1476) },
……
}
? 添加黑名單信息,上面添加模塊信息是只添加了設備的VID和PID,沒有附加任何額外的端口信息,這樣會導致設備的網卡也被加載成為USB串口,下面提供的是一種類似于黑名單的方式,在option_probe函數中,將網卡對應的端口加入黑名單,防止USB網卡被加載成為USB串口。
對于ME3860和ME3760_V2,其網卡對應的端口為0和1,對于ME3620,其網卡對應的端口為3和4。請將以下代碼添加到option_probe函數中
printk("idVendor=%x, idProduct=%x, bInterfaceNumber =%d\r\n",?
serial->dev->descriptor.idVendor,?
serial->dev->descriptor.idProduct,
serial->interface->cur_altsetting->desc. bInterfaceNumber);
? ?if (serial->dev->descriptor.idVendor == 0x19d2 &&
? ? ? ? ? ?serial->dev->descriptor.idProduct == 0x1476 &&
? ? ? ? ? ?serial->interface->cur_altsetting->desc. bInterfaceNumber == 3)
? ? ? ? ? ?return -ENODEV;
if (serial->dev->descriptor.idVendor == 0x19d2 &&
? ? ? ? ? ? ? ? serial->dev->descriptor.idProduct == 0x1476 &&
? ? ? ? ? ? ? ? serial->interface->cur_altsetting->desc. bInterfaceNumber == 4)
? ? ? ? ? ? ? ? return -ENODEV;
if (serial->dev->descriptor.idVendor == 0x19d2 &&
? ? ? ? ? ? ? ? serial->dev->descriptor.idProduct == 0x0199 &&
? ? ? ? ? ? ? ? serial->interface->cur_altsetting->desc. bInterfaceNumber == 0)
? ? ? ? ? ? ? ? return -ENODEV;
if (serial->dev->descriptor.idVendor == 0x19d2 &&
? ? ? ? ? ? ? ? serial->dev->descriptor.idProduct == 0x0199 &&
? ? ? ? ? ? ? ? serial->interface->cur_altsetting->desc. bInterfaceNumber == 1)
? ? ? ? ? ? ? ? return -ENODEV;
* 注:第一行的printk是為了方便調試而打印的,雖無實際效果,最好能帶上。下面的幾個if語句分別判斷了需要加入黑名單的端口號,如果您使用的是除ME3860,ME3760_V2和ME3620之外的模塊,上面if語句中的判斷條件也要做相應修改。
4. 在Android系統的init.rc中添加服務
? ril-daemon 服務 (添加前注釋掉原來的ril-daemon服務)
service ril-daemon /system/bin/rild -l /system/lib/libreference-ril.so?
socket rild stream 660 root radio?
socket rild-debug stream 660 radio system?
user root
group radio cache inet misc audio log
? dhcpcd_ecm服務
service dhcpcd_ecm /system/etc/init.dhcpcd_ecm
user root
group radio cache inet misc log
disabled
oneshot
? ecm_down服務
service ecm_down /system/etc/init.ecm_down
user root
group radio cache inet misc log
disabled
oneshot
? pppd_gprs服務
service pppd_gprs /system/etc/init.gprs_pppd
user root
group radio cache inet misc log
disabled
oneshot
5. 在Android系統中設置服務的權限等信息(Android5.0/5.1以上跳過此步)
文件路徑:/system/core/init/property_service.c,藍色部分為新加的內容
property_perms[] =
{
{“net.ppp0”, AID_RADIO, 0},
……
}
control_perms[] =?
{
{“dhcpcd_ecm”, AID_RADIO, AID_LOG},
{“ecm_down”, AID_RADIO, AID_LOG },
{“pppd_gprs”, AID_RADIO, AID_LOG },
……
}
6. 打包相關文件到系統中
將下表中的幾個文件打包到系統中,確保系統編譯完成后,文件出現在對應的目錄中。
文件名 打包后在Android系統中的目錄
libreference-ril.so /system/lib
init.dhcpcd_ecm /system/etc
init.ecm_down /system/etc
init.gprs_pppd /system/etc
ip-up-ppp0 /system/etc/ppp
ip-down-ppp0 /system/etc/ppp
如果您使用的是Android5.0以上的系統,則我們提供的ip-up-ppp0和ip-down-ppp0兩個文件不能直接使用,需要使用我們提供的源代碼文件ip-up-ppp0.c和 ip-down-ppp0.c 編譯出可執行文件。Android.mk中的內容如下:
include $(CLEAR_VARS)?
LOCAL_SRC_FILES := ip-up-ppp0.c?
LOCAL_SHARED_LIBRARIES := libcutils?
LOCAL_MODULE := ip-up-ppp0?
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/ppp?
LOCAL_MODULE_TAGS := optional?
include $(BUILD_EXECUTABLE)?
?
include $(CLEAR_VARS)?
LOCAL_SRC_FILES := ip-down-ppp0.c?
LOCAL_SHARED_LIBRARIES := libcutils?
LOCAL_MODULE := ip-down-ppp0?
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/ppp?
LOCAL_MODULE_TAGS := optional?
include $(BUILD_EXECUTABLE)
7. 修改腳本文件的權限
文件路徑:system/core/include/private/android_filesystem_config.h,藍色部分為新加內容
static struct fs_path_config android_files[] = {
? ? ……
? ? { 00777, AID_ROOT, AID_SHELL, "system/etc/init.gprs_pppd" },
? ? { 00777, AID_ROOT, AID_SHELL, "system/etc/ init.dhcpcd_ecm" },
? ? { 00777, AID_ROOT, AID_SHELL, "system/etc/ init.ecm_down" },
? ? { 00777, AID_ROOT, AID_SHELL, "system/etc/ ppp/ip-up-ppp0" },
{ 00777, AID_ROOT, AID_SHELL, "system/etc/ ppp/ip-down-ppp0" },
……
};
8. 修改設備文件權限
文件路徑:system/core/rootdir/ueventd.rc,在其中添加如下幾行:
/dev/ttyUSB0 0660 radio radio?
/dev/ttyUSB1 0660 radio radio?
/dev/ttyUSB2 0660 radio radio?
/dev/ttyUSB3 0660 radio radio?
/dev/ttyUSB4 0660 radio radio
注意:如果在系統中設備的序號是其它值,則應按照上述格式修改其權限。例如,如果模塊的某個端口在系統中為/dev/ttyUSB10,則應添加如下行:
/dev/ttyUSB10 0660 radio radio
第二部分 可選配置
本節介紹了幾種可以選擇的配置,用戶可以通過這些配置來控制或者獲取RIL的行為。一般情況下,按照第一節的內容修改Android系統之后,RIL已經可以正常運行,因此本節內容主要用于調試,如果沒有特殊需要可以忽略。
1. 通過系統屬性設置RIL連接網絡時的撥號方式(ECM撥號或者PPP撥號)
屬性名:ril.dial.mode
說明:該屬性值為0代表使用PPP撥號,為其它值則使用ECM撥號
默認值:1
2. 通過系統屬性設置PPP撥號失敗時的最大重連次數
屬性名:ril.ppp.retry.times
說明:該屬性值為一個整數,必須在1-5之間,超出范圍會被強制設置為1
默認值:1
3. 通過系統屬性設置RIL是否主動給系統上報信號強度
屬性名:ril.unsol.signal
說明:該值為0代表RIL不主動上報信號強度,為其它值代表則主動上報信號強度
默認值:1
4. 通過系統屬性設置心跳指令的發送周期
屬性名:ril.keepalive.circle
說明:RIL每隔一定時間會給模塊發送心跳指令確保模塊可用,如果周期為0則不發送
默認值:9(單位為秒)
5. 通過系統屬性設置RIL檢查網絡連接狀態的周期
屬性名:ril.check.network.circle
說明:數據業務打開時,RIL每隔一定時間會檢查網絡狀態,如果周期為0則不檢查
默認值:60(單位為秒)
第三部分 運行日志的抓取
RIL調試過程中不可避免地會遇到很多問題,分析問題需要抓取相應的日志,下面是幾種常用的日志的抓取方法
1. 抓取Radio log
adb logcat -b radio -v time
2. 抓取Android系統日志
adb logcat
3. 抓取內核日志
adb shell dmesg
或者
adb shell cat /proc/kmsg
4. 抓取連網過程中pppd或者dhcpcd程序的日志
adb logcat -s pppd
adb logcat -s dhcpcd
* 這個是分析連網問題時使用的,如果使用的是ECM撥號,則抓取dhcpcd日志,如果使用的是PPP撥號,則抓取pppd日志,系統默認使用ECM撥號,可以通過系統屬性ril.dial.mode修改,參見“可選配置”章節。
5. 抓取模塊內部的運行日志
需要使用我們提供的工具才能抓取,詳見所附壓縮包 “Android_log_adb.zip”
6. 通過AT指令直接查詢模塊內部的運行狀態
指令執行過程如下:
adb shell ? ? ? ? ?//進入Linux 環境
stop ril-daemon ? ?//停止RIL
./AT ? ? ? ? ? ? ?//運行發送AT指令的工具,該工具由我們提供
第四部分 radio log中簡單問題的處理
本節介紹radio log中經常會出現的一些問題,內容正在完善中,僅供參考
1. 判斷RIL庫是否已經加載并運行
******** Enter RIL_Init() ********
RIL庫開始運行時會打印上述日志,從Android系統開機起抓取radio log,如果不存在上述字樣,則說明RIL庫沒有正確加載。需要檢查ril-daemon服務是否添加并正確運行。
2. 判斷無線通信模塊端口是否正常
[init]Runtime 3G can't find supported modem ?//未找到設備
[init]Runtime 3G port found matched device with xxxxxxx ?//找到設備
如果radio log不停地打印前者,說明RIL無法在系統中找到無線通信模塊,需要檢查模塊是否正常上電,并且正常加載驅動。模塊端口正常后,會打印后者。
3. 判斷模塊是否已經注冊到運營商的網絡
在radio log中搜索如下幾個AT指令的返回結果:
AT+CPIN? ? ?//SIM卡狀態
AT+CSQ ? ? ?//信號強度
AT+ZPAS? ? ?//注冊狀態
關于指令結果的含義可以參考模塊的AT指令集,下面僅給出例子。
AT+CPIN?
+CPIN: READY
OK
* 如果指令的返回結果中有ERROR字樣,則說明SIM卡有問題
AT+CSQ
+CSQ: 31,0
OK
* 如果指令的返回結果中有ERROR字樣,說明模塊狀態有問題
* 如果第一個數字為個位數或者為99,則說明信號非常差
AT+ZPAS?
+ZPAS: "LTE","CS_PS"
OK
* 如果指令的返回結果中有ERROR字樣,說明模塊狀態有問題
* 如果指令返回結果中有no service或者limit service,則說明模塊未注冊上
4. 無法連接網絡時的問題
如果在Android系統界面上沒有顯示網絡連接成功的圖標,首先確認:
(1) SIM卡是否欠費
(2) 是否已經注冊上運營商的網絡(參加本節第3條)
(3) Android系統中是否有對應的網絡接入點(APN)
在上述幾項沒有問題的情況下,抓取日志分析:
(1) radio log中搜索“SETUP_DATA_CALL ********”字樣,這里會啟動連接網絡的流程,可以看到后續流程中出現了何種錯誤
(2) 抓取pppd或者dhcpcd日志(參見“運行日志抓取”章節中的第4條),其中可以看到撥號過程中發生了何種錯誤。如果其中內容只有幾條,則說明pppd或者dhcpcd沒有運行起來。
請按照本節的內容對Android系統進行修改,否則RIL將無法正常運行。
1. 在內核中添加USB串口驅動和USB網卡驅動,可以選擇將其直接編入內核,或者編譯為模塊待內核啟動時加載,總之,要確保Linux內核啟動完成后,這兩個驅動是運行在內核當中的。
通常,配置內核是通過指令make menuconfig,執行該指令后:
? 添加USB串口驅動:
device drivers-->
? usb support-->
usb serial converter support-->
? USB driver for GSM and CDMA modems
? 添加USB網卡驅動
devices drivers-->
? Network device support-->
usb Network Adapters-->
? Mulil-purpose USB Networking Framework
* 注:如果您的內核結構與上面不一致,可能需要在其它的路徑下面選擇,總之,只要確保源文件中的 option.c 及其相關的部分(USB串口驅動),cdc_ether.c 及其相關部分(USB網卡驅動)參與編譯即可
2. 在內核中添加PPP組件
通常,配置內核是通過指令make menuconfig,執行該指令后:
devices drivers-->
Network device support-->
? ppp support-->
? ? ppp filtering?
ppp support for async serial ports?
ppp support for sync tty ports?
ppp deflate compression?
ppp BSD-compress compression
3. 在內核驅動源文件中添加ZTE模塊相關的信息:USB網卡驅動可以自動識別到ZTE模塊,因此,其對應的cdc_ether.c文件中不需要添加任何內容。但是USB串口驅動不能自動識別,必須要添加ZTE模塊的設備信息到源文件 option.c 中。
文件路徑:/kernel/drivers/usb/serial/option.c
? 添加USB端口的VID和PID信息,見下面藍色部分。這里0x0199為ME3860模塊和ME3760_V2模塊的PID,0x1476為ME3620模塊的PID,如果您使用的是其它模塊,將其中的PID值更換為相應的值即可。
static const struct usb_device_id option_ids[] = {
{ USB_DEVICE(0x19d2, 0x0199) },
{ USB_DEVICE(0x19d2, 0x1476) },
……
}
? 添加黑名單信息,上面添加模塊信息是只添加了設備的VID和PID,沒有附加任何額外的端口信息,這樣會導致設備的網卡也被加載成為USB串口,下面提供的是一種類似于黑名單的方式,在option_probe函數中,將網卡對應的端口加入黑名單,防止USB網卡被加載成為USB串口。
對于ME3860和ME3760_V2,其網卡對應的端口為0和1,對于ME3620,其網卡對應的端口為3和4。請將以下代碼添加到option_probe函數中
printk("idVendor=%x, idProduct=%x, bInterfaceNumber =%d\r\n",?
serial->dev->descriptor.idVendor,?
serial->dev->descriptor.idProduct,
serial->interface->cur_altsetting->desc. bInterfaceNumber);
? ?if (serial->dev->descriptor.idVendor == 0x19d2 &&
? ? ? ? ? ?serial->dev->descriptor.idProduct == 0x1476 &&
? ? ? ? ? ?serial->interface->cur_altsetting->desc. bInterfaceNumber == 3)
? ? ? ? ? ?return -ENODEV;
if (serial->dev->descriptor.idVendor == 0x19d2 &&
? ? ? ? ? ? ? ? serial->dev->descriptor.idProduct == 0x1476 &&
? ? ? ? ? ? ? ? serial->interface->cur_altsetting->desc. bInterfaceNumber == 4)
? ? ? ? ? ? ? ? return -ENODEV;
if (serial->dev->descriptor.idVendor == 0x19d2 &&
? ? ? ? ? ? ? ? serial->dev->descriptor.idProduct == 0x0199 &&
? ? ? ? ? ? ? ? serial->interface->cur_altsetting->desc. bInterfaceNumber == 0)
? ? ? ? ? ? ? ? return -ENODEV;
if (serial->dev->descriptor.idVendor == 0x19d2 &&
? ? ? ? ? ? ? ? serial->dev->descriptor.idProduct == 0x0199 &&
? ? ? ? ? ? ? ? serial->interface->cur_altsetting->desc. bInterfaceNumber == 1)
? ? ? ? ? ? ? ? return -ENODEV;
* 注:第一行的printk是為了方便調試而打印的,雖無實際效果,最好能帶上。下面的幾個if語句分別判斷了需要加入黑名單的端口號,如果您使用的是除ME3860,ME3760_V2和ME3620之外的模塊,上面if語句中的判斷條件也要做相應修改。
4. 在Android系統的init.rc中添加服務
? ril-daemon 服務 (添加前注釋掉原來的ril-daemon服務)
service ril-daemon /system/bin/rild -l /system/lib/libreference-ril.so?
socket rild stream 660 root radio?
socket rild-debug stream 660 radio system?
user root
group radio cache inet misc audio log
? dhcpcd_ecm服務
service dhcpcd_ecm /system/etc/init.dhcpcd_ecm
user root
group radio cache inet misc log
disabled
oneshot
? ecm_down服務
service ecm_down /system/etc/init.ecm_down
user root
group radio cache inet misc log
disabled
oneshot
? pppd_gprs服務
service pppd_gprs /system/etc/init.gprs_pppd
user root
group radio cache inet misc log
disabled
oneshot
5. 在Android系統中設置服務的權限等信息(Android5.0/5.1以上跳過此步)
文件路徑:/system/core/init/property_service.c,藍色部分為新加的內容
property_perms[] =
{
{“net.ppp0”, AID_RADIO, 0},
……
}
control_perms[] =?
{
{“dhcpcd_ecm”, AID_RADIO, AID_LOG},
{“ecm_down”, AID_RADIO, AID_LOG },
{“pppd_gprs”, AID_RADIO, AID_LOG },
……
}
6. 打包相關文件到系統中
將下表中的幾個文件打包到系統中,確保系統編譯完成后,文件出現在對應的目錄中。
文件名 打包后在Android系統中的目錄
libreference-ril.so /system/lib
init.dhcpcd_ecm /system/etc
init.ecm_down /system/etc
init.gprs_pppd /system/etc
ip-up-ppp0 /system/etc/ppp
ip-down-ppp0 /system/etc/ppp
如果您使用的是Android5.0以上的系統,則我們提供的ip-up-ppp0和ip-down-ppp0兩個文件不能直接使用,需要使用我們提供的源代碼文件ip-up-ppp0.c和 ip-down-ppp0.c 編譯出可執行文件。Android.mk中的內容如下:
include $(CLEAR_VARS)?
LOCAL_SRC_FILES := ip-up-ppp0.c?
LOCAL_SHARED_LIBRARIES := libcutils?
LOCAL_MODULE := ip-up-ppp0?
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/ppp?
LOCAL_MODULE_TAGS := optional?
include $(BUILD_EXECUTABLE)?
?
include $(CLEAR_VARS)?
LOCAL_SRC_FILES := ip-down-ppp0.c?
LOCAL_SHARED_LIBRARIES := libcutils?
LOCAL_MODULE := ip-down-ppp0?
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/ppp?
LOCAL_MODULE_TAGS := optional?
include $(BUILD_EXECUTABLE)
7. 修改腳本文件的權限
文件路徑:system/core/include/private/android_filesystem_config.h,藍色部分為新加內容
static struct fs_path_config android_files[] = {
? ? ……
? ? { 00777, AID_ROOT, AID_SHELL, "system/etc/init.gprs_pppd" },
? ? { 00777, AID_ROOT, AID_SHELL, "system/etc/ init.dhcpcd_ecm" },
? ? { 00777, AID_ROOT, AID_SHELL, "system/etc/ init.ecm_down" },
? ? { 00777, AID_ROOT, AID_SHELL, "system/etc/ ppp/ip-up-ppp0" },
{ 00777, AID_ROOT, AID_SHELL, "system/etc/ ppp/ip-down-ppp0" },
……
};
8. 修改設備文件權限
文件路徑:system/core/rootdir/ueventd.rc,在其中添加如下幾行:
/dev/ttyUSB0 0660 radio radio?
/dev/ttyUSB1 0660 radio radio?
/dev/ttyUSB2 0660 radio radio?
/dev/ttyUSB3 0660 radio radio?
/dev/ttyUSB4 0660 radio radio
注意:如果在系統中設備的序號是其它值,則應按照上述格式修改其權限。例如,如果模塊的某個端口在系統中為/dev/ttyUSB10,則應添加如下行:
/dev/ttyUSB10 0660 radio radio
第二部分 可選配置
本節介紹了幾種可以選擇的配置,用戶可以通過這些配置來控制或者獲取RIL的行為。一般情況下,按照第一節的內容修改Android系統之后,RIL已經可以正常運行,因此本節內容主要用于調試,如果沒有特殊需要可以忽略。
1. 通過系統屬性設置RIL連接網絡時的撥號方式(ECM撥號或者PPP撥號)
屬性名:ril.dial.mode
說明:該屬性值為0代表使用PPP撥號,為其它值則使用ECM撥號
默認值:1
2. 通過系統屬性設置PPP撥號失敗時的最大重連次數
屬性名:ril.ppp.retry.times
說明:該屬性值為一個整數,必須在1-5之間,超出范圍會被強制設置為1
默認值:1
3. 通過系統屬性設置RIL是否主動給系統上報信號強度
屬性名:ril.unsol.signal
說明:該值為0代表RIL不主動上報信號強度,為其它值代表則主動上報信號強度
默認值:1
4. 通過系統屬性設置心跳指令的發送周期
屬性名:ril.keepalive.circle
說明:RIL每隔一定時間會給模塊發送心跳指令確保模塊可用,如果周期為0則不發送
默認值:9(單位為秒)
5. 通過系統屬性設置RIL檢查網絡連接狀態的周期
屬性名:ril.check.network.circle
說明:數據業務打開時,RIL每隔一定時間會檢查網絡狀態,如果周期為0則不檢查
默認值:60(單位為秒)
第三部分 運行日志的抓取
RIL調試過程中不可避免地會遇到很多問題,分析問題需要抓取相應的日志,下面是幾種常用的日志的抓取方法
1. 抓取Radio log
adb logcat -b radio -v time
2. 抓取Android系統日志
adb logcat
3. 抓取內核日志
adb shell dmesg
或者
adb shell cat /proc/kmsg
4. 抓取連網過程中pppd或者dhcpcd程序的日志
adb logcat -s pppd
adb logcat -s dhcpcd
* 這個是分析連網問題時使用的,如果使用的是ECM撥號,則抓取dhcpcd日志,如果使用的是PPP撥號,則抓取pppd日志,系統默認使用ECM撥號,可以通過系統屬性ril.dial.mode修改,參見“可選配置”章節。
5. 抓取模塊內部的運行日志
需要使用我們提供的工具才能抓取,詳見所附壓縮包 “Android_log_adb.zip”
6. 通過AT指令直接查詢模塊內部的運行狀態
指令執行過程如下:
adb shell ? ? ? ? ?//進入Linux 環境
stop ril-daemon ? ?//停止RIL
./AT ? ? ? ? ? ? ?//運行發送AT指令的工具,該工具由我們提供
第四部分 radio log中簡單問題的處理
本節介紹radio log中經常會出現的一些問題,內容正在完善中,僅供參考
1. 判斷RIL庫是否已經加載并運行
******** Enter RIL_Init() ********
RIL庫開始運行時會打印上述日志,從Android系統開機起抓取radio log,如果不存在上述字樣,則說明RIL庫沒有正確加載。需要檢查ril-daemon服務是否添加并正確運行。
2. 判斷無線通信模塊端口是否正常
[init]Runtime 3G can't find supported modem ?//未找到設備
[init]Runtime 3G port found matched device with xxxxxxx ?//找到設備
如果radio log不停地打印前者,說明RIL無法在系統中找到無線通信模塊,需要檢查模塊是否正常上電,并且正常加載驅動。模塊端口正常后,會打印后者。
3. 判斷模塊是否已經注冊到運營商的網絡
在radio log中搜索如下幾個AT指令的返回結果:
AT+CPIN? ? ?//SIM卡狀態
AT+CSQ ? ? ?//信號強度
AT+ZPAS? ? ?//注冊狀態
關于指令結果的含義可以參考模塊的AT指令集,下面僅給出例子。
AT+CPIN?
+CPIN: READY
OK
* 如果指令的返回結果中有ERROR字樣,則說明SIM卡有問題
AT+CSQ
+CSQ: 31,0
OK
* 如果指令的返回結果中有ERROR字樣,說明模塊狀態有問題
* 如果第一個數字為個位數或者為99,則說明信號非常差
AT+ZPAS?
+ZPAS: "LTE","CS_PS"
OK
* 如果指令的返回結果中有ERROR字樣,說明模塊狀態有問題
* 如果指令返回結果中有no service或者limit service,則說明模塊未注冊上
4. 無法連接網絡時的問題
如果在Android系統界面上沒有顯示網絡連接成功的圖標,首先確認:
(1) SIM卡是否欠費
(2) 是否已經注冊上運營商的網絡(參加本節第3條)
(3) Android系統中是否有對應的網絡接入點(APN)
在上述幾項沒有問題的情況下,抓取日志分析:
(1) radio log中搜索“SETUP_DATA_CALL ********”字樣,這里會啟動連接網絡的流程,可以看到后續流程中出現了何種錯誤
(2) 抓取pppd或者dhcpcd日志(參見“運行日志抓取”章節中的第4條),其中可以看到撥號過程中發生了何種錯誤。如果其中內容只有幾條,則說明pppd或者dhcpcd沒有運行起來。
總結
以上是生活随笔為你收集整理的zte me3xxx 4g调试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AIX常用操作-转载
- 下一篇: 图解SSD不同的接口:SATA、MSAT