手机上用AT命令访问sim卡

0.手机获得root权限

1.找到AT端口
高通

/dev/at_mdm0 (SDM636,SDM8150等芯片都是这个 tty设备)
/dev/smd11  (MSM8909W)

联发科
/dev/radio/atci1
/dev/radio/atci2
展讯
/dev/stty_lte1

/dev/stty_lte31

展讯的stty_lte1, stty_lte2, stty_lte6, stty_lte7, 8, 9, 10, 11, 12….17
stty20, 21, 22, 23, … 30 能正常访问 sim卡
有些端口,只能执行其他AT命令,比如 AT+CGSN AT+CGREG? AT+CCLK?

但 /dev/stty_lte20 好像都是可以的
比如 Spreadtrum SL8521E

2.发送命令

echo "AT+COPS?\r"  > /dev/stty_lte1

3.常用AT命令

AT+CGSN            请求产品序列号号,一般就是IMEI
AT+CGLA            UICC逻辑通道访问
AT+CGMI            设备制造商标识
AT+CGMM            型号标识
AT+CGMR            版本
AT+CIMI            请求读取IMSI
AT+CSCA?           获取SMSP
AT+CPIN            输入PIN
AT+CPWD            改变密码
AT+CRSM            保密的SIM卡访问
AT+CSIM            一般SIM卡访问
AT+CUAD            USIM卡应用发现
ATA                 接电话(answer)
ATD                 拨打电话(dial)
ATE                 打开命令回显(echo)
ATH                 挂断电话(hangup)
AT+ICCID            读取ICCID      (展讯不支持)
AT+CCHO             打开逻辑通道
AT+CCHC=<sessionid> 关闭逻辑通道

4.分析

读取Kc
命令  "AT+CRSM=176,20306,0,0,9\r"
响应  +CRSM: 144,0,A9FCB522A7062D5303

读取ICCID
命令   AT+CRSM=176,12258,0,0,10
响应   +CRSM: 144,0,98686091010005689312

读取IMSI
命令   "AT+CRSM=176,28423,0,0,9\r"

5.命令参数

AT+CRSM=instruction, file_id, P1, P2, P3, data, path_id

instruction可以为
B0  读二进制
B2  读记录
C0  得到响应(一般为取fcp)
D6  更新二进制
DC  更新记录
F2  取状态

AT+CSIM=length, instruction






在新标准中, 
AT+CGLA 逻辑通道访问,就是AT+CSIM一样的功能 AT+CRLA 就是 AT+CRSM
多了个session_id参数 GRLA命令参数 +CRLA=<sessionid>,<command>[,<fileid>[,<P1>,<P2>,<P3>[,<data>[,<pathid>]]]] CGLA命令参数 +CGLA=<sessionid>,<length>,<command>

6. 其他

展讯和高通都不支持AT+CSIM 展讯和联发科,都支持 新的逻辑通道命令,高通不支持

echo "AT+CCHO=\"A0000000871002FF86FFFF89FFFFFFFF\"\r" > /dev/stty_lte1
echo "AT+CGLA=1, 14, \"00A40004023F00\"\r" > /dev/stty_lte1
echo "AT+CCHC=1\r" > /dev/stty_lte1
文件不存在
echo "AT+CRSM=192,28648,0,0,0,\"\",\"3F007FFF\"\r" > /dev/stty_lte1
和
echo "AT+CRSM=176,28648,0,0,120,\"\",\"3F007FFF\"\r" > /dev/stty_lte1
都是
回应
+CRSM: 106,130

在飞行模式下,这个AT命令也是可以用的

实例
Mi Max2 (MSM8953)

一个adb shell 执行 cat /dev/at_mdm0    
另外执行 echo 'AT+CRSM=176,12258,0,0,10\r\n' > /dev/at_mdm0
前面那个就能读到 ICCID
                                                                                                          
AT+CRSM=176,12258,0,0,10
+CRSM: 144,0,"98681002098103218863"

OK
--------------------

echo 'AT+CSIM=30,80AA00000AA9088100820101830107\r\n' > /dev/at_mdm0

+CME ERROR: operation not supported
高通不支持CSIM

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注