web-dev-qa-db-ja.com

LinuxのモデムにATコマンドを送信する方法は?

Linux(Ubuntu)では、ATコマンドを/dev/ttyACM0のモデムに送信しようとしています。次のようにしてみました。

Sudo socat - /dev/ttyACM0

しかし、何かを入力すると、このコマンドを繰り返す行が表示されます(OKが必要です)。

私がする時

Sudo minicom modem1

それは動作するようです。 ATと入力してOKを取得します。がらくたを入力すると、ERRORが表示されます。

Minicomのmodem1/dev/ttyACM0でモデムを使用するように設定されているようです。

ATコマンドを送信するためにsocatをどのように使用できますか?何かを構成する必要がありますか?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
13
Alex

socat - /dev/ttyUSB2,crnlをお試しください

これは、socatに改行だけでなくキャリッジリターンも送信するように指示します。

明確化-これは、電動タイプライターの暗い時代に戻ります。キャリッジをページの0の位置にロールバックするように指示する必要があります-エルゴ、キャリッジリターン用紙を1行上に移動します。

9
Aaron Mason

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コマンドを使用する他のすべてのもの。

5
hlovdal

私はあなたが何を望んでいるかを示すこのChromiumプロジェクトの投稿に出くわしました。タイトルは 携帯電話モデムのデバッグ です。

そのページからの抜粋

ATコマンドセットを使用してモデムと直接通信する

ほとんどのモデムは、ATモデムを制御して情報を照会するコマンドをサポートしています。開発者モードが有効なChromium OSデバイスでは、socatコマンドを使用してモデムと通信できます。Chromiumが必要ですテストイメージがインストールされたOSデバイス(または、開発サーバーに精通している場合は、gmerge socatを使用できます)例:

  • CTRL + ALT + Tを入力して、Crosshシェルに入ります。
  • Shellと入力して、bashシェルに入ります。
  • 使用するUSB​​デバイスを特定します:ls/dev/ttyACM */dev/ttyUSB *
  • 実行中の場合はモデムマネージャを停止します。sudostop 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
slm