现在碰到个问题在Android11上之前调通过EC200U-AUAA-N05-SGNSA(固件版本EC200UAUAAR03A04M08),4G和GNSS都正常。但是换了个EC200A-CNGA(固件版本EC200ACNGAR01A06M16),4G也正常拨号,但是GNSS找不到nmea端口了(fail to open GPS channel !),调试发现EC200U-AU的ril日志里会找到ttyGPS这个NMEA端口,而EC200A-CNGA的ril日志里就没有ttyGPS
EC200U-AUAA radio日志:
06-22 08:58:33.597 root 363 411 D RILU : find /sys/bus/usb/devices/2-1:1.2/ttyUSB0
06-22 08:58:33.597 root 363 411 D RILU : ttyAT = ttyUSB0
06-22 08:58:33.597 root 363 411 D RILU : find /sys/bus/usb/devices/2-1:1.7/ttyUSB5
06-22 08:58:33.597 root 363 411 D RILU : ttyPPP = ttyUSB5
06-22 08:58:33.597 root 363 411 D RILU : find /sys/bus/usb/devices/2-1:1.3/ttyUSB1
06-22 08:58:33.597 root 363 411 D RILU : ttyDM = ttyUSB1
06-22 08:58:33.598 root 363 411 D RILU : find /sys/bus/usb/devices/2-1:1.8/ttyUSB6
06-22 08:58:33.598 root 363 411 D RILU : ttyGPS = ttyUSB6
EC200A-CNGA radio日志:
06-24 19:11:14.278 376 427 D RILU : find /sys/bus/usb/devices/1-1.7:1.3/ttyUSB1
06-24 19:11:14.278 376 427 D RILU : ttyAT = ttyUSB1
06-24 19:11:14.278 376 427 D RILU : find /sys/bus/usb/devices/1-1.7:1.4/ttyUSB2
06-24 19:11:14.278 376 427 D RILU : ttyPPP = ttyUSB2
06-24 19:11:14.278 376 427 D RILU : find /sys/bus/usb/devices/1-1.7:1.2/ttyUSB0
06-24 19:11:14.278 376 427 D RILU : ttyDM = ttyUSB0
06-24 19:11:14.279 376 427 E RILU : MTK debug detect RNDIS interface. Call detect_ecm_or_rndis
06-24 19:11:14.279 376 427 D RILU : MTK debug ql_find_ecm_rndis_ncm: usbnet adapter dir:/sys/bus/usb/devices/1-1.7:1.0
06-24 19:11:14.279 376 427 D RILC : quectel at port is /dev/ttyUSB1
但是EC200A-CNGA实际有ttyUSB3这个NMEA端口,有如下USB端点
cat /sys/bus/usb/devices/1-1.7:1.6/interface
Mobile NMEA Interface
然后在/vendor/etc/gps_cfg.inf中把NMEA_PORT_PATH=rild-nmea改成NMEA_PORT_PATH=/dev/ttyUSB3
BAUD_RATE=9600
之后GNSS就正常工作了(固件默认关闭了GNSS,手动发AT+QGPS=1打开才行)
所以想问这是EC200A-CNGA的固件bug还是RIL库的bug,为什么RIL库识别不到ttyUSB3这个NMEA端口而EC200U-AUAA则可以识别到NMEA端口?如果我想一个安卓固件兼容这两种模块,如何处理?
从现象看,EC200A-CNGA 的 GNSS/NMEA 功能本身是可用的:系统已枚举出 Mobile NMEA Interface,并且直接配置 /dev/ttyUSB3 后 GNSS 正常。因此更像是 当前 Android RIL/GPS 适配层未正确识别 EC200A-CNGA 的 NMEA 接口 ,不优先判断为模组 GNSS 固件功能异常。
建议按以下方式处理:
优先使用适配 EC200A-CNGA 的移远 Android RIL/GPS 库
EC200U-AU 与 EC200A-CNGA 的 USB 组合接口布局不同。
当前 RIL 能识别 EC200U 的 ttyGPS,但未识别 EC200A 的 Mobile NMEA Interface,通常属于 RIL 对该型号/USB interface 映射未覆盖或版本不匹配。
建议确认当前使用的 Quectel RIL 版本是否包含 EC200A-CNGA 适配。
不建议固定写死 /dev/ttyUSB3
ttyUSBx 序号会受 USB 枚举顺序、Hub 拓扑、内核加载时序影响。
单机测试可用,但量产兼容风险较高。
一个 Android 固件兼容两种模组的推荐方式
GNSS 默认关闭的问题
你当前通过 AT+QGPS=1 后正常,说明上层在使用 GNSS 前需要确保已打开 GNSS。
可在 Android GNSS HAL 初始化、RIL 辅助服务或业务进程中增加开启流程,但需避免重复打开导致异常返回。
结论:该问题更偏向 Android RIL/GPS 适配问题或 RIL 版本未覆盖 EC200A-CNGA 的 NMEA 端口识别 。如果要做双模组兼容,建议使用新版适配库,或通过 sysfs 识别 Mobile NMEA Interface 后创建稳定设备节点,不要依赖固定 ttyUSB3。
本回答仅供参考。若问题已解决,可标记为 解决方案 ;若仍有疑问,请等待官方技术人员回复,最终请以专业解答为准。
@silas 你好,option.c中已经添加了EC200A的PID和VID,RIL库还是不识别NEMA端口,更新到Quectel_Android_RIL_Driver_aidl2_V4.3_CN 版本了,现象还是一样。这是相关的日志:
gnss_log.txt (24.7 KB)
ril_log.txt (175.9 KB)
另外在文档Quectel_UMTS_LTE_5G_Linux_USB_Driver_User_Guide_V3.1 章节2中USB接口列表里EC200A系列并没有GNSS端点
而EC200U就提到了GNSS端点
我理解是不是RIL库里没有去识别EC200A系列的GNSS接口?在option.c中添加PID和VID后已经有所有接口了,系统中cat命令可以确认到
rk3576_u:/ $ cat /sys/bus/usb/devices/1-1.3:1.*/interface
Mobile RNDIS Network Adapter
Mobile RNDIS Network Adapter
Mobile Diag Interface
Mobile AT Interface
Mobile MODEM Interface
Mobile NMEA Interface
silas
2026 年6 月 25 日 06:40
5
@deadbeef cat /sys/kernel/debug/usb/devices 获取下当前模组的所有接口属性信息,看是否符合串口驱动的加载条件
结果如下:
T: Bus=01 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#= 3 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=2c7c ProdID=6005 Rev= 3.18
S: Manufacturer=Android
S: Product=Android
S: SerialNumber=0000
C:* #Ifs= 6 Cfg#= 1 Atr=e0 MxPwr=500mA
A: FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=03
I:* If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
E: Ad=87(I) Atr=03(Int.) MxPS= 64 Ivl=4096ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=0c(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=0b(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=89(I) Atr=03(Int.) MxPS= 64 Ivl=4096ms
I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=0a(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=88(I) Atr=03(Int.) MxPS= 64 Ivl=4096ms
I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
silas
2026 年6 月 25 日 07:55
7
@deadbeef 请试下在RIL侧通过配置打开EC200A的GPS支持,配置文件:ql-ril.conf,配置项:asr_support_gps=1 配置后重启生效
@silas 配置这选项后RIL有异常报错
06-25 16:17:44.052 665 782 D RILC : about to set asr gps mode
06-25 16:17:44.052 665 782 D ATC : AT> AT+QCFG=“USB/NEMA”
06-25 16:17:44.052 665 828 D ATC : AT< +CME ERROR: 4
06-25 16:17:44.053 665 782 D RILC : query asr gps mode failed
06-25 16:17:44.053 665 782 D ATC : AT> AT+QCFG=“USB/NEMA”,1
06-25 16:17:44.053 665 828 D ATC : AT< +CME ERROR: 4
06-25 16:17:44.053 665 782 D ATC : AT> at+cfun=1,1
完整日志:
gnss_log1.txt (5.6 KB)
ril_log1.txt (232.4 KB)
我试了下AT+QCFG=?查询支持的命令,返回如下
QCFG_log.txt (2.8 KB)
silas
2026 年6 月 25 日 08:48
9
@deadbeef RIL没检测到GPS口,AT+QGPS=1打开了吗?
silas
2026 年6 月 25 日 09:11
10
@deadbeef 不能这么改,NMEA_PORT_PATH=/dev/ttyUSB3 是针对单独GNSS模块的,蜂窝+GNSS的不能这么配置,请改回NMEA_PORT_PATH=rild-nmea
gps_cfg.inf有改回,这么改是为了验证模块gnss正常,是RIL没识别到ttyGPS(ttyUSB3)
这是目前的两个配置gps_cfg.inf
;MODULE_TYPE=
NMEA_PORT_PATH=rild-nmea
;RMC_HZ=1
;NMEA_PORT_PATH=/dev/ttyO1
;BAUD_RATE=9600
;DATA_BITS=8
;STOP_BITS=1
;PARITY_TYPE=N
;FLOW_CONTROL=N
;LOG_LEVEL=LOG_DEBUG
;LOG_TYPE=
;LOG_PATH=
;FUNC_NMEA=
;FUNC_XTRA=
;FUNC_AGPS
;I2C_ADDR=
;NMEA_LOG_LEVEL=
;libcutils_path=
ql-ril.conf
#LTE_SignalStrength=-1
#LTE_Is_Report_SignalStrength=1
#At_Cmds_For_Customer_Initialize=at+csq;at+cgreg?;at+cops?;at+qcfg=“nwscanmodeex”
#Icc_Constants=EF_ICCID
#support_CDMPhone=1
#URC_delay_mseconds=2000
#Query_Available_Networks=1
#Sim_Hot_Plugging=1 #0-not support; 1-support low level; 2-support high level
#at_qcrmcall=1
#Recovery_App=
#ATT_Test=1
#need_switch_CMT_to_CMTI=1
#RevokeClientIDIndication=1
#PS_ONLY=1
#check_data_stall=1
#POLL_CALL_STATE=1
#support_fota=1 #url and local path should start with ‘fota:’. such as ‘fota:/data/EC200Txxxxxxx.bin’
#autoUnlockPin=1
#check_sms_manually=1
#support_x55_loopback=1
#manifest_path=/odm/etc/vintf/xxx.xml #xxx .xml is the name of manifest,such as manifest_m50_nonpayment_cell.xml
#usb_port_path1=
#usb_port_path2=
#use_dsda=1
#RIL_REQUEST_SHUTDOWN_SUPPORT=0
#RM500Voice=1
#SetPreferredNetworkType_NR=1
asr_support_gps=1
#stop_sent_at=1
#vzw_test=1
#pcie_only=1
#support_gnssrawdata=1
#allow_nwscanmode_auto_switch=1
#ql_simcfg_cpin_mode=1 # Configures CPIN mode for empty eSIM: 0=CPIN READY, 1=CPIN NOT READY
另外AT+QGPS=1有打开的。是ql-ril.conf中打开asr_support_gps=1后RIL这边就异常了,可以看ril_log1.txt最下面,模块都复位了,RIL再次打开的时候tty都识别错了
06-25 16:17:59.097 665 783 D RILU : find quectel module /sys/bus/usb/devices/1-1.3 idVendor=2c7c idProduct=6005
06-25 16:17:59.097 665 783 D RILU : find_usb_device is 1
06-25 16:18:00.100 665 783 D RILU : find /sys/bus/usb/devices/1-1.3:1.2/ttyUSB0
06-25 16:18:00.100 665 783 D RILU : ttyAT = ttyUSB0
06-25 16:18:00.100 665 783 D RILU : find /sys/bus/usb/devices/1-1.3:1.3/ttyUSB1
06-25 16:18:00.100 665 783 D RILU : ttyPPP = ttyUSB1
06-25 16:18:00.100 665 783 D RILC : quectel at port is /dev/ttyUSB0
06-25 16:18:00.100 665 783 D RILC : s_device_path is /dev/ttyUSB0
06-25 16:18:00.101 665 783 D RILC : open device /dev/ttyUSB0 correctly
06-25 16:18:00.101 665 783 E ATC : at_open s_tild_reader = 536524258480
06-25 16:18:00.102 665 782 D ATC : AT> ATE0
06-25 16:18:00.182 665 2128 E ATC : ERROR: Input line exceeded buffer
06-25 16:18:00.182 665 2128 D ATC : AT< T*REGOPT=2
06-25 16:18:00.203 665 2128 E ATC : ERROR: Input line exceeded buffer
06-25 16:18:00.203 665 2128 E ATC : ERROR: Input line exceeded buffe
silas
2026 年6 月 25 日 09:29
12
@deadbeef 另外想确认一下EC200A的GPS接口定义,还有发我个邮箱地址,我把最新的ril驱动发你试试
GPS接口定义是指什么?邮箱地址:1292080110@qq.com
silas
2026 年6 月 25 日 09:37
14
deadbeef:
GPS接口定义是指什么?
@deadbeef 已发送到邮箱,请查收。
先试下新的驱动吧,不行的话再提供一下类似这种信息(为了确认一下是否和驱动的匹配):
@silas 最新的RIL还是不行,ril日志文件
ril_aidl2_v4.6_log.txt (229.7 KB)
gps_ql日志:
06-25 17:37:35.945 D/gps_ql ( 1036): open_gps[22]–enter!
06-25 17:37:35.945 D/gps_ql ( 1036): gps__get_gps_interface[15]–enter!
06-25 17:37:35.945 D/gps_ql ( 1036): fail to read /etc/gps_cfg.inf for errno: 2 (No such file or directory)
06-25 17:37:35.946 D/gps_ql ( 1036): [rild-nmea] [0]
06-25 17:37:35.946 D/gps_ql ( 1036): get android version:34
06-25 17:37:35.959 D/gps_ql ( 1036): GPS DRIVER VERSION: Quectel_Android_GPS_Driver_aidl2_V2.2.22
06-25 17:37:35.959 D/gps_ql ( 1036): MODULE_TYPE:
06-25 17:37:35.959 D/gps_ql ( 1036): QL_GPS_CHANNEL:rild-nmea
06-25 17:37:35.959 D/gps_ql ( 1036): BAUD_RATE:0
06-25 17:37:35.960 D/gps_ql ( 1036): init_times = 0, s->init = 0
06-25 17:37:35.960 D/gps_ql ( 1036): init_times = 0
06-25 17:37:35.960 D/gps_ql ( 1036): ql_gps_state_init[539]–enter!
06-25 17:37:35.960 D/gps_ql ( 1036): ql_gps_state_init start
06-25 17:37:35.960 D/gps_ql ( 1036): Android gps will read from ‘rild-nmea’ channel
06-25 17:37:35.960 D/gps_ql ( 1036): gps state initialized
06-25 17:37:35.960 D/gps_ql ( 1036): set gps status to GPS_STATUS_ENGINE_ON
06-25 17:37:35.960 D/gps_ql ( 1036): gps_state_thread[260]–enter!
06-25 17:37:35.960 D/gps_ql ( 1036): Error connecting rild-nmea (Connection refused)
06-25 17:37:35.960 D/gps_ql ( 1036): fail to open GPS channel !
06-25 17:37:35.961 D/gps_ql ( 1036): gps thread running
06-25 17:37:35.971 D/gps_ql ( 1036): GPS DRIVER VERSION: Quectel_Android_GPS_Driver_aidl2_V2.2.22
06-25 17:37:35.971 D/gps_ql ( 1036): MODULE_TYPE:
06-25 17:37:35.971 D/gps_ql ( 1036): QL_GPS_CHANNEL:rild-nmea
06-25 17:37:35.971 D/gps_ql ( 1036): BAUD_RATE:0
06-25 17:37:35.972 D/gps_ql ( 1036): init_times = 1, s->init = 1
06-25 17:37:35.972 D/gps_ql ( 1036): set gps status to GPS_STATUS_ENGINE_ON
06-25 17:37:36.960 D/gps_ql ( 1036): Error connecting rild-nmea (Connection refused)
NMEA接口信息
silas
2026 年6 月 25 日 13:59
16
@deadbeef 从log看还是4.3版本的驱动,没有安装成功:“06-25 17:37:32.938 663 663 D RILC : Quectel RIL Version: Quectel_Android_RIL_Driver_aidl2_V4.3.0
”
@silas 不好意思,手动替换错了T_T。4.6版本可以了,非常感谢!
另外可否帮忙更新一版Quectel_Android_RIL_Driver_V3.6.24_master_Release_20231211_10_47的支持EC200A,因为最开始是在Android11上调试的,打开asr_support_gps=1也不行,11上不支持AIDL版本RIL库,项目目前使用的Android11。
silas
2026 年6 月 26 日 01:41
18
@deadbeef 也是版本太老的原因,Android11使用1.5的最新版RIL(Quectel_Android_RIL_Driver_radio1.5_****),最新的已经邮件发送,请查收。
@silas 还得麻烦看下,更新radio1.5上午只测了GPS正常,刚才测试发现4G无法上网了
radio1.5_log.txt (120.4 KB)