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


13

Linux(Ubuntu)では、ATコマンドをでモデムに送信しようとしています/dev/ttyACM0。私はそれをやろうとしました:

sudo socat - /dev/ttyACM0

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

私がする時

sudo minicom modem1

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

と思われmodem1minicomのために何とかでモデムを使用するように設定されています/dev/ttyACM0

socatを使用してATコマンドを送信するにはどうすればよいですか?何かを設定する必要がありますか?多分私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

多分あなたはこれらのTERMIOSオプションでそれを動かして動作させることができますが、私はチェックしませんでした。
アレックス

このWebサイトを検索して「socatモデム」を探し、5件のヒットがあります。それらのどれかが役立つかどうかを確認してください。私はこれらを試してみるための設定を持っていないので、それ以上はどうしようもありません。(unix.stackexchange.com/search?q=socat+modem
SLM

ヒントは役に立ちません。socatが動作するはずなので、私は本当に基本的な問題を抱えているようです。以前は機能していました。しかし、私は問題が何であるかわかりません。上記のコマンドは正しいですか私の最初の質問です。
アレックス・

回答:


9

やってみる socat - /dev/ttyUSB2,crnl

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

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


5

LinuxでATコマンドをモデムに送信する最良の方法は、コマンドラインからATコマンドをモデムに送信することのみを目的として作成されたプログラムatinoutを使用することです。

これを使用して、モデムが稼働しているかどうかテストし、電話帳のバックアップを作成できます。

$ 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と入力して、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 + CGMI」、「AT + CGSN」など、さまざまなATコマンドを試すことができます。


1
ATコマンドがまったく機能していません。これは私の問題です!何かを設定する必要がありますか?コマンドラインは大丈夫ですか?大きな間違いはありますか?
Alex

@アレックス-私が言ったように、私はこのハードウェアを持っていないので、このような情報を提供する以上にあなたを支援することは困難です。デバッグする必要があります。問題のデバイスの電源を入れ直してみて、デバイスがハング状態かどうかを確認し、dmesgログで情報を確認します。申し訳ありませんが、これ以上のサポートはできません。
slm

1
"AT + DONTREMEMBERZMODEM"> / dev / modemttyだけをエコーできませんか?
mikeserv 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.