In my USB modem driver, I’ve noticed that after my device reports the “CONNECT” string, I get IOCTL_SERIAL_CLR_RTS and IOCTL_SERIAL_CLR_DTR from dialup networking. This in turn hangs up my device and I get kicked off.
If I switch to usbser.sys and view everything with PortMon, I can see that DUN issues IOCTL_SERIAL_SET_RTS and IOCTL_SERIAL_SET_DTR in the same exact place.
What would be causing it to drop those signals? I’ve matched my response to IOCTL_SERIAL_GET_PROPERTIES to usbser’s so I’m assuming it’s not attempting some sort of handshaking.
The modem log looks like this:
03-30-2007 18:51:45.674 - Send: ATD*##***##
03-30-2007 18:51:45.704 - Recv: CONNECT
03-30-2007 18:51:45.704 - Interpreted response: Connect
03-30-2007 18:51:45.704 - Receive Connect but CD was low, Waiting for signal to go high
03-30-2007 18:51:45.724 - CD has been raised
03-30-2007 18:51:45.724 - Connection established at 12000000bps.
03-30-2007 18:51:45.724 - Error-control off or unknown.
03-30-2007 18:51:45.724 - Data compression off or unknown.
03-30-2007 18:51:45.775 - CD dropped–Remote modem hung up. ModemStatus=00000030
However the ModemStatus of 00000030 comes after the DTR/RTS clear. Initially I report 000000B0 (CTS + DSR + DCD), which is what usbser.sys is already reporting.