Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am trying to communicate between an embedded device which runs linux and a PC which runs windows xp over a RS232 connection. On windows I use Hyperterminal, but I don't know which settings I should use. I have to set

  • Bits per second
  • Data bits
  • Parity
  • Stop bits
  • Flow control

On the linux device i ran stty to find out the settings on that side. I do NOT want to change those settings the linux device, but only read them out. But I have a hard time interpreting the output.

~$ stty -F /dev/ttyS0 -a speed 9600 baud; rows 24; columns 80; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = ; eol2 = ; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iext

Bits per second will presumably have to be set to 9600, but how do I have to interpret the remaining output from stty?


Okay, i did a little more. Looking if getty is running:

~# ps | grep getty
 1557 root      1884 S    /sbin/getty 115200 ttyS2
 1558 root      1884 S    /sbin/getty 38400 tty1
 1600 root      2636 S    grep getty

I assume this means that I am listening on the device ttyS2 and it also seems to indicate the baudrate as 115200. Now I ran stty to see the settings:

~# stty -F /dev/ttyS2 -a
speed 115200 baud; rows 24; columns 80;
intr = ^C; quit = ^\; erase = ^?; kill = ^X; eof = ^D; eol = <undef>;
eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon
-ixoff -iuclc -ixany -imaxbel
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop
-echoprt -echoctl -echoke

Now trying to use this in Hyperterminal, I would assume the following settings:

  • Bits per second: 115200
  • Data bits: 8 (because of cs8)
  • Parity: None (because of -parenb)
  • Stop bits: 1 (because of -cstopb)
  • Flow control: none (because of -crtscts and -ixon)

But it's still not working.

share|improve this question
up vote 2 down vote accepted

Try 8 bits, no parity, one stop bit, software flow control. This comes from:

"cs8" means 8 data bits. "-crtscts" means no hardware flow control. "ixon" means soft flow control. "-cstop" means one stop bit.

share|improve this answer
Thank you, this makes sense. It's still not working though. Might have to check the cables etc. – Lucas Aug 29 '11 at 16:12
Is something listening on that port? Do you have getty or the like running? Otherwise, you're connecting to a port that no process is listening to. – David Schwartz Aug 29 '11 at 16:33
Thanks to your answer, I added my question a bit, but unfortunately it's still not working. Any ideas? – Lucas Aug 29 '11 at 18:01
I would try rebooting and not messing with the device at all. Let getty manage it. You may have confused getty. Also, getting typically expects hardware flow control. – David Schwartz Aug 29 '11 at 18:20
Okay, it turned out to be a wrong connection on our circuit board. But I will mark this as the answer, because it's exactly what I asked. – Lucas Aug 31 '11 at 23:56

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .