Определите правильный ttyUSB для вызова данных через AT-команды - PullRequest
0 голосов
/ 25 сентября 2018

Я застрял со следующей проблемой.У меня есть модем (Huawei E3372), и я вставляю его в USB, вижу несколько устройств ttyUSB.Каким-то образом wvdial обнаруживает правильный ttyUSB для выполнения вызова данных, но я не могу понять его логику (потому что я не могу использовать какое-либо стороннее программное обеспечение, поэтому мне приходится определять фактический ttyUSB с помощью AT-команд или какой-либо другой метод безсторонние).

Проблема пошаговая: 1. У меня есть ttyUSB0, ttyUSB1, ttyUSB2.2. Я пытаюсь перебрать их, ttyUSB0 не отвечает на команду 'AT', ttyUSB1 -> Я пытаюсь ATD * 99 #, пытаюсь установить ppp-соединение, но не могу (я не получаю пакетов на этапе LCP),поэтому я перехожу дальше к ttyUSB2 -> я пробую ATD * 99 # и получаю ОШИБКУ.

Если я пропущу ttyUSB1 и вызову ATD * 99 # на ttyUSB2 - все будет в порядке, соединение ppp установлено,и т. д.

Мне очень любопытно, как я могу точно завершить активные вызовы с помощью команды AT (AT + CHUP в любом из ttyUSB не помогает, как и ATH), или определить, какой ttyUSB использовать длявызов данных.

Вот журналы wvdialconf, который каким-то образом определяет правильный ttyUSB (в данном примере это первый ttyUSB, который отвечает на AT-команды, но я часто попадаю в ситуацию, когда это не первая, а wvdialconfправильно его обнаруживает):

$ sudo wvdialconf 
Editing `/etc/wvdial.conf'.

Scanning your serial ports for a modem.

ttyS0<*1>: ATQ0 V1 E1 -- failed with 2400 baud, next try: 9600 baud
ttyS0<*1>: ATQ0 V1 E1 -- failed with 9600 baud, next try: 115200 baud
ttyS0<*1>: ATQ0 V1 E1 -- and failed too at 115200, giving up.
Modem Port Scan<*1>: S1   S2   S3   S4   S5   S6   S7   S8   
Modem Port Scan<*1>: S9   S10  S11  S12  S13  S14  S15  S16  
Modem Port Scan<*1>: S17  S18  S19  S20  S21  S22  S23  S24  
Modem Port Scan<*1>: S25  S26  S27  S28  S29  S30  S31  
WvModem<*1>: Cannot get information for serial port.
ttyUSB0<*1>: ATQ0 V1 E1 -- failed with 2400 baud, next try: 9600 baud
ttyUSB0<*1>: ATQ0 V1 E1 -- failed with 9600 baud, next try: 115200 baud
ttyUSB0<*1>: ATQ0 V1 E1 -- and failed too at 115200, giving up.
ttyUSB1<*1>: ATQ0 V1 E1 -- OK
ttyUSB1<*1>: ATQ0 V1 E1 Z -- OK
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 -- OK
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 &C1 -- +CME ERROR: 50
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 &D2 -- +CME ERROR: 50
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 +FCLASS=0 -- +CME ERROR: 50
ttyUSB1<*1>: Modem Identifier: ATI -- Manufacturer: 
ttyUSB1<*1>: Speed 9600: AT -- OK
ttyUSB1<*1>: Max speed is 9600; that should be safe.
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 -- OK
ttyUSB2<*1>: ATQ0 V1 E1 -- OK
ttyUSB2<*1>: ATQ0 V1 E1 Z -- OK
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 -- OK
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 -- +CME ERROR: 50
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &D2 -- +CME ERROR: 50
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 +FCLASS=0 -- +CME ERROR: 50
ttyUSB2<*1>: Modem Identifier: ATI -- Manufacturer: 
ttyUSB2<*1>: Speed 9600: AT -- OK
ttyUSB2<*1>: Max speed is 9600; that should be safe.
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 -- OK

Found a modem on /dev/ttyUSB1.
Modem configuration written to /etc/wvdial.conf.
ttyUSB1<Info>: Speed 9600; init "ATQ0 V1 E1 S0=0"
ttyUSB2<Info>: Speed 9600; init "ATQ0 V1 E1 S0=0"
...