[comp.dcom.modems] About "+++" in-band escapes

roy@phri.UUCP (Roy Smith) (02/22/89)

	Various people have been grousing about the "+++" in-band escape
Hayes-like modems have to cut off a call.  While I agree in principle that
there should be a way to turn it off (and a out-of-band way, like a dip
switch), I wonder how much of a problem it is in practice.  On every modem
I've seen, the escape signal is really "<one second pause>+++<one second
pause>".  The odds of that happening by random are pretty damn small, and I
would be amazed if it ever happened in any kermit, uucp, SLIP, or other
machine-generated data stream.

	I've seen worse.  One modem I once had (Century Data Systems 2400??
It's been a long time) used ^T as the escape signal.  That's it, just a plain
^T, a single control character, with no timing requirements.  Now that's what
I call brain-damage!  Want to guess how often ^Ts occur in a typical binary
data stream (like compressed news batches over uucp?).  It's no fun in emacs
either.

	My Trailblazer uses BREAK to signify "go from data to command mode".
This is quasi out-of-band.  I say quasi because 1) sometimes I really do want
to send a break and 2) break is easy enough to hit by mistake on most
keyboards.  The blazer is at least smarter than most modems; you can
configure it about 6 different ways to deal with breaks and if you are in the
break-means-escape mode, you just have to type "ato" to go back on line as if
nothing happened.  The only missing feature is an at command which means
"send a real break down the line".  Then you could use break as your escape
and still be able to send breaks by doing "break, atwhatever, ato".
-- 
Roy Smith, System Administrator
Public Health Research Institute
{allegra,philabs,cmcl2,rutgers}!phri!roy -or- phri!roy@uunet.uu.net
"The connector is the network"

vjs@rhyolite.SGI.COM (Vernon Schryver) (02/23/89)

In article <3695@phri.UUCP>, roy@phri.UUCP (Roy Smith) writes:
> 	Various people have been grousing about the "+++" in-band escape
> Hayes-like modems have to cut off a call.  While I agree in principle that
> there should be a way to turn it off (and a out-of-band way, like a dip
> switch),
> -- 
> Roy Smith, System Administrator
> Public Health Research Institute
> {allegra,philabs,cmcl2,rutgers}!phri!roy -or- phri!roy@uunet.uu.net

It's easy to turn off '+++' in the modems I've played with, including
Hayes, Everex, and Telebit, by setting the '+' character to 128.  In some
modems, one must also avoid turning on 8-bit matching.  I vaguely recall
at least one manual recommending this hack.  With HDB UUCP, its easy
to turn it off when computers are supposed to be talking to computers,
but leave it on for trusted humans.  (Think of the "use" a bad guy
can make of '+++'.)

Vernon Schryver
Silicon Graphics
vjs@sgi.com

dave@onfcanim.UUCP (Dave Martindale) (02/26/89)

In article <3695@phri.UUCP> roy@phri.UUCP (Roy Smith) writes:
>
>	Various people have been grousing about the "+++" in-band escape
>Hayes-like modems have to cut off a call.  While I agree in principle that
>there should be a way to turn it off (and a out-of-band way, like a dip
>switch), I wonder how much of a problem it is in practice.  On every modem
>I've seen, the escape signal is really "<one second pause>+++<one second
>pause>".  The odds of that happening by random are pretty damn small, and I
>would be amazed if it ever happened in any kermit, uucp, SLIP, or other
>machine-generated data stream.

The place where it *is* a real pain is with a modem connected to
a UNIX machine as a dialin line.

The user at home wants to escape temporarily into command mode *on the
modem at home* and types the escape sequence.  The home modem transmits
the +++ to the host, since it doesn't know it's an escape sequence
until after the second one-second pause.  The UNIX host *echos* the +'s
back to the answer modem, and puts it into command mode too.  From
that point, there is nothing you can do to get the answer modem out
of command mode.

So, you really need some way of turning off the in-band escape
sequence for a modem used as an answer modem.  Yet, if the same modem
is also used for dialout, you can't disable command mode entirely.

bill@ssbn.WLK.COM (Bill Kennedy) (02/26/89)

In article <17584@onfcanim.UUCP> dave@onfcanim.UUCP (Dave Martindale) writes:
>In article <3695@phri.UUCP> roy@phri.UUCP (Roy Smith) writes:
>>
>>	Various people have been grousing about the "+++" in-band escape
[ ... ]
>
>The place where it *is* a real pain is with a modem connected to
>a UNIX machine as a dialin line.
[ scenario about remote user wanting local modem's attention ]

>So, you really need some way of turning off the in-band escape
>sequence for a modem used as an answer modem.  Yet, if the same modem
>is also used for dialout, you can't disable command mode entirely.

There's another reason to change the personality but it's easily done.
Most of ssbn's modem events are uucp transfers and the Trailblazers
here work best with all handshaking defeated.  The occaisional dial up
user < PEP speeds, however, needs XON/XOFF handshaking because the
interface speed is locked at 19,200bps and a big cat or ls can easily
over run the TB's buffer.  This gets set up in /etc/profile as the
user is getting logged in.  If they say they need flow control, get
the modem's attention, enable XON/XOFF, and proceed.  It gets disabled
by the DTR transition/reset at disconnect.

What Dave points out is correct.  If you use +++ you're very likely
to get the attention of both modems.  That happened to me when I was
testing /etc/profile.  For a modem with NVRAM that will reset on a
DTR transition, this is no problem, just change the attention character.
My Hayes, USR, and Telebit book says that's S2.  I changed mine from
43 (+) to 126 (~) and saved it with &W.  The USR doesn't have NVRAM,
but you could achieve the same result by issuing the S register change
prior to actually spawning the uu/getty.  SCO has a dial program that
allows you to fondle the modem before and after an outbound call, or
a dirt simple uu/getty program to issue the command and exec to the
real uu/getty should be easy enough.  You only need to do that if your
modem can't save the current register set.

The sword has two blades if you are as thoughtless as I am.  You have
to remember what the new attention character is if you need to talk
to the modem.  Further, if everyone in the world changes to the same
attention character, you're right back where we started with +++ :-)
To save myself from me, I change S2=43 in the dial script so that I
can mindlessly pound on + in cu and not run afoul of neighbors' modems
that have done what I did with ~ for answer calls.
-- 
Bill Kennedy  usenet      {killer,att,cs.utexas.edu,sun!daver}!ssbn!bill
              internet    bill@ssbn.WLK.COM   or attmail!ssbn!bill

dwtamkin@chinet.chi.il.us (David Tamkin) (02/27/89)

In <17584@onfcanim.UUCP> Dave Martindale wrote:

| So, you really need some way of turning off the in-band escape
| sequence for a modem used as an answer modem.  Yet, if the same modem
| is also used for dialout, you can't disable command mode entirely.

If possible, as it is with Hayes-compatibles by writing a new ASCII code to
register S2, pick a different character from decimal 043.  Many modems
don't retain S2 in NVR and you have to rewrite it every time you turn the
modem on, but if you use it for auto-answer you probably don't flip the
power switch too many times in a day.

Yes, a hacker will still be able to try every code from null through rubout
but you won't have the answering modem knocked off line because a caller
was innocently trying to get his or her own modem into command state.

Another suggestion is to disable escaping to command mode when you set up
for auto-answer and to re-enable it when you place an outgoing call.

David W. Tamkin     Post Office Box 567542    Norridge, Illinois  60656-7542
dwtamkin@chinet.chi.il.us         CIS: 73720,1570          GEnie: D.W.TAMKIN
Anyone on Chinet who agrees with me is welcome to speak up on his or her own.

patrick@chinet.chi.il.us (Patrick A. Townson) (02/27/89)

In article <17584@onfcanim.UUCP> dave@onfcanim.UUCP (Dave Martindale) writes:
>The user at home wants to escape temporarily into command mode *on the
>modem at home* and types the escape sequence.  The home modem transmits
>the +++ to the host, since it doesn't know it's an escape sequence
>until after the second one-second pause.  The UNIX host *echos* the +'s
>back to the answer modem, and puts it into command mode too.  From
>that point, there is nothing you can do to get the answer modem out
>of command mode.
>
>So, you really need some way of turning off the in-band escape
>sequence for a modem used as an answer modem.  Yet, if the same modem
>is also used for dialout, you can't disable command mode entirely.

Well generally the attention command can be changed from three plusses
to something else. One of the S registers stores the value of what you
want to use for escape on that particular modem. I thought it went without
saying that any site with dialup modems, from the smallest BBS sysop to 
the largest most sophisticated site automatically changed that register
to something else if for no other reason than to avoid the hangups you
are talking about. When the appropriate S register is set to some value
larger than 127 in most cases, then the modem won't respond at all to
an attention getting command.

Then the three plusses sent by you only affect you and not the other end.
And on better quality modems at least, such as the US Robotics Courier 2400
which I use, a dip switch on the unit indicates if the three plusses (or
symbol of choice) should cause the modem to disconnect on receipt or  
merely suspend output and act locally on what follows. And in all the calls
I've made via dialup to various sites, such as chinet, eecs.nwu.edu, and
bu-cs.bu.edu, I have yet to see a case where the distant site got hung
because of my three plus entry. I assumed they either were using modems
that don't work that way or else had changed the escape code. 

The same thing comes up when calling outbound through a connecting modem,
such as PC Pursuit. You connect to some outdialer somewhere, and then find
you need to make adjustments on your end. You give the three plusses and
they are grabbed not only by your own modem but by the distant outdialer
modem as well. If it was the outdialer modem you were attempting to adjust,
you simply enter ATO, which puts your modem back in line, then subsequent
commands affect the distant outdialer modem, since the ATO put yours back
to sleep, etc. Once adjusted, a second ATO puts the outdialer modem back
on line to wherever. In reverse, if it was your modem that required the
adjustment, after doing so enter ATO to rejoin the connection, then 
immediatly give ATO a second time. Your modem will ignore it and the distant
end will re-establish itself.

Some modems also are built to listen to the incoming stuff at all times
regardless of whether they are in command mode or not, meaning that your
three plusses, intended for yourself did echo back and shut down the other
side, but your ATO turn you back on and a second ATO issued immediatly
will also hit the other end and echo back, restoring the other modem
(while yours ignores it when echoed-back, since it acted on it a
split second prior). Other modems are designed that once suspended,
only an appropriate entry from its side will force it to start up again,
thus it being a good idea to change the register away from + as the attention
getter.


-- 
Patrick Townson 
  patrick@chinet.chi.il.us / US Mail: 60690-1570 (personal zip code)
  FIDO: 115/743 / AT&T Mail: 529-6378 (!ptownson) /  MCI Mail: 222-4956