You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 10下如何通过ADB或类似方式取消SIM卡锁定?

Android 10下取消SIM卡PIN锁定的ADB解决方案

背景

你已通过ADB调用service call phone 8 i32 <simId> s16 <PUK码> s16 <新PIN码>完成SIM PIN码修改,但操作后自动开启SIM锁定,且尝试的AT+CLCK命令仅对SIM1有效,SIM2无反应。


一、修复AT命令对SIM2的支持问题

AT命令无效的核心原因是你指定的/dev/smd8是SIM1对应的AT端口,SIM2需要使用设备上的另一个SMD端口。

  1. 查找所有可用的SMD端口:

    adb shell ls /dev/smd*
    

    输出会列出类似/dev/smd8、/dev/smd9、/dev/smd10的端口。

  2. 针对SIM2发送AT解锁命令:
    逐个测试找到SIM2对应的端口,执行命令:

    adb shell echo "AT+CLCK=\"SC\",0,\"你的PIN码\"\r" > /dev/smd<SIM2端口号>
    

    例如如果SIM2对应/dev/smd9,则命令为:

    adb shell echo "AT+CLCK=\"SC\",0,\"你的PIN码\"\r" > /dev/smd9
    
  3. 通用AT命令发送方式(无需找端口):
    部分设备支持通过phone服务直接向指定SIM卡发送AT命令,避免端口查找的麻烦:

    adb shell service call phone 39 i32 <SIM2的ID> s16 "AT+CLCK=\"SC\",0,\"你的PIN码\""
    

    注:39是sendAtCommand方法的ID,不同设备可能有差异,若无效可通过adb shell service call phone | head -20查看方法列表确认ID;SIM ID通常从0或1开始,可通过adb shell dumpsys telephony.registry查看当前SIM的ID。


二、尝试service call直接禁用SIM锁定

你提到查阅AIDL未找到相关方法,可能是因为部分厂商在标准Android 10的ITelephony AIDL基础上做了扩展。可以尝试以下方式:

  1. 查看phone服务的所有方法:

    adb shell service call phone | head -30
    

    输出会显示每个方法ID对应的参数格式,寻找包含simLock、disable等关键词的方法。

  2. 尝试通用的禁用锁定命令:
    若找到对应方法(比如方法ID为Y),可执行类似命令:

    adb shell service call phone Y i32 <simId> i32 0 s16 <你的PIN码>
    

    其中i32 0表示禁用锁定(1为开启),具体参数需匹配方法要求。


验证方法

执行命令后重启设备,检查是否不再弹出SIM锁定界面,或通过adb shell dumpsys telephony.registry | grep SimLock查看锁定状态。

内容的提问来源于stack exchange,提问作者Oran Mac Carthy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 00:02:53