[comp.dcom.modems] Cheap 2400 baud modem and a 3B2; how to interface

dennis@uw-warp.UUCP (Dennis Gentry) (01/28/88)

In-reply-to: Firmware Commando's message of Wed, 27 Jan 88 08:51:48 PST
Subject: This is great!

Stu, I started just answering your question, but then I got
into a complete explanation, so I think I'll post it.  Here's
your answer.

It's a Comark "desktalk II," 2400 baud, without error
correction.  I got it by calling 1-800-USA-FLEX, and it cost
$175.  The error correcting model costs $75 more.  Delivery
time was about 6 days, I think.

I read in comp.dcom.modems that someone got one that was died
within 3 weeks, and his friend's was DOA, but he also said that
they refunded his money promptly.  I suspect that an exchange
within the (2 year?) warrantee period would also be prompt.

My brother has had one for about a year now with no problems.
He only uses it occasionally, and mine will all be on 24 hours
a day, but if this one holds up, I plan to order 4 more, WITH
error correction for tranya and balok (the VMS and Unix
microvaxes at work).

So far, I like it.  The documentation is short, but clear.  The
manual IS missing what the factory default settings are, and
although you can set the modem to factory defaults with the
"AT&F" command, you can never find out what they are.  As far
as I can tell, there's no way to find the values of the &C and
&D "registers," among others.  (Those were the ones that I
cared about).  So I just set them explicitly to the values I
wanted and saved them in the nonvolatile memory with the "AT&W"
command.  [Note: those of you without 3B2's can probably skip
the rest of this article.]  For those of you that are curious, I
set things using the following sequence of commands:

    All DIP switches down.
    AT&F   (get factory settings)
    ATL0   (set speaker to lower volume)
    ATS0=1 (answer after one ring)
    AT&C2  (Hold DCD high always, except for 3 seconds after call ends)
    AT&D2  (Hang up when computer drops DTR)
    ATQ1   (no responses, i.e., no "RING" on incoming calls)
    AT&W   (write settings to non-volatile memory)

It took a "special" cable to interface properly to the warp (a
3B2).  AT&T has these weird (but kind of nicer than ordinary
RS-232) cables that have end-connectors for either
terminal/printers or for modems.  Since I didn't have one for a
modem, and the "modem hood" wouldn't necessarily have been
right anyway, we just rewired a "terminal/printer" hood.  You
can just pop the plastic shell open and rearrange the wires.
It's pretty easy to do with a small screwdriver, but you want
to check continuity afterwards and jam the wires down into the
little slots again if you didn't make good contact.

The wiring change from an ordinary AT&T "terminal/printer"
cable hood is that pins 8 and 20 (green and blue) get swapped,
and pins 6 and 20 are no longer strapped together.  Also, 2 and
3 (black and another blue) should be swapped.  You might be
tempted to do this with a null modem adapter and not worry
about 6 and 20, but I suggest that you not do this.  If you
leave pins 6 and 20 connected, (like they are inside the
ordinary hood), your computer and the modem will be fighting
each other to drive line levels.  Neither will win, and you
might blow a line driver chip eventually.  (I didn't when I had
it connected that way for a short time).

It appears that the 3B2 only looks at one status line from the
modem, on pin 20, I believe.  So we have this modem configured
to keep that line high all the time, except just after a call
terminates (or if the modem is turned off or disconnected).
It's sort of a "DCD" and "DSR" rolled into one.  

This introduces the problem that when someone calls the modem,
it obligingly sends the string "RING" to the computer.  Since
the computer sees the "combination modem status line" high, the
computer echoes back to the modem "login: RING," so the modem
assumes that it should be in command mode, and hangs up on the
caller.  If I could get the 3B2 to look at another line (like a
real DCD), it should ignore any input until AFTER a the call is
answered and a carrier is detected, and both dial in and out
would work fine.

The workaround is to turn off modem responses with the "ATQ1"
command and save this setting.  Then the "combination modem
status line" can be kept high to enable outgoing calls, and
incoming calls get answered properly.  Also, the modem has this
nifty AT&C2 feature that lets it drop DCD (which the computer
sees as its "combo status line") for three seconds after a call
disconnects, so that you get logged out properly if you just
hang up (or are interrupted by call-waiting, or . . .).

So now everything works fine, except that when dialing out,
there is no response to your dialing commands, and no way of
knowing (without listening to the modem, and uucp can't do
this) whether the call connected.  There are two ways to get
around this.  One is to just wait a while and assume it
connected.  That is good enough for uucp, since the caller
script will fail and it will drop DTR, thus resetting the modem
if it doesn't connect.  The other is to send ATQ0 to enable
modem responses, dial the number and connect, then send a
delay, "+++", delay, ATQ1, and ATO.  The problem with this is
that if you don't connect, the ATQ1 will never get sent, and
the modem will be unusable for incoming calls until it gets
reset.  So I just wait.

If you want to mess with either method, here is an excerpt from
our Dialers file:

    # Extremely tricky comark dialer; turns off modem responses after connect.
    # This seems to work, but requires initial login failure due to +++.
    # due to the +++ getting sent right when the login: appears.
    #comark	=,-,	"" \dATZ "" ATQ0 OK\r ATDT\T CONNECT \d+++\d\c OK\r ATQ1 "" ATO ""
    # Less tricky comark dialer; just waits, assuming it will connect.
    # if the system being called is very slow to answer, this won't work.
    comark	=,-,	"" \pATZ "" \EATDT\T "" \d\d\d\d\d\d\d\d\c ""

That's probably more than you wanted to know.  If anyone has
questions, I'll try to answer them, although I'm totally busy
as usual.

-- 
Dennis.
-------
arpa:   uw-nsr!uw-warp!dennis@beaver.cs.washington.edu
usenet: {ihnp4|decvax|...}uw-beaver!uw-nsr!uw-warp!dennis