Sous Linux (Ubuntu), j'essaie d'envoyer des commandes AT à un modem à /dev/ttyACM0
. J'ai essayé de le faire comme:
Sudo socat - /dev/ttyACM0
mais lorsque je tape quelque chose, je reçois juste une ligne répétant cette commande (je m'attends à un OK
).
Quand je fais
Sudo minicom modem1
cela semble fonctionner. Je tape un AT
et j'obtiens un OK
. Je tape de la merde, j'obtiens un ERROR
.
Il paraît que modem1
pour minicom est en quelque sorte configuré pour utiliser le modem à /dev/ttyACM0
.
Comment puis-je utiliser socat pour envoyer des commandes AT? Dois-je configurer quelque chose? Peut-être puis-je utiliser des configurations pour modem1
de minicom (je ne sais pas comment trouver/voir cette configuration)?
La commande socat
donnée est-elle correcte? Dois-je jouer avec certaines options? Avec le -v
option je vois ce qui suit:
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
Le périphérique lui-même se trouve avec la sortie dmesg suivante:
[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
Et le tty est configuré comme suit:
speed 57600 baud; line = 0;
eof = ^A; min = 1; time = 0;
-brkint -icrnl -imaxbel
-opost -onlcr
-isig -icanon -echo -echoe
Essayez socat - /dev/ttyUSB2,crnl
Cela indique à socat d'envoyer un retour chariot ainsi qu'un saut de ligne.
Clarification - cela remonte aux jours sombres des machines à écrire électriques, où vous auriez à lui dire de ramener le chariot à la position 0 sur la page - ergo, un retour de chariot - ainsi que de le dire pour déplacer le papier d'une ligne vers le haut.
La meilleure façon d'envoyer des commandes AT à un modem sous Linux est d'utiliser le programme atinout qui est écrit dans le seul but d'envoyer AT commandes vers un modem à partir de la ligne de commande.
Vous pouvez l'utiliser pour tester si un modem est opérationnel , faire une sauvegarde du répertoire téléphonique:
$ 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
$
ou toute autre chose que vous utilisez des commandes AT pour.
Je suis tombé sur ce post de projet Chromium qui montre ce que vous voulez. Il est intitulé: Débogage d'un modem cellulaire .
extrait de cette page
Communiquer directement avec un modem avec le jeu de commandes AT
La plupart des modems prennent en charge AT commandes qui contrôlent le modem et demandent des informations. Sur un appareil Chromium OS avec le mode développeur activé, vous pouvez utiliser la commande socat pour communiquer avec le modem. Vous avez besoin d'un Chromium Périphérique OS avec une image de test installée (ou vous pouvez utiliser gmerge socat si vous êtes familier avec le serveur de développement). Par exemple:
- Tapez CTRL + ALT + T pour entrer dans la coquille crosh.
- Tapez Shell pour entrer dans le shell bash.
- Déterminez avec quel périphérique USB utiliser: ls/dev/ttyACM */dev/ttyUSB *
- Arrêter le gestionnaire de modem s'il est en cours d'exécution: Sudo stop modemmanager
- Tapez Sudo socat -/dev/ttyACM1, crnl ou Sudo socat -/dev/ttyUSB0 pour communiquer avec le modem.
- Assurez-vous que le modem est activé avec la commande: "AT + CFUN = 1"
Par exemple:
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 ~ $
Selon le modem, vous pouvez essayer différentes commandes AT, par exemple "AT + CGMI", "AT + CGSN", etc.