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


13

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

sudo socat - /dev/ttyACM0

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

当我做

sudo minicom modem1

它似乎有效。我输入AT并得到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 

可以通过以下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

也许您可以使用这些TERMIOS选项使它正常工作,但我从未检查过。
亚历克斯

通过此网站搜索“ socat modem”,有5个匹配项,看是否有帮助。我没有设置可尝试这些设置,因此我无能为力。(unix.stackexchange.com/search?q=socat+modem
SLM

这些提示没有用。我似乎有一个真正的基本问题,因为socat应该可以工作。它曾经工作过。但是我不知道问题是什么。上面的命令正确吗是我的第一个问题。
亚历克斯

Answers:


9

尝试 socat - /dev/ttyUSB2,crnl

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

澄清-这可以追溯到电动打字机的黑暗时代,在那儿您必须告诉它将笔架滑回到页面上的位置0-ergo,笔架返回 -并告诉它将纸张向上移动一行。


5

在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
$

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


4

我遇到了这个Chromium项目帖子,其中显示了您想要的内容。标题为:调试蜂窝调制解调器

该页面的摘录

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

大多数调制解调器都支持用于控制调制解调器和查询信息的AT命令。在启用了开发人员模式的Chromium OS设备上,可以使用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”等。


1
根本没有AT命令在起作用!这是我的问题!我需要配置一些东西吗?命令行可以吗?我会犯一些大错误吗?
亚历克斯

@Alex-正如我说过的,我没有任何这种硬件,因此除了提供此类信息之外,很难为您提供帮助。您必须对其进行调试。我将尝试重启有问题的设备,然后查看它们是否处于挂起状态,在dmesg日志中查找信息。抱歉,我不能为您提供更多帮助。
slm

1
您不能只显示“ AT + DONTREMEMBERZMODEM”> / dev / modemtty吗?
mikeserv
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.