Hardware manual

ixany: Mainly for terminals. Hitting any key will restart the flow after a flow-control stop. If you stop
scrolling with the "stop scroll" key (or the like) then hitting any key will resume scrolling. It's seldom needed
since hitting the "scroll lock" key again will do the same thing.
ixon: Enables the port to listen for Xoff and to stop transmitting when it gets an Xoff. Likewise, it will resume
transmitting if it gets an Xon.
ixoff: enables the port to send the Xoff signal out the transmit line when its buffers in main memory are nearly
full. It protects the device where the port is located from being overrun.
For a slow dumb terminal (or other slow device) connected to a fast PC, it's unlikely that the PC's port will be
overrun. So you seldom actually need to enable ixoff. But it's often enabled "just in case".
Using stty at a "foreign" terminal
How do you use stty to view or set a terminal other than the terminal you are currently using? It's usually
impossible to do it if the foreign terminal is in use and has a shell running on it. In other cases for dealing with
say ttyS2 while typing at another terminal (such as tty1) use stty -F /dev/ttyS2 ... (or --file instead
of F). If ... is -a it displays all the stty settings (-a means all).
But if the foreign terminal (ttyS2 in this example) has a shell running on it, then what you see will likely be
deceptive and trying to set it will not work. This problem exists for virtual terminals also such as dealing with
tty3 from tty1, etc. See Two interfaces at a terminal to understand it.
Two interfaces at a terminal
When using a shell (such as bash) with command-line-editing enabled there are two different terminal
interfaces (what you see when you type stty -a). When you type in modern shells at the command line you
have a temporary "raw" interface (or raw mode) where each character is read by the command-line-editor as
you type it. Once you hit the <return> key, the command-line-editor is exited and the terminal interface is
changed to the nominal "cooked" interface (cooked mode) for the terminal. This cooked mode lasts until the
next prompt is sent to the terminal (which is only a small fraction of a second). Note that one never gets to
type any command in this cooked mode but what was typed in raw mode on the command line gets read by
the shell while in cooked mode.
When a prompt is sent to the terminal, the terminal goes from "cooked" to "raw" mode (just like it does when
you start an editor such as vim. The prompt signals starting the command-line editor. The settings for the
"raw" mode are based only on the basic stty settings taken from the "cooked" mode. Raw mode keeps these
setting but changes several other settings in order to change the mode to "raw". It is not at all based on the
settings used in the previous "raw" mode. Thus if one uses stty to change settings for the raw mode, such
settings will be permanently lost as soon as one hits the <return> key at the terminal that has supposedly been
"set".
Now when one types stty to look at the terminal interface, one may either get a view of the cooked mode or
the raw mode. You need to figure out which one you're looking at. It you use stty from a foreign terminal
(other than the terminal you are currently typing at) then you will see the raw mode settings. Any changes
made will only be made to the raw mode and will be lost when someone presses <return> at the foreign
terminal you tried to "set". But if you type a stty command to view/change the configuration of the terminal
you are using, and then hit <return> it's a different story. The <return> puts the terminal in cooked mode.
Your changes are saved and will still be there when the terminal goes back into raw mode (unless of course
Serial HOWTO
Flow control options 49