Windows CE and the Serial Carrier Detect Signal

The Windows CE serial port based networking components have an historical affinity for the RS232 Carrier Detect (CD) signal. A key feature of Windows CE 1.0 was automatic synchronization of email and contacts when docked (ActiveSync). The device needed to detect when it was docked, and it needed to wake up when docked. Since this scenario was originally serial port based, CD was used as both the wake-source interrupt and the signal to start the ActiveSync application on the device.

The corresponding components (mostly Unimodem and PPP) in Windows NT/XP/Vista do not rely on CD, so many scenarios that work between non-CE devices do not work the same when a CE device is involved. It is often due to one of the following reasons:

1. The cable being used does not include the Carrier Detect line.

2. The platform specific serial port device driver does not properly report CD status. The serial driver’s SL_GetModemStatus indicates CD state with the MS_RLSD_ON flag for the Win32 serial port API function GetCommModemStatus(). EV_RLSD is used to indicate a change in state of the CD signal.

3. The hardware does not implement the CD signal. If this is the case, then a valid workaround is for the serial port device driver to always indicate that CD is asserted by always setting MS_RLSD_ON in its SL_GetModemStatus function.