EC20如何查询MSISDN

项目希望通过EC20知道当前SIM卡属于哪个运营商,当前使用ICCID发现有些无法区分,卡商说能通过MSISDN知道运营商,at+cnum能读到OK的返回,没有MSISDN。

EC20 区分运营商,建议不要依赖 MSISDN。

关于 AT+CNUM 返回 OK 但无号码

AT+CNUM 读取的是 SIM 卡内 EF_MSISDN 字段。该字段由运营商在开卡时写入,很多运营商不写入或写入空值,因此会出现返回 OK 但没有号码的情况。这是卡侧数据缺失,模组无法自行获取本机号码;若项目必须使用 MSISDN,需联系运营商在卡内写入或通过 HLR 侧开通。

建议的运营商识别方案

  1. IMSI 判断(推荐,可靠)
    使用 AT+CIMI 读取 IMSI,取前 5~6 位(MCC+MNC)比对:
  • 46000 / 46002 / 46004 / 46007 / 46008:中国移动
  • 46001 / 46006 / 46009:中国联通
  • 46003 / 46011 / 46012:中国电信

多数 SIM 卡为多号段共用,建议按 MNC 前缀归类,而不是精确匹配单一值。

  1. 网络侧运营商名称
    AT+COPS? 可返回当前注册网络的长格式运营商名称;AT+COPS=? 可查询可用网络列表。需注意漫游或共享网络场景下返回的是网络归属,不一定等于卡归属。

  2. SPN 读取
    部分版本 EC20 支持读取 SIM 卡 SPN(服务提供商名称),具体支持情况与返回格式请以对应型号的《Quectel EC20 AT 命令手册》为准。

说明:ICCID 只标识卡片本身,无法稳定映射运营商;IMSI 属于卡内网络签约信息,用于运营商判断更合适。

本回答仅供参考。若问题已解决,可标记为 :white_check_mark:解决方案 ;若仍有疑问,请等待官方技术人员回复,最终请以专业解答为准。

AT+CIMI —查 IMSI( IMSI 的前 3 位是 MCC(国家码),紧接着 2~3 位是 MNC(运营商码),据此可判定发卡运营商)
比如:
AT+CIMI
460023210226023
OK
IMSI = 460 + 02 → 46002 为中国移动(46001/46006 = 联通,46003/46011 = 电信)。