Thread (7 messages) 7 messages, 5 authors, 2003-11-22

Re: Serial Howto suggestions (was Re: Trouble reading from my serial device...)

From: David Lawyer <hidden>
Date: 2003-11-22 06:13:22

On Thu, Nov 20, 2003 at 09:47:51PM -0500, Chuck Messenger wrote:
OK, thanks for the thorough explanation, Ed -- it all makes sense now...

As far as the documentation goes -- I'm sending this to the 
maintainers/writers of the Linux Serial Howto, and the Linux Serial 
Programming Howto.  I had trouble sending to both before, so I'm 
cross-posting here in the hopes they might see it...

1) In my experience, open() does not hang if DTD is not asserted, even 
without O_NONBLOCK.  Instead, open() returns, but read() hangs instead. 
 If DTD is not asserted, and you open with O_NONBLOCK, then open() 
returns (as per the documentation), but all read()'s fail right away 
(not in the documentation).

2) It would be very helpful to point out in the documentation that you 
_must_ assert DCD -- in hardware -- or it will be impossible for you to 
operate the serial port, no matter what software flags you use.
Not so.  At least not on my system.  I'm running kernel 2.4.20 and
updated using Debian unstable a few months ago.  I'm now typing on a
dump terminal which is only connected by 3 wires to the PC so there is
no DCD.  But getty has set clocal which does the trick

Furthermore, I just used minicom to open my serial port for my modem
while watching "modemstat".  It shows DCD off (red) since I've set up my
modem to only assert DCD once the modem connects.  No problem opening
the port or reading it.  It reads when I see the results of AT commands
such as displaying the modem settings to double check that I've set it
for DCD off until connect.

So the way it's described is the way it's been working for many years.
I just checked the modemstat code and it opens the port without
O_NONBLOCK so it may well be that it's read() that hangs and not open().
Modemstat just checks the control lines and doesn't do any reads.

		David Lawyer (maintainer of Serial-HOWTO)
It would be nice to point out the trick of attaching DTR to DCD, too.
For reference, I'm running Mandrake 9.1, with kernel 2.4.21-0.13mdk.
Was a bug introduced with 2.4.21?  Anyway, you could try setting your
modem to negate DCD and see if you can dial out.
    - Chuck
[snip]
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help