slattach set tty speed to 0

Matthieu CASTET matthieu.castet at parrot.com
Tue Sep 16 07:54:52 UTC 2008


Hi,

the busybox slattach seem to have a bug.
If the baudrate speed is not on the commandline, and we are not in raw mode,
then we will write the c_cflag, but we are not keeping the old baudrate
value
(CBAUD*).
This mean our baudrate will be B0. And according to man [1], this mean
hangup.
What I see is that in linux kernel uart_set_termios, it ask the uart
driver to
assert nRTS (via uart_clear_mctrl(state->port, TIOCM_RTS | TIOCM_DTR);)
and the
other side can't send nothing to us.

A possible fix could be to do something like [2]


Matthieu

[1]
Setting  the  speed to B0 instructs the modem to "hang up".

[2]
--- /tmp/slattach.c	2008-09-15 14:10:47.000000000 +0200
+++ /tmp/slattach-n.c	2008-09-15 14:10:28.000000000 +0200
@@ -206,6 +206,8 @@
 		state.c_cflag = CS8 | HUPCL | CREAD
 		              | ((opt & OPT_L_local) ? CLOCAL : 0)
 		              | ((opt & OPT_F_noflow) ? 0 : CRTSCTS);
+		cfsetispeed(&state, cfgetispeed(&saved_state));
+		cfsetospeed(&state, cfgetospeed(&saved_state));
 	}

 	if (opt & OPT_s_baud) {



More information about the busybox mailing list