项目希望通过EC20知道当前SIM卡属于哪个运营商,当前使用ICCID发现有些无法区分,卡商说能通过MSISDN知道运营商,at+cnum能读到OK的返回,没有MSISDN。
EC20 区分运营商,建议不要依赖 MSISDN。
关于 AT+CNUM 返回 OK 但无号码
AT+CNUM 读取的是 SIM 卡内 EF_MSISDN 字段。该字段由运营商在开卡时写入,很多运营商不写入或写入空值,因此会出现返回 OK 但没有号码的情况。这是卡侧数据缺失,模组无法自行获取本机号码;若项目必须使用 MSISDN,需联系运营商在卡内写入或通过 HLR 侧开通。
建议的运营商识别方案
- IMSI 判断(推荐,可靠)
使用 AT+CIMI 读取 IMSI,取前 5~6 位(MCC+MNC)比对:
- 46000 / 46002 / 46004 / 46007 / 46008:中国移动
- 46001 / 46006 / 46009:中国联通
- 46003 / 46011 / 46012:中国电信
多数 SIM 卡为多号段共用,建议按 MNC 前缀归类,而不是精确匹配单一值。
-
网络侧运营商名称
AT+COPS? 可返回当前注册网络的长格式运营商名称;AT+COPS=? 可查询可用网络列表。需注意漫游或共享网络场景下返回的是网络归属,不一定等于卡归属。 -
SPN 读取
部分版本 EC20 支持读取 SIM 卡 SPN(服务提供商名称),具体支持情况与返回格式请以对应型号的《Quectel EC20 AT 命令手册》为准。
说明:ICCID 只标识卡片本身,无法稳定映射运营商;IMSI 属于卡内网络签约信息,用于运营商判断更合适。
本回答仅供参考。若问题已解决,可标记为
解决方案 ;若仍有疑问,请等待官方技术人员回复,最终请以专业解答为准。
AT+CIMI —查 IMSI( IMSI 的前 3 位是 MCC(国家码),紧接着 2~3 位是 MNC(运营商码),据此可判定发卡运营商)
比如:
AT+CIMI
460023210226023
OK
IMSI = 460 + 02 → 46002 为中国移动(46001/46006 = 联通,46003/46011 = 电信)。