Verifique se o modem-manager está sendo executado - e mate-o se estiver.
Se achar que o dispositivo é um modem, ele entrará e tentará discar também o modem. Isso foi corrigido como um problema similar para mim recentemente.
Eu tenho problema ao enviar comandos AT para o meu modem USB. No começo eu tentei classe php-serial, mas quando eu estava lendo dados, eu tenho loop infinito com dados estranhos. Então eu tentei depurar o problema e abri o putty terminal, fiz o comando
cat /dev/ttyUSB0
e, em seguida, enviei o comando echo "AT" > /dev/ttyUSB0
depois disso, sempre obtive um loop sem fim de cat /dev/ttyUSB0
assim:
AT
AT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^JAT^
e esse loop nunca termina. No Windows tudo funciona muito bem. Eu posso conectar ao modem USB via porta COM virtual e enviar comando / obter resposta.
A questão é por que não posso simplesmente receber a mensagem "OK" do console, mas, em vez disso, recebi esse loop de dados?
Tentei diferentes modems USB huawei e diferentes configurações stty e também configurações padrão para modems huawei:
Baud rate: 9600 / 115200
Parity: none
Data bits = 8
Stop bits = 1
Flow control = none
test dev # uname -a
Linux test 3.5.7-gentoo #3 SMP Sun Feb 17 04:58:22 EET 2013 x86_64 AMD Athlon(tm) 64 X2 Dual Core Processor 5200+ AuthenticAMD GNU/Linux
compilado novo kernel: 3.6.11-gentoo e agora ao enviar o comando:
echo "AT" > /dev/ttyUSB0
obteve resultado como:
OK
AT
OK
AT
OK
AT
nunca terminou, terminei o comando cat, depois enviei outro (comando make call):
echo "ATDT 27789388;" > /dev/ttyUSB0
e recebi resposta do gato sem alça.
systest ~ # cat /dev/ttyUSB0
ATDT 27789388;
OK
então por que o terminal tty está agindo tão estranho? talvez eu não saiba algo sobre envio / leitura de dados em portas seriais?
se puder ajudar, a saída do comando stty -a -F / dev / ttyUSB0 é:
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
Verifique se o modem-manager está sendo executado - e mate-o se estiver.
Se achar que o dispositivo é um modem, ele entrará e tentará discar também o modem. Isso foi corrigido como um problema similar para mim recentemente.
Executar a comunicação do comando AT a partir da linha de comando com operações de shell simples não é confiável. Eu sugiro que você tente usar o programa atinout que é especificamente escrito para emitir o comando AT a partir da linha de comando:
$ echo AT | atinout - /dev/ttyUSB0 -
AT
OK
$
Definitivamente, parece que a configuração do seu terminal está desarrumada. Verifique e brinque com essas configurações stty
:
echo echoe echok -echonl -echoprt echoctl echoke
EDIT: O motivo pelo qual você obteve o loop AT - OK
, é que você ativou o terminal local echo
no seu terminal e no lado do modem no intérprete AT. Para desativar o eco no intérprete AT, emita: ATE0
(que é um zero) como seu primeiro comando.
O comando:
stty -echo -F /dev/ttyUSB3
funcionou para mim
Use "ATE0" antes
echo "ATE0" > / dev / ttyUSB0