如何在 Linux 中向调制解调器发送 AT 命令?

如何在 Linux 中向调制解调器发送 AT 命令?

在 Linux (Ubuntu) 中,我尝试将 AT 命令发送到位于 的调制解调器/dev/ttyACM0。我尝试这样做:

sudo socat - /dev/ttyACM0

但是当输入任何内容时,我只是得到一行重复此命令(我期望一个OK)。

当我做

sudo minicom modem1

似乎有效。我输入 anAT并得到一个OK.我输入一些废话,得到一个ERROR.

似乎modem1minicom 以某种方式配置为使用 处的调制解调器/dev/ttyACM0

如何使用socat发送AT命令?我需要配置一些东西吗?也许我可以使用 minicom 的配置modem1(我不知道如何找到/查看此配置)?

附加信息

给定的socat命令正确吗?我应该尝试一些选择吗?通过该-v选项,我看到以下内容:

AT
> 2013/10/23 17:10:28.917413  length=3 from=0 to=2
AT
< 2013/10/23 17:10:28.921598  length=3 from=0 to=2
AT
AT
ksjdhfjdgfhjkdfh
> 2013/10/23 17:10:30.244923  length=17 from=3 to=19
ksjdhfjdgfhjkdfh
< 2013/10/23 17:10:30.251383  length=29 from=3 to=31
ksjdhfjdgfhjk\b \bd\b \bf\b \bh\b \b
ksjdhfjdgfhj 

通过以下 dmesg 输出找到设备本身:

[5983726.808063] usb 2-1: USB disconnect, device number 3
[5983730.800021] usb 2-1: new full-speed USB device number 4 using uhci_hcd
[5983730.920014] usb 2-1: device descriptor read/64, error -71
[5983733.629524] usb 2-1: New USB device found, idVendor=0572, idProduct=1329
[5983733.629533] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[5983733.629539] usb 2-1: Product: USB Modem
[5983733.629544] usb 2-1: Manufacturer: Conexant
[5983733.629549] usb 2-1: SerialNumber: 24680246
[5983733.632673] cdc_acm 2-1:1.0: ttyACM0: USB ACM device

tty 配置如下:

speed 57600 baud; line = 0;
eof = ^A; min = 1; time = 0;
-brkint -icrnl -imaxbel
-opost -onlcr
-isig -icanon -echo -echoe

答案1

尝试socat - /dev/ttyUSB2,crnl

这告诉 socat 发送回车符和换行符。

澄清 - 这可以追溯到电动打字机的黑暗时代,在那里你必须告诉它把笔架滚回页面上的位置 0 - 因此,a回车- 以及告诉它将纸张向上移动一行。

答案2

在 Linux 中向调制解调器发送 AT 命令的最佳方法是使用该程序阿蒂努特其编写的唯一目的是从命令行向调制解调器发送 AT 命令。

你可以用它来测试调制解调器是否已启动并正在运行,备份电话簿:

$ atinout - /dev/ttyACM0 ten_first_phonebook_entries.txt <<EOF
at+cscs="UTF-8"
at+cpbs="SM"; +cpbr=1,10
at+cpbs="ME"; +cpbr=1,10
EOF
$

或您使用 AT 命令进行的任何其他操作。

答案3

我发现这篇 Chromium 项目帖子显示了您想要的内容。它的标题是:调试蜂窝调制解调器

该页面摘录

使用 AT 命令集直接与调制解调器通信

大多数调制解调器支持 AT 命令来控制调制解调器和查询信息。在启用了开发者模式的 Chromium 操作系统设备上,您可以使用 socat 命令与调制解调器通信。您需要安装了测试映像的 Chromium OS 设备(或者如果您熟悉开发服务器,则可以使用 gmerge socat)。例如:

  • 键入 CTRL+ALT+T 进入 Crosh shell。
  • 输入 shell 进入 bash shell。
  • 确定要使用哪个 USB 设备: ls /dev/ttyACM* /dev/ttyUSB*
  • 如果调制解调器管理器正在运行,请停止它: sudo stop modemmanager
  • 键入 sudo socat - /dev/ttyACM1,crnl 或 sudo socat - /dev/ttyUSB0 与调制解调器通信。
  • 确保使用以下命令启用调制解调器:“AT+CFUN=1”

例如:

    crosh> shell
    chronos@localhost ~ $ sudo stop modemmanager
    chronos@localhost ~ $ ls /dev/ttyACM* /dev/ttyUSB*
    /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2
    chronos@localhost ~ $ socat - /dev/ttyUSB1
    ATZ
    OK
    AT+CFUN=1
    OK
    ATI
    Manufacturer: Qualcomm Incorporated
    Model: ......
    Revision:....
    ESN: 0x80d...
    +GCAP: +CIS707A, ....

    chronos@localhost ~ $ 

根据调制解调器的不同,您可以尝试不同的 AT 命令,例如“AT+CGMI”、“AT+CGSN”等。

答案4

#TIL 您可以用于screen此目的。尝试

screen /dev/ttyACM0 57600,cs8,-parenb,-cstopb,-hupcl

https://apple.stackexchange.com/a/318280/84497

相关内容