ATINOUT(1)

πŸ“¦
version 0.9.1+git20150607.4976a6c Β· 3 versions
, in ubuntu resolute, ubuntu stonking

✨ atinout β€” the atinout(1) glow-up ✨

okay bestie, sit down, hydrate, because today we're talking about atinout, a General Commands Manual classic, and it's literally just: send AT commands to your modem and keep the receipts. that's the whole vibe. πŸ’…


🌸 NAME 🌸

atinout β€” send AT commands to a modem, capturing the response. yeah. that's it. that's the girl. πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

atinout input_file|- modem_device output_file|-
atinout --version
atinout --usage
atinout --help

πŸ’– DESCRIPTION πŸ’–

so here's the tea: atinout reads a list of AT commands. it sends them one by one to the modem, and it waits for the final result code of whatever command is currently running before it moves on to the next one in the list. no cutting in line, no chaos. and the output from those commands? saved. every last bit. 🫢

⚠️ but listen β€” atinout is strictly about sending AT commands, periodt. it cannot be used for AT commands that expect additional input data (e.g. AT+CMGS etc). she's not built for that and she will not pretend otherwise. πŸ’€

πŸŽ€ FILES πŸŽ€

atinout expects input_file to be a list of AT command to be run. and if the file name is -? then standard input is what gets read. iconic behaviour honestly. ✨

so like, technically the above says "a list of AT commands" but it's actually not just a list of commands β€” it's more generally a list of AT command lines. however, the rest of this man page is just gonna say "AT commands" because we're chill like that. and lowkey: running several commands in one command line offers no benefits, and if one of them fails you have no idea which one failed. so unless maybe it's a single run on the command line (see EXAMPLES), I recommend against putting more than one command on each command line. fr fr. πŸ™ˆ

and if the distinction between AT command and AT command line was not something you were deeply familiar with, bestie you should read the ITU V.250 specification about AT commands. in fact, unless you already have read V.250 before, you absolutely should go to http://www.itu.int/rec/T-REC-V.250-200307-I/en and do so right away. not me being a pushy bestie, it's for your own good. πŸ’…

the modem is identified with modem_device (e.g. /dev/ttyS0 (COM1), /dev/ttyACM0 (USB phone serial interface), ...). and ngl, no serial configuration (e.g. speed, parity) is done before opening the device. she just opens it. as is. πŸ’€

the responses from the AT commands are written to output_file, or to standard output if the file name - is given. 🫢


✨ OPTIONS ✨

the following list of options are supported:

  • -h, --help β€” prints explanation and gives an example on usage. your little tour guide. 🧚
  • --usage β€” prints information about arguments and options. πŸ¦‹
  • --version β€” print version information. and if this is the only option given, it also prints copyright/licensing information. two-for-one, we love that. πŸ’–

πŸ”₯ EXAMPLES πŸ”₯

check that the modem is connected and alive. vibe check, modem edition:

$ echo AT | atinout - /dev/ttyACM0 -
AT
OK
$

hang up any calls. bye bestie:

$ echo ATH | atinout - /dev/ttyACM0 -
ATH
OK
$

query how many entries the phone book has for ME storage. nosy but make it useful:

$ echo 'AT+CPBS="ME"; +CPBR=?' | atinout - /dev/ttyACM0 -
AT+CPBS="ME"; +CPBR=?

+CPBR: (1-7000),80,62

OK
$

backup all phone numbers. and like β€” this will most likely not be the same as a full backup of all contact information, but at least the names and numbers are saved, which is the most vital information. still a slay, just a partial slay. 🫢

$ cat > save-phonebooks <<EOF
AT+CSCS="UTF-8"
AT+CGMI
AT+CGMR
AT+CPBS="SM"
AT+CPBR=1,240
AT+CPBS="ME"
AT+CPBR=1,7000
EOF
$ atinout save-phonebooks /dev/ttyACM0 phonebook_backup.`date "+%Y-%m-%d_%H-%M"`
$

list current calls. the information text format is (see 27.007 for details):

+CLCC: <id1>,<dir>,<stat>,<mode>,<mpty>[,<number>,<type>[,<alpha>[,<priority>]]]
# No active calls
$ echo AT+CLCC | atinout - /dev/ttyACM0 -
AT+CLCC
OK
$
# One active call
$ echo AT+CLCC | atinout - /dev/ttyACM0 -
AT+CLCC
+CLCC: 1,0,3,0,0,"0123456789",129,"",0

OK
$

🌈 ENVIRONMENT 🌈

no environmental variables are used. none. zero. the environment is untouched. she respects boundaries. πŸŽ€


πŸ’€ BUGS πŸ’€

  • atinout does not support reading response lines longer than 4095 characters. 4095 is the limit bestie, don't push her. 😭
  • atinout does not do any serial port configuration, it just opens the device as is. no notes. she is not a config girlie. πŸ™ˆ

atinout is Copyright (C) 2013 HΓ₯kon LΓΈvdal hlovdal@users.sourceforge.net πŸ’œ


⭐ SEE ALSO ⭐

go read them, iykyk. πŸ“šβœ¨


okay that's the whole page bestie!! this was ATINOUT(1) from the General Commands Manual, dated December 2025 β€” no cap, that's the version and the date right there in the footer, so you know it's fresh. now go talk to your modem. she's waiting. πŸ’–πŸ¦‹πŸŽ€

πŸ“¦ where this page comes from