PATCH: TIOCMBIS/TIOCMBIC not working when using usbser.sys

Corinna Vinschen corinna-cygwin@cygwin.com
Thu Nov 10 14:55:10 GMT 2022


Hi Carlo,

On Nov 10 10:07, Carlo B. wrote:
> Hello,
> into winsup/cygwin/fhandler/serial.cc, the function
> fhandler_serial::switch_modem_lines() is called when TIOCMBIS/TIOCMBIC
> are used into an ioctl() call.
> This function uses EscapeCommFunction() for setting and resetting RTS
> and DTR signals of a serial port.
> Unfortunately, this function does not work on USB CDC devices.
> This is not a true bug of a CYGWIN but an issue of the usbser.sys
> driver from Microsoft, from Windows 2000 to the latest Windows 11.
> Both 32bit and 64bit versions of the operating system are affected.
> Actually, I tested EscapeCommFunction() also when using a real UART,
> based on the traditional 16550 driver and it works fine.
> Using thirdy party CDC drivers, like the one provided by FTDI for
> their USB bridge chips, probably also works.
> However, it is also possible to drive the RTS/DTR signals by writing
> their state with SetCommState(), which proved to be working fine all
> types of connection.
> 
> Here, I attached a patch that I made for fixing this issue.

Thanks for your patch, but would you be so kind to create a complete git
patch, created by committing your patch locally on top of git master,
with a fine commit message outlining the technical details as described
above?  Then create a patch file using `git format-patch -1' and send it
here or to the cygwin-patches mailing list, please?

> I was wondering if this fix could be imported into the core of CYGWIN
> and if it could be possible to include it also into the v3.3.x branch,
> since I have seen that 32bit support has been removed from Master
> branch recently.

There will be no more 32 bit release. 3.3.6 is the last one.


Thanks,
Corinna


More information about the Cygwin mailing list