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

Ale*_*lex 15 linux modem serial-port

在 Linux (Ubuntu) 中,我试图将 AT 命令发送到/dev/ttyACM0. 我试着这样做:

sudo socat - /dev/ttyACM0
Run Code Online (Sandbox Code Playgroud)

但是在输入任何内容时,我只会得到一行重复此命令的行(我希望是OK)。

当我做

sudo minicom modem1
Run Code Online (Sandbox Code Playgroud)

它似乎工作。我输入 anAT并得到一个OK. 我输入一些废话,我得到一个ERROR.

似乎modem1minicom 以某种方式配置为在/dev/ttyACM0.

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

附加信息

给定的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 
Run Code Online (Sandbox Code Playgroud)

设备本身具有以下 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
Run Code Online (Sandbox Code Playgroud)

并且 tty 配置如下:

speed 57600 baud; line = 0;
eof = ^A; min = 1; time = 0;
-brkint -icrnl -imaxbel
-opost -onlcr
-isig -icanon -echo -echoe
Run Code Online (Sandbox Code Playgroud)

Aar*_*son 13

尝试 socat - /dev/ttyUSB2,crnl

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

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


hlo*_*dal 6

在 Linux 中向调制解调器发送 AT 命令的最佳方法是使用程序atinout,该程序的唯一目的是从命令行向调制解调器发送 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
$
Run Code Online (Sandbox Code Playgroud)

或任何其他您使用 AT 命令的东西。


slm*_*slm 4

我发现这篇 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 ~ $ 
Run Code Online (Sandbox Code Playgroud)

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