Talk over a communications line


qtalk [options] [system]

Runs on:

QNX Neutrino


-b [baud|data|parity|stop][,...]
Change the serial port to this baud, parity, stop bits, and/or data bits. Values of 1-2 are interpreted as stop bits, 7-8 as data bits, none, even, odd, mark, and space as parity, all other numbers as baud. Order isn't significant; for example, -b 9600,8,n,1.
-c hh
Set this as the character that invokes qtalk commands. Default is 01 (CtrlA).
-D delay
Wait this many 1/20th sec periods before running the command specified by the -x option.

The qtalk utility reads any data emitted by the modem during this delay period and displays the data on your screen before the command is started.

If you use -x without this option, qtalk doesn't wait to start the command. As a result, if the modem emits any information once qtalk has emitted the dialing string, you have no way of predicting whether qtalk or the command sees that information.

-d hh
Replace ASCII rubout with this character. Default is 7f.
Enable local echoing.
Hang up the current modem line if someone dials a new system from within qtalk via the CtrlA command. By default, the current modem device is closed but the line isn't dropped.
-l logfile
("el") Log a recording of the qtalk session in logfile.
-m modem[,init_string]
The name of the device to use. If you specify multiple -m options, qtalk tries them, in order, until it finds a device that isn't in use.

If you specify an init_string, it's emitted to the modem before anything else.

Ignore the open count, and open anyways.
-o protocol=command
Redefine transfer-protocol options, where protocol is one of the following:
This protocol: Does a:
qcp_se qcp send
qcp_re qcp receive
zmodem_se ZMODEM send
zmodem_re ZMODEM receive
other_se other send
other_re other receive

and where command is the command that performs the file transfer. This command is run by the shell. The macro $MODEM is set to the pathname of the modem device and, in the case of a send, the macro $FILENAME is set to the filename to be transmitted.

You can disable qtalk's automatic invocation of a protocol by setting command to a null string (""). For example, the following disables automatic ZMODEM receive:

qtalk -o zmodem_re=""

For information on default protocol commands or for more information on automatic invocation of protocols, see the section on "Invoking qcp and ZMODEM automatically."

The other protocol lets you configure qtalk to use your own commands for sending and receiving files.

Ignore the parity bit of received characters.
Be quiet; suppress the banner and display only a minimal prompt in command mode.
-s system_directory
Instead of $HOME/.qtalk, use this file to look up systems to dial.
-t xfer_protocol
Set the current transfer protocol to qcp, zmodem, or other. (To change the command string that runs to perform the file transfer, use -o.)
-x "command"
Run this command after emitting the dialing string for the named system (see also -D). When the command is run, the MODEM environment variable is set to the pathname of the selected modem device.
The name of the system you want qtalk to call. The system must be defined either in $HOME/.qtalk (or the file named by -s) or in the system-wide dialing directory, /etc/config/qtalk. For more information, see the description of the d (dial system) command.


The qtalk utility lets QNX Neutrino users communicate with other computers via a serial line that's usually connected to a modem. The destination may be another host computer, in which case qtalk lets you use your computer as a terminal. The qtalk utility also lets two QNX Neutrino users communicate and transfer files.

The qtalk utility sends any characters you type on the keyboard to the other system via the modem. Any characters received by the modem are displayed. In local echo mode, typed characters are echoed on the display as well as being sent over the modem.

Configuring default behavior

The qtalk utility lets you define new defaults for anything that you can specify with command-line options. Define these settings by creating or modifying a system (in the global and/or your personal dialing directory) called defaults. The first thing qtalk does is to look up the defaults dialing entry and process it, before looking at any command-line options. The qtalk utility looks for defaults first in $HOME/.qtalk and, if not found there, then in /etc/config/qtalk. This allows new system-wide defaults to be set by a system administrator, while leaving individual users free to create their own default behavior for qtalk.

Command-line options defined in the defaults system are applied before the options specified in the actual command line. Thus you can override the settings in your defaults system with command-line options.

Note: The -s command-line option doesn't change how qtalk searches for the defaults system.

Logging a session

You can log a recording of a qtalk session with the -l option:

qtalk -l /dev/par

or, if you want the log to go to the file /tmp/logfile:

qtalk -l /tmp/logfile

Using the command character

You can use a special command character to set special modes and options while you're within the qtalk environment. This special character defaults to CtrlA (^A) unless you change it with the -c option when you invoke qtalk. When you enter the command character, you're shown some current settings and are prompted to enter a command. If you enter the command character twice, a single command character is echoed to the modem. This allows you to send the command character to the remote system if you need to.

Replacing the rubout/delete character

You'll find the -d hh option useful when communicating with computers that have a rubout character different from the one you're used to. Many systems use the Backspace key (08 hex) to erase a character. QNX Neutrino systems default to the ASCII rubout character (7F hex). If you type:

qtalk -d 08

qtalk translates your Rubout key into backspace automatically.

Enabling flow control

Using very high-speed modems, or producing a log on slow printers or floppy disks, may cause some characters to be lost. To prevent characters from being lost in these cases, you can enable input flow control prior to invoking qtalk (see stty). This works only if the machine sending the data supports flow control of its output.

Transferring files

The qtalk utility lets you transfer files through either of two methods:

Invoking qcp and ZMODEM automatically

The qtalk utility attempts to detect qcp and zmodem file transfers when qtalk is on the receiving end. If it detects one of these, qtalk automatically invokes the appropriate receive command for the protocols being used. You can disable this behavior; see the -o option.

When a qcp or zmodem transfer is detected, or when the receive command is given, qtalk runs (through a shell) one of the protocol_re commands.

The corresponding protocol_se commands (to send a file) are invoked only when the send command is given; never automatically.

Here are the default protocol commands:

qcp_re="qcp $MODEM re"
qcp_se="qcp $MODEM se $FILENAME"
zmodem_re="rz <$MODEM >$MODEM"
zmodem_se="sz $FILENAME <$MODEM >$MODEM"

You can't automatically enable the other_re protocol. To invoke other_re or other_se, choose send or receive from the command menu when the current file transfer protocol has been set to other.

Interactive commands:

To specify any of the following commands, first press the command character (usually CtrlA).

b (break)
Send a break over the modem. You may also send breaks by pressing the break key (CtrlBreak on the console keyboard).
C (command character)
Change the command character. You're prompted to enter the new command character in hex (e.g., 0x02) or as ^char (e.g., ^b).
c (change directory)
If you specify the c command, qtalk prompts you for a new directory name, and attempts to move to that directory. If qtalk moves successfully to the directory you specify, the directory becomes the current working directory (see the pwd utility) for the duration of qtalk, or until you change directory again. When qtalk terminates, your current working directory reverts to the directory you were in when qtalk was invoked.
d (dial system)
If you specify the d command, qtalk prompts you to enter a system name. It first looks for that name in your own dialing directory ($HOME/.qtalk) and if it doesn't find it there, it looks in the system-wide dialing directory, /etc/config/qtalk.

If you enter a question mark (?) for the system name, the contents of both dialing directories (if they exist) are displayed and you're prompted again for a system name. To abort the dialing command and return to normal communications mode, press Enter without entering a name.

Dialing is implemented by looking up the system name—which can also be specified on the command line when qtalk is invoked—first in your $HOME/.qtalk file, then in the /etc/config/qtalk file. These files share the same format:

system_name [dialing_string]
[   <whitespace>   command-line_options]

In these files, you must specify the system name at the very left of the line with no whitespace before it. The dialing string is optional (this string contains commands to be sent to the modem before you're given interactive control). If you specify a dialing string, you must separate it from the system name by spaces or tabs, or both.

In dialing strings, you can specify any of the following characters; qtalk acts on these characters instead of sending them straight to the modem:

Send a carriage return.
Delay for 1 second.
Delay for 100 milliseconds.
Drop DTR for 1 second (forces modem to hang up and reset).
End a 500-millisecond break.
Emit a single character represented by o, where o is an octal number of up to three digits.
Same as above, but specified in hex.

Additional lines beneath the line that defines the system name and dialing string may contain additional qtalk command-line options to apply when talking to this system.

If you specify these additional lines, begin each one with at least one tab or space character. Note that a single command-line option can't span multiple lines. You can, however, place just one option per line.

D (delete character)
Change the delete character. You're prompted to enter the new delete character in hex (e.g., 0x08) or as ^char (e.g., ^h).
e (echo)
If you specify the e command, the local echo feature is toggled. Some systems expect the "terminal" to perform local echoing (half duplex).
h (hang up)
If you specify the h command, the CTS/RTS lines are lowered for approximately 1/2 a second. This permits modems that support hardware hangup to do so.
l (log)
Begin or end logging of this session. If no log file is open, qtalk asks for the name of a file to write the log in. If logging is already in progress, it's terminated and the log file is closed. The l command records every character that is sent or received in the log file.

You can use l to take "snapshots" of data from a host computer at slow speed.

o (modify protocol options)
Prompts you for the protocol whose command string you wish to change (qcp, ZMODEM, other). The current send and receive command strings are displayed and you're then prompted to enter a new command string. To set a string to null, use "". If you don't want to make any changes, press Enter.
p (parity)
Ignore parity (top bit) of received characters. If this option is already set, turn it off.
q (quit with hangup)
This executes a hangup command (see h above), then causes qtalk to exit.
r (invoke a receive)
Invoke the currently selected file transfer protocol to receive a file. Note that qtalk automatically invokes qcp and ZMODEM if it recognizes a received startup sequence of one of these protocols.
s (send a file)
Send a file, using the currently selected file transfer protocol. This sends a file to another system running the same protocol, which is more secure than simply writing the file to the modem.

When the currently selected protocol is qcp, you can send more than one file by specifying the x=index_file option when qtalk asks for the file to send. This file contains a list of files to send, one per line. You can also specify more than one filename, separated by spaces.

The qcp utility lets you follow the name of the file to send with the name of the destination file. Separate the two filenames with a comma. This is also true for filenames within an index file (option x=). For example:

Send file(s)?  file1  main.c,new_main.c

sends the file file1 as file1 and the file main.c with the name new_main.c. If you don't specify a new name, qtalk creates a file with the same name as the file that is sent.

Files received by qtalk using the qcp protocol have the same attributes and date as the file on the sending machine.

Most transfer protocols require that the modem port be configured for 8-bit data (Use the -b option to set the serial port to 8 data bits; also see the stty command).

t (select transfer protocol)
Shows you which protocol is being used (e.g., qcp, ZMODEM) and asks you to select a new one. If you press Enter, no changes are made. This command controls the protocol used when you use the send and receive commands from the command menu.
x (exit)
Exit from qtalk without performing a hangup. It's good practice to use the q (quit with hangup) command for leaving qtalk, unless you really don't want to perform a hangup.
! (execute a shell command)
This command lets you execute any command from within qtalk. You'll probably find that you'll use the ! command often to:
  • Execute the ls command in order to see what files are in your current directory prior to sending some of them.
  • Execute nonnative file transfer protocols (such as XMODEM or Kermit) from within qtalk if you don't want to bother setting the other protocol to the desired commands.


Call the system named home:

qtalk home

Communicate with a machine that doesn't echo (half duplex) and expects an ASCII backspace (08 hex) to delete characters:

qtalk -e -d 08

Communicate with another system and print a hardcopy record:

qtalk -l /dev/par

Use the qcp -n option for qcp receives (i.e., receive only files that are newer than existing files):

qtalk -o qcp_re="qcp $MODEM re -n"