ano
发布于 2025-06-04 / 26 阅读
0
0

RasPBX × Quectel 调试记录:从崩溃到通话的全链路排查(一)

折腾时间:约 4 小时
环境:Raspberry Pi 5 + RasPBX (Asterisk 22.3.0) + Quectel EC20 模块
关键词:chan_quectelttyUSB2ModemManager、ALSA、AT command failed、音频设备缺失


起因:RasPBX + Quectel 直连方案

近期在树莓派上部署 RasPBX,并尝试通过 chan_quectel 让 Asterisk 直接通过 Quectel 模块接打电话、发短信、跑 USSD。

一切看上去都很简单,直到我运行 asterisk -rvvv 后,开始了一段令人头秃的调试之旅。


问题逐一炸出

1. 设备无法打开:Device or resource busy

提示:

unable to open /dev/ttyUSB2: Device or resource busy

原因分析: 系统启动后 /dev/ttyUSB2 被系统服务占用,最常见的是 ModemManager

解决方法:

sudo systemctl stop ModemManager
sudo systemctl disable ModemManager

检查是否仍被占用:

fuser /dev/ttyUSB2
lsof /dev/ttyUSB2

2. 音频设备无法打开:ALSA 报错

提示:

snd_pcm_open failed: No such device
Problem opening ALSA capture device hw:CARD=Android,DEV=0

原因分析: 默认 chan_quectel 启用了音频功能,但系统中并没有 CARD=Android 的声卡,或该卡未插入耳麦、配置无效。

解决方法: 修改配置文件 /etc/asterisk/chan_quectel.conf,关闭音频功能:

[general]
use_sound=no

[quectel0]
use_voice=no

可选方案(如确实需要音频):启用 dummy 声卡

sudo modprobe snd-dummy

3. AT 命令失败:expected response 'OK'

提示:

Error write command 'AT' expected response 'OK' length 3, cancel
Error adding initialization commands to queue

排查思路:

  • minicom -D /dev/ttyUSB2 手动测试是否能返回 OK
  • 确认 /dev/ttyUSB2 是否为 AT 通道(dmesg | grep ttyUSB
  • 有些模块实际 AT 通道为 /dev/ttyUSB3

最终方案: 配置文件指定正确端口:

device=/dev/ttyUSB2

如果串口不确定,可创建别名:

ls -l /dev/serial/by-id/

最终可用配置文件

[general]
debug=yes
use_sound=no
codec=alaw
samplerate=8000
timeout=5000
sms_charset=UCS2
sms_load=no

[quectel0]
device=/dev/ttyUSB2
number=Unknown
enabled=yes
use_voice=no
use_sms=yes
use_ussd=yes
initdelay=1000
answerdelay=2
ringduration=60
ringdet=clip

实用指令备忘

# 检查串口分配情况
dmesg | grep ttyUSB

# 查看是否被占用
lsof /dev/ttyUSB2
fuser /dev/ttyUSB2

# 手动测试 AT 通信
minicom -D /dev/ttyUSB2

# 重启 Asterisk
sudo systemctl restart asterisk

# Asterisk 控制台调试
asterisk -rvvv
quectel show devices

总结

理论上这是一个“插上就能跑”的方案,实际上你需要和 Linux 的串口、alsa、模块分配、udev、ModemManager 各种奇怪的机制周旋一整天。

但一旦调通,它的稳定性和功能性在嵌入式项目中几乎无可替代。

下一步计划:

  • 增加短信自动上报脚本
  • 使用 extensions_custom.conf 实现语音呼叫转接
  • 对接外部 Web 短信通知系统

如果你也在 RasPBX 上调 Quectel,希望这份记录能让你少踩几个坑。如果你还卡住,欢迎留言,我陪你继续 debug。


评论