进行语音通话时如何从华为 GSM 调制解调器获取音频?

Gol*_*lar 7 modem audio gsm voice huawei

我有一个华为 E160E 和一个华为 K3765“GSM”调制解调器。

问题是:如何使用这些调制解调器发送和接收音频数据,拨打或接听电话/语音电话?

根据规范(E160EK3765)和 AT 命令,两者似乎都支持语音通话:

发行

AT^CVOICE?
Run Code Online (Sandbox Code Playgroud)

结果是

^CVOICE:0,8000,16,20

OK
Run Code Online (Sandbox Code Playgroud)

(两个调制解调器相同)。

两个调制解调器都提供 3 个 USB 端口,我将它们称为/dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2(假设系统中没有其他 USB 串行设备)。K3765 额外注册了一个cdc_ether以太网设备。我正在使用 Linux。

在两者上/dev/ttyUSB0/dev/ttyUSB2我都可以放置 AT 命令并接收它们的答案;另外,/dev/ttyUSB2报告状态消息(如^RSSI:23^BOOT:38021325,0,0,0,77^SIMST:1^SRVST:2)。当有人打电话时,K3765 也会默认报告(RING ) 时,,而 E160E 不会。

在两个调制解调器上,我都可以使用 拨打电话,ATD<number>;也可以使用 接听电话ATA

/dev/ttyUSB1似乎什么都不做;简单地写入这个文件不会得到任何数据,从它读取不会得到任何数据。

如何将音频数据传入和传出调制解调器?

我已经找到了这个 stackexchange 问题Sai Chaitanya的答案以及使用ffmpeg/的评论ffplayffplay对我来说只是停滞不前,并且代码被剪断了,我无法尝试太多(不是程序员,特别是不在C;并且根本不知道这是否适用于我的调制解调器)。

在互联网上,除了使用大软件包(例如星号)之外,我没有找到有关如何从这些设备中实际获取音频的信息——我不想要的,问题是如何获取它工作的基本方式。

那么,音频通信如何与(那些)华为 GSM 调制解调器一起工作?

调制解调器信息:ATI-command 的输出:

E160E:

Manufacturer: huawei
Model: E160X
Revision: 11.609.10.02.432
IMEI: 354765038021325
+GCAP: +CGSM,+DS,+ES

OK
Run Code Online (Sandbox Code Playgroud)

K3765:

Manufacturer: huawei
Model: K3765
Revision: 11.126.03.06.00
IMEI: 353142047899771
+GCAP: +CGSM,+DS,+ES

OK
Run Code Online (Sandbox Code Playgroud)

Gol*_*lar 4

拨打或接听电话后,需要通过发出以下命令来启用串行设备上的音频输出(每次通话时)

AT^DDSETEX=<number>
Run Code Online (Sandbox Code Playgroud)

(对于我的设备,仅AT^DDSETEX=2支持将音频传入和传出第二个串行接口,即/dev/ttyUSB1)。

然后,读取 from/dev/ttyUSB1会提供一些数据,写入内容会/dev/ttyUSB1在另一端的电话上发出一些噪音。

现在,找出如何正确读取和写入音频数据,以便可以听到正确的内容,而不仅仅是噪音,就只剩下技术练习了;-)。

感谢http://lists.ofono.org/pipermail/ofono/2012-March/012551.html,我在那里有了尝试这个的想法。