This article is from the 3b1 computers FAQ, by John B. Bunch with numerous contributions by others.
The problem is a line in the term.c file. The lines that have to be changed for rn to work are:
Before change:
[...]
devtty = open("/dev/tty",O_RDONLY);
if (devtty < 0) {
printf(cantopen,"/dev/tty") FLUSH;
finalize(1);
}
fcntl(devtty,F_SETFL,O_NDELAY);
[...]
After change:
[...]
devtty = open("/dev/tty",O_RDWR); /* changed for UNIX PC */
if (devtty < 0) {
printf(cantopen,"/dev/tty") FLUSH;
finalize(1);
}
/* fcntl(devtty,F_SETFL,O_NDELAY); /* changed for UNIX PC */
[...]
This change is required because the /dev/ph* devices require DATA connections to be opened with O_RDWR, so changing the O_RDONLY (or, in some versions of rn, the constant 0) to O_RDWR will solve your problems. Note that these changes are also required for rn-derived programs like trn.
 
Continue to: