当前位置: 首页 > news >正文

PPP 拨号失败:ATD*99***1# ... failed

从日志来看,主要有两类问题:


一、led_indicator_stopinvalid p_handle

E (5750) led_indicator: …/led_indicator.c:461 (led_indicator_stop):invalid p_handle
原因分析
  • led_indicator_stop() 的参数 p_handle (即之前 led_indicator_start() 返回的句柄)无效或为 NULL
  • 可能在调用 stop 之前,start 并未成功返回,或者您没有把返回值正确地保存到一个全局/静态变量里就直接调用了 stop。
建议方案
  1. 检查返回值

    led_indicator_handle_t handle = NULL;
    esp_err_t err = led_indicator_start(&handle, &cfg);
    if (err != ESP_OK || handle == NULL) {ESP_LOGE(TAG, "led_indicator_start failed: %d", err);// 不要调用 stop
    }
    // … 若要停止指示灯:
    if (handle) {led_indicator_stop(handle);
    }
    
  2. 保持句柄生命周期

    • 确保 handle 的作用域足够长(不要在局部函数栈上提前释放)。
    • 如果多次 start/stop,最好用一个全局或静态变量追踪当前状态。

二、PPP 拨号失败:ATD*99***1# ... failed

W (11265) esp_modem_dce: esp_modem_dce_generic_command(31): Command:ATD*99***1# ...failed
E (11265) esp-modem-dte: esp_dte_handle_line(79): handle line failed
原因分析
  • 模组发出的拨号命令 ATD*99***1# 被 DCE(调制解调器)拒绝,导致 PPP 建连失败。
  • 典型原因是:未先设置 PDP 上下文 APN,或拨号字符串不符合网络运营商要求。
建议方案
  1. 设置 APN

    // 举例:移动卡 APN 通常是 “cmnet” 或 “cmwap”,请根据实际 SIM 卡运营商调整
    esp_modem_dce_t *dce = esp_modem_dce_get_handle(modem);
    esp_modem_dte_generic_command(dce, "AT+CGDCONT=1,\"IP\",\"cmnet\"", NULL, 0);  // 第 1 个 PDP,上网方式 IP
    
  2. 确认 SIM 已附着网络

    // 确保 SIM 卡已经注册且附着 GPRS/3G/4G
    esp_modem_dte_generic_command(dce, "AT+CGATT=1", NULL, 0);
    
  3. 使用正确的拨号命令

    • 有些模组或运营商需要 ATD*99#,而不是 *99***1#;也可以直接使用

      esp_modem_dce_generic_command(dce, "ATD*99#", NULL, 0);
      
    • ESP-Modem 库在 esp_modem_dce_start_ppp() 内部会自动选择拨号字符串,若自定义不生效可以手动发:

      esp_modem_dte_write(modem->dte, "ATD*99#\r", strlen("ATD*99#\r"));
      
  4. 查看运营商返回的错误码

    • esp_modem_dce_generic_command(...) 前后加上日志打印,捕获完整的 AT 返回值,以便定位是 “插槽无响应”、“未激活” 还是 “APN 不匹配”。

三、综合示例

// 假设 modem 已经通过 esp_modem_new_*() 创建并关联好 DTE/DCE// 1. 设置 PDP/ APN
esp_modem_dte_generic_command(dce, "AT+CGDCONT=1,\"IP\",\"your.apn.here\"", NULL, 0);// 2. 附着网络
esp_modem_dte_generic_command(dce, "AT+CGATT=1", NULL, 0);// 3. 启动 PPP(内部会执行 ATD 拨号)
//    若失败,可改用手动拨号:
esp_err_t err = esp_modem_dce_start_ppp(dce);
if (err != ESP_OK) {ESP_LOGW(TAG, "自动拨号失败,尝试手动拨号 ATD*99#");esp_modem_dte_generic_command(dce, "ATD*99#", NULL, 0);
}// 4. 等待 PPP 成功或失败的事件
//    在 event_handler() 中处理 PPP 成功/失败,并打印更详细的返回行

在这里插入图片描述


通过上述检查和调整,应该能解决:

  1. LED 指示灯无效句柄 —— 正确管理 led_indicator_handle_t
  2. PPP 拨号失败 —— 先设置 APN,再确认 SIM 附着,使用正确的拨号命令。

如还有新日志或错误码,欢迎继续贴出来一起定位!

相关文章:

  • AOP的代理模式
  • 计算机系统结构1-3章节 期末背诵内容
  • 从逻辑视角学习信息论:概念框架与实践指南
  • 软考 组合设计模式
  • 数据可视化利器 - Grafana 与 Prometheus 联手打造监控仪表盘
  • 【闲聊篇】java好丰富!
  • grafana/loki-stack 设置日志保存时间及自动清理
  • 56 在standby待机打通uart调试的方法
  • 基于 Vue3 与 exceljs 实现自定义导出 Excel 模板
  • NV054NV057美光固态闪存NV059NV062
  • 经典密码学和现代密码学的结构及其主要区别(1)维吉尼亚密码—附py代码
  • 49 python Matplotlib之Pandas 数据可视化
  • 动态规划-740.删除并获取节点-力扣(LeetCode)
  • Trae+12306 MCP,10分钟搭建行程可视化助手
  • MDK的编译过程及文件类型全解
  • 同一无线网络下的设备IP地址是否相同?
  • FFTW图像处理入门
  • Jenkins 2.426.2配置“构建历史的显示名称,加上包名等信息“
  • 多路径传输(比如 MPTCP)控制实时突发
  • 通过上传使大模型读取并分析文件实战
  • 沈阳网站建设费用/seo案例
  • 大连 网站建设 有限公司/优化seo
  • 湖南做网站 在线磐石网络/网络广告推广方式
  • 个人网站下载/舆情优化公司
  • 浙江坤宇建设有限公司网站/公众号推广
  • 如何做网站的banner/中国十大外贸平台