使用SIM调制解调器发AT命令时特定短码USSD请求无响应如何解决
关于特定USSD请求无返回的问题排查与解答
为什么只有这条要求输入PIN码的USSD命令无返回?
- 这条USSD属于运营商侧的安全类USSD交互,调制解调器默认不会主动上报需要用户输入敏感信息的USSD通知,避免敏感数据被未授权的应用抓取。普通查询类USSD(比如余额查询
AT+CUSD=1,"*133#",15)不需要处理敏感输入,所以可以正常返回结果。 - 你使用的调制解调器固件默认开启了安全USSD拦截逻辑,安卓系统因为本身有权限管理框架,会识别到这类安全USSD请求后弹出输入框,走系统级的敏感交互流程,所以插手机可以正常响应。
- 部分调制解调器会将需要PIN输入的USSD响应归类为
URC(非请求结果码),如果你的Putty会话或者调制解调器配置没有开启对应URC的上报开关,结果就会被直接丢弃,不会显示在终端里。
激活安全USSD响应的相关AT命令
不同厂商的调制解调器命令存在差异,通用的调试和激活方法如下:
- 首先开启全量URC上报,依次执行命令:
AT+CREG=2、AT+CGREG=2、AT+CEREG=2,再测试USSD请求,查看是否有新的返回码。 - 高通方案的调制解调器通用安全USSD开关命令为:
AT+CUSDPIN=1,执行后即可开启PIN类USSD的响应上报功能。 - 联发科方案的调制解调器通用安全USSD开关命令为:
AT+ETUSDCTRL=1,1,执行后即可开启敏感USSD交互的透传功能。 - 如果执行上述命令后仍然无返回,可以尝试将USSD编码格式修改为7位后重试,命令示例:
AT+CUSD=1,"*你的目标短码#",7。 - 若以上操作均无效果,可抓取调制解调器的底层串口日志,确认运营商已经返回了USSD响应只是被固件拦截,这种情况可尝试刷入定制版调制解调器固件关闭安全拦截。
内容的提问来源于stack exchange,提问作者AP - IT Team
相关产品推荐
相关产品推荐

