Hmm, this looks the same as the SunOS problem - you can't talk to the modem if hardware handshaking is set and DCD is still low. You can do this by opening the serial port with O_NONBLOCK. Typically, a modem-aware utility should turn off non-blocking mode later, after a connection is established, using fcntl(..., FNONBLOCK, ...).