web-dev-qa-db-ja.com

wvdialはモデムの応答を取得できず、端末プログラムは問題なく通信します

SIM800LとPL2303USBシリアルケーブルを使用してGPRS接続を確立しようとしています。

モデムscreenまたはminicomモデム(115200 8N1)の場合、モデムからすぐに応答があり、セットアップした後でも応答がありますPDPおよびGPRSコンテキストATコマンドを介してGoogleサーバーに正常にpingできます。AT+CGDATA="PPP"またはを介してPPP接続を開始することもできます。 ATDT*99***1#

しかし、wvdialを使用すると、モデムは応答しません

--> WvDial: Internet dialer version 1.61
--> Cannot set information for serial port.
--> Initializing modem.
--> Sending: ATZ
--> Sending: ATQ0
--> Re-Sending: ATZ
--> Modem not responding.

cat /dev/ttyUSB0を実行し、同時にwvdialを実行すると、次のようになります。

ATZ0
OK

OK

OK

wvdialが終了した後コマンドと最初のOKが表示され、1秒後2つのOKが表示されます。また、ATZコマンドとATQ0コマンドが重複になったことに注意してください。

catを介して出力をハイジャックしている可能性があり、それが理由かもしれませんが、wvdialの動作はcat

これは私の/ etc/wvdial.confです

[Dialer Defaults]
Modem = /dev/ttyUSB0
Baud = 115200
Phone = *99***1#
Username = webgprs
Password = webgprs2002
New PPPD = yes

Modem Type = Analog Modemは何の違いもありません。いくつかのInit#パラメータを設定すると、それらも応答を受け取りません。コマンドの重複は、Init#コマンドでも発生します。

pppdを使用する3GおよびGPRSモデム で説明されているように抽象化レイヤーを取得すると、pppdのみが使用されます。明らかなことは、システムプロセスによるシリアルポートとの通信は保持されておらず、シリアルポートクライアントを介してのみ保持されていることです。

sakis3gはモデムと正常に通信しますが、インターフェイスを起動できません。

[13751] [11:45:56] Connection command that will be used is: /usr/bin/setsid /usr/sbin/pppd /dev/ttyUSB0 460800 modem crtscts -detach defaultroute dump noipdefault usepeerdns usehostname ktune logfd 2 noauth name sakis3g lock maxfail 3 connect "/usr/sbin/chat -v -f /tmp/pppd.tmp.13751" user "webgprs" password "webgprs2002"
[13751] [11:45:56] Verbosing: 28% Initializing modem
[13751] [11:45:56] Using default INITIALIZE.
[13751] [11:45:56] Command "INITIALIZE" refers to AT commands: ATZ OK 'AT&F' OK 'ATQ0 V1 E1' OK 'AT&D2 &C1' OK AT+FCLASS=0 OK ATS0=0 OK 'AT+CGDCONT=1,"IP","internet.itelcel.com"' OK
[13751] [11:45:56] Will send INITIALIZE commands to tty /dev/ttyUSB0: "" '\pAT' OK ATZ OK 'AT&F' OK 'ATQ0 V1 E1' OK 'AT&D2 &C1' OK AT+FCLASS=0 OK ATS0=0 OK 'AT+CGDCONT=1,"IP","internet.itelcel.com"' OK '\pAT' OK
[13751] [11:45:57] We are root already. Proceeding.
[13751] [11:45:57] Device /dev/ttyUSB0 is not busy.
[13751] [11:45:58] Got response from tty:
AT
OK
ATZ
OK
AT&F
OK
ATQ0 V1 E1
OK
AT&D2 &C1
OK
AT+FCLASS=0
ERROR
[13751] [11:45:58] Unknown command "STAGE7".
[13751] [11:45:58] Unknown command "STAGE8".
[13751] [11:45:58] We are root already. Proceeding.
/-------------------------------------------------------------------------------
[13751] [11:45:58] Will now run command: \'/bin/rm -f "/tmp/sakis3g.3gnet"\'
/-------------------------------------------------------------------------------
\-------------------------------------------------------------------------------
[13751] [11:45:58] Command returned 0.
\-------------------------------------------------------------------------------
[13751] [11:45:58] We are root already. Proceeding.
[13751] [11:45:58] Device /dev/ttyUSB0 is not busy.
[13751] [11:45:58] Verbosing: 35% Connecting
[13751] [11:45:58] PID 15625 is still running.
[13751] [11:45:59] Located "netstat" within PATH (/bin/netstat).
[13751] [11:45:59] Waiting for interface to go up (0 seconds passed).
[13751] [11:46:00] PID 15625 is still running.
[13751] [11:46:00] Waiting for interface to go up (1 seconds passed).
[13751] [11:46:01] PID 15625 is still running.
[13751] [11:46:01] Waiting for interface to go up (2 seconds passed).
... (truncated) ...
[13751] [11:46:56] Waiting for interface to go up (20 seconds passed).
[13751] [11:46:57] Giving up waiting for connection to occur.
[13751] [11:46:57] PID 16179 is still running.
[13751] [11:46:58] PID 16179 is not running any more.
[13751] [11:46:58] PID 16179 is not running any more.
[13751] [11:46:58] Failed to connect.
[13751] [11:46:58] Error: Failed to connect.
[13751] [11:46:58] Aborting execution chain due to actor "connect" returning 95. 

結果は、手動でPDPコンテキストを設定し、モデムをGPRSアクティブコンテキストに設定しても同じです。

AT+CIPSTATUS
IP STATUS
1
Sdlion

Sakis3gのログとソースを読むこのPL2303USBシリアルコンバーターのpppオプションでnocrtsctsを使用することが必須であることに気付きました。また、SIM800LはAT+FCLASSコマンドをサポートしておらず、チャットスクリプトが失敗するため、削除する必要がありました。

pppdを備えた3GおよびGPRSモデム からのチャットスクリプトを使用して、次の行を変更しました。

'OK' 'ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0'

'OK' 'ATQ0 V1 E1 S0=0 &C1 &D2'

AT+FCLASSは、ファックスモードを選択するために使用されます。 GSMモジュールがこのモードをサポートしていない場合(またはデフォルトで0-データモード)、その部分をチャットスクリプトから除外しても安全と思われます。

1
Sdlion

この問題は、libwvstreams(したがってwvdial)がデフォルトで使用するRTS/CTSフロー制御にまでさかのぼりますが、私の小さなUSBシリアルドングルはサポートしていません。

GitHubの私のパッチ を使用するか、ハードウェアで修正できます。たとえば、ドングルにRTSピンとCTSピンがある場合(モデムにはない場合)、それらを相互に接続できます。

1
aib