 <p>Hard to tell if it's your only problem but <a href="http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.readexisting.aspx" rel="nofollow"><code>SerialPort.ReadExisting()</code></a> only reads the data that is <em>immediately</em> available (ie in the stream and buffer).</p> <p>Your program writes data to the modem, and calls <code>ReadExisting()</code> right away. <code>ReadExisting</code> will return immediately with no data available, since the modem has had no time to respond.</p>