From: tytso@ATHENA.MIT.EDU (Theodore Ts'o) Subject: Re: serial ports are broken in p4! Date: Sat, 21 Nov 1992 20:01:32 GMT
From: Jim.Corbett@f35.n152.z1.fidonet.org (Jim Corbett)
Date: Wed, 18 Nov 1992 12:30:03 -0800
I found that a cable I was using caused my serial connection between
Kermit
on linux and Kermit on a MS-DOS PC.
The cable worked fine w/0.98pl1 not with pl2-pl5.
I believe it is pin 4, old cable was 2-3, 3-2, 4-4, 6-20 and 7-7.
New cable is 2-3, 3-2 and 7-7 and works fine.
4-4 sounds suspicious; I doubt that was right! A "correct" null modem
cable would have done something like this:
1 - 1 (protective ground)
2 - 3 (TX->RX)
3 - 2 (RX->TX)
4 - 5 (RTS->CTS)
5 - 4 (CTS->RTS)
6 - 20 (DSR->DTR)
7 - 7 (Ground)
20 - 6 (DTR-DSR)
What you probably saw happening is that after 0.98pl1, Linux started
supporting hardware handshaking, which is one more thing to get right.
The hueristic used by Linux is that if DSR is asserted, then Linux
assumes that hardware handshaking is enabled; that is, it will only send
characters if the remote side has signal that it is OK to do so using
the RTS/CTS lines. If DSR is not asserted, then the assumption is that
the remote side probably doesn't understand hardware handshaking, and so
Linux will not look at the RTS/CTS lines.
The serial driver can be forced to obey the RTS/CTS lines by doing a
"stty CRTSCTS" on that particular serial line. It can also be forced to
never look at the RTS/CTS lines by doing a "stty NOCRTSCTS" on that
particuliar serial port. (Note: not all stty's support NOCRTSCTS; it is
a trivial patch to stty to get it to support the new termio flag,
though.)
What probably was happening was that your cable was causing DSR to be
asserted, and either the RTS/CTS lines were not translated correctly, or
your remote PC was not handling the hardware handshaking correctly. It
would be best to get a full cable and/or get your PC to do hardware
handshaking correctly, since you need that if you want to do high speed
reliable transfers. Solving it the way you did, by getting a simple
calbe that doesn't try to do anything with the DTR/DSR and CTS/RTS lines
works, as you saw, but at the cost of losing hardware handshaking.
- Ted