如何通过Modem Manager(mmcli)从终端接听来电及解决通话无声音问题
如何通过Modem Manager(mmcli)从终端接听来电及解决通话无声音问题
嘿,我来帮你梳理下这个问题哈~你已经找对了监听来电和接听的基本方法,没声音的问题其实是因为Modem Manager只负责 modem 的呼叫控制,音频通路需要额外配置,尤其是像ZTE MF-190这类USB dongle,得手动把音频路由到系统的音频设备才行。
一、先确认接听来电的完整流程
你目前的操作是对的,完整步骤应该是这样:
- 先开一个终端窗口,执行
mmcli monitor持续监听 modem 事件,当有来电时,会输出包含呼叫索引(也就是你用的<index>)的信息 - 再开另一个终端,用
mmcli -o <呼叫索引> --accept接听来电,这一步你已经成功触发了通话连接(手机那边计时就是证明)
二、解决通话无声音的核心步骤
1. 查看Modem的音频支持情况
首先得确认你的ZTE MF-190是否提供音频接口:
- 先通过
mmcli -L找到你的modem索引(比如通常是/org/freedesktop/ModemManager1/Modem/0,对应的索引就是0) - 然后执行
mmcli -m <modem索引> --audio,会列出modem支持的音频端点和格式,比如PCM、GSM等,这能帮你确定后续的音频配置方向
2. 配置系统音频路由
USB modem的音频是作为独立声卡存在的,你需要把通话音频指向它:
- 用
aplay -l列出系统所有音频设备,找到ZTE设备对应的声卡(比如输出里会有card 1: MF190 [ZTE MF190], device 0: USB Audio [USB Audio]这样的条目,card 1就是声卡编号,device 0是设备编号) - 你可以直接指定通话时的输入输出设备:
- 测试播放声音到modem(让对方听到你):
aplay -D plughw:1,0 测试音频文件.wav - 测试录制modem的声音(听对方说话):
arecord -D plughw:1,0 -f cd 录制文件.wav
- 测试播放声音到modem(让对方听到你):
- 如果想把这个modem设为默认音频设备,可以编辑
/etc/asound.conf添加配置(比如指定默认的plughw设备为你的ZTE声卡)
3. 检查Modem Manager的音频配置
有些情况下Modem Manager默认没开启音频支持,你可以检查配置:
- 打开
/etc/ModemManager/ModemManager.conf文件(需要sudo权限),看看有没有EnableAudio=true这一行,如果没有就加上 - 保存后重启Modem Manager服务:
sudo systemctl restart ModemManager
4. 手动指定通话音频格式
部分modem需要明确设置通话的音频格式才能正常传输声音:
- 接听来电后,执行
mmcli -o <呼叫索引> --set-audio-format=gsm(或者你在第一步查到的其他支持格式,比如pcm),然后再测试音频是否正常
另外你说的Ubuntu自带的GUI移动管理器确实功能有限,终端命令才是控制Modem Manager更灵活的方式,多试试上面的步骤应该能解决声音问题~
备注:内容来源于stack exchange,提问作者Nhan.Q
相关产品推荐
相关产品推荐

