mike@octel.UUCP (Michael D. Crawford) (09/22/89)
We have a problem with crosstalk between the Send Data and Recieve Data of many of our serial lines. What happens is that a character sent will be garbled and recieved on the same port. We use our ports for terminals, and for downloading software produced by cross-compilers on our Sun servers. The downloading protocol gets garbage where it expects acknowledgements. The getty's on the terminal port cause the system to crash through a bizarre feedback effect: getty displays "Octel Communications Sun UNIX 4.0.1" getty recieves something like "mkkoummu{;pkwww", then execs "login mkkoummu{;pkwww". Here a ps -aux will occasionally spot the login process using 50% or more of the CPU time. This is when I am lucky enough to catch it and unplug the terminal. Otherwise, I suppose, login is repeatedly prompting for the password, recieving "p}wwuo" or some such, printing "Login incorrect" and prompting for the user name. It must really get going as it echoes the characters it recieves for the username! When I am lucky, I can abort the system, disconnect all the serial cables, and then continue it, but if I am not, I must reboot. I have found there is a simple algorithm to determine how the data is garbled! The coupling is capacitive; when there is a 1 to 0 transition on the send, there will be a 0 bit on the recieve. A 0 to 1 generates a 1. Repeated runs of 1's or 0's don't generate anything, but seem to be interpreted as 0's. Our present wiring is a single twisted pair of telephone wire. The Send and Recieve Data leads are twisted around each other. There is no ground. Don't blame me. It was this way when I started here. I replaced most of our downloads with Belden 9729. This has two "Datalene" insulated twisted pairs, with an uninsulated drain wire for each pair, and each such triplet is wrapped with "Beldfoil", aluminum foil with a plastic coating on the outside. Following advice in Nemeth, Snyder, and Seebass' "Unix System Administration Handbook", [p. 147], I tied on member of each pair to Signal Ground at both ends, used the other members for Send and Recieve, and tied the drain wires in each pair to Frame ground at the Sun end. Examination with an oscilloscope shows there is still some crosstalk on this cable. It seems small enough that it should not be a problem. Our downloads work fine now. The Belden data sheet recommends this cable for EIA RS-422, which I understand is a balanced pair signal, and is different from RS-232. I just used up my first $300, 1000 foot spool. Before I order another, I would like advice on what other cable you might recommend, how to connect it, etc. The 9729 is kind of hard to crimp and insert properly, as the insulation is very thick, but at least it is soft. I suppose it has to be thick to space the wires far apart to reduce their capacitance. (I thought the crashes were do to many other things, which have been eliminated over time. I had the intuitition that we needed better cable for the downloading, but I was not sure what was going on at the time. I am much relieved it is working now.) -- Michael David Crawford Consulting for: Oddball Enterprises Octel Communications Corp 694 Nobel Drive 890 Tasman Drive Santa Cruz, CA 95060 Milpitas CA 95035 uunet!apple!vsi1!octel!mike CI$ 72377,623
edward@ucbarpa.Berkeley.EDU (Edward Wang) (09/23/89)
In article <43@octel.UUCP> mike@octel.UUCP (Michael D. Crawford) writes: >getty displays "Octel Communications Sun UNIX 4.0.1" >getty recieves something like "mkkoummu{;pkwww", then execs "login >mkkoummu{;pkwww". . . . That's the reason for the one second delay in the Version 7 getty. When fixing the wiring is beyond your control, add pf#1 to your gettytab. Things are much worse once somebody logs in (and unplugs the terminal, or switches the line away from it, which people do all too often here), echo is turned on and the line starts to bounce characters back and forth at full baud rate. What fun! Anyway, this is my pet peeve. TTY drivers should have input limiting when echo is on.
jst@cca.ucsf.edu (Joe Stong) (09/23/89)
I have found in the past that some RS-232 ports are just too high impedance; loading them on the receive side with some resistor in the 1-10K range will make them less sensitive to noise, and will keep the voltage levels down (electrostatic coupling). I tend to run transmit and receive in separate twisted pairs each with either a ground, or a robust signal that doesn't change much or respond quickly (like DTR or CD). I suspect that twisted pair phone wire would be cheap and effective used this way. (Beware: 4 wire "quad wire" is not twisted pairs.)