delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
X-Original-To: | cygwin AT cygwin DOT com |
Delivered-To: | cygwin AT cygwin DOT com |
DMARC-Filter: | OpenDMARC Filter v1.4.1 sourceware.org 62C9E3858D35 |
Authentication-Results: | sourceware.org; |
dmarc=pass (p=none dis=none) header.from=gmail.com | |
Authentication-Results: | sourceware.org; spf=pass smtp.mailfrom=gmail.com |
DKIM-Signature: | v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; |
h=to:subject:message-id:date:from:mime-version:from:to:cc:subject | |
:date:message-id:reply-to; | |
bh=SjwRUlwAQQvY7cUCGHetxWoOFh3V7kPgmKkuT+jn+Uo=; | |
b=eGlJzSMLwmGgJm+BKc5ox50S2lUtVxtq5RAAFOBKlIkvFd7cpLOskM4qrXmeT0/zgF | |
U1wbBX443Zc9BaPN5aV+u1G4KAtF83MHJLSaTgGM5muaXzx9XHFvF74cDXLmxdlzPJgm | |
Vb6grQ2XiXrddUtKqH+QJ03cjtls/7X+lxrjrOEBeWXEQWOka4brPWzZE1QO21t48biH | |
GbKcK91TGOjlVbjK6WrH61cBWJdhvK+c6T0jucnkhFq2WxZFVaaPYHdYE6L/OknlZ8md | |
2ohvB6A+BCUmpvZqxUkXADhhcEjgY3FT6VYmGkrt/mgCVB2ysq1dE+AwfXRfnUcb6coa | |
Ob5w== | |
X-Google-DKIM-Signature: | v=1; a=rsa-sha256; c=relaxed/relaxed; |
d=1e100.net; s=20210112; | |
h=to:subject:message-id:date:from:mime-version:x-gm-message-state | |
:from:to:cc:subject:date:message-id:reply-to; | |
bh=SjwRUlwAQQvY7cUCGHetxWoOFh3V7kPgmKkuT+jn+Uo=; | |
b=j7zq2P0IvvO/g6FTu5YWmxqv1ZBNm6Z5it6zX5ytvV5qznKp2AETOCbM4r7gyOelLL | |
WfK5V1+T8v5jiEScJKoQoxyHquwjwUsl3qIoFW1s5PbAh3xwI4Pyzh5i/eujVaG679sj | |
t2qp6N7iXndcmy4fS5mMatEZLtYKtuTxBGVVoqVVHmdWW2gn/uP1yiDgJvzpGnwGlN01 | |
BmMj/PBx/9nrqFws5cdnDFwURbDZHHQjaZxbMgnZw37jj9O8KW8+hCI4UXq678evF/qC | |
iHoA5pnkLqkKpEHSGGRisWOdhDUT0jauXcBgYHcTny1xbyoy+IVJUsFHRKKaWDFqep5G | |
ct7Q== | |
X-Gm-Message-State: | ACrzQf0d+vaKFng5QGBRYSzfaYDq87pSqlhIFrbO6eB0llWfAvPw4DXG |
JboPXCioePcltTts61NjtejzF9E2zKevtsuCEY4ivjQZBSU= | |
X-Google-Smtp-Source: | AMsMyM4g8fpsD4WfpUgq3YXj5ee8P4I84p15SKNuGDk5ZRSk/YZTXAF69HK1lUFiJDf9neAEIeguAcUx2FnVsNLUjrY= |
X-Received: | by 2002:a05:600c:3655:b0:3cf:7082:dc18 with SMTP id |
y21-20020a05600c365500b003cf7082dc18mr38515409wmq.36.1668071231061; Thu, 10 | |
Nov 2022 01:07:11 -0800 (PST) | |
MIME-Version: | 1.0 |
From: | "Carlo B." <carlo DOT bramini AT gmail DOT com> |
Date: | Thu, 10 Nov 2022 10:07:01 +0100 |
Message-ID: | <CADt9575fzjVLgAwB0EScK=0CZr_dBCCs_bE3VrVuDFUH-MFRTg@mail.gmail.com> |
Subject: | PATCH: TIOCMBIS/TIOCMBIC not working when using usbser.sys |
To: | The Cygwin Mailing List <cygwin AT cygwin DOT com> |
X-Spam-Status: | No, score=-0.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, |
DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, | |
SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 | |
X-Spam-Checker-Version: | SpamAssassin 3.4.6 (2021-04-09) on |
server2.sourceware.org | |
X-BeenThere: | cygwin AT cygwin DOT com |
X-Mailman-Version: | 2.1.29 |
List-Id: | General Cygwin discussions and problem reports <cygwin.cygwin.com> |
List-Archive: | <https://cygwin.com/pipermail/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-request AT cygwin DOT com?subject=help> |
List-Subscribe: | <https://cygwin.com/mailman/listinfo/cygwin>, |
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe> | |
Sender: | "Cygwin" <cygwin-bounces+archive-cygwin=delorie DOT com AT cygwin DOT com> |
--00000000000030283805ed1a1953 Content-Type: text/plain; charset="UTF-8" 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. Anyways, in my opinion this is also a better solution for handling these signals since RTS/DTR can be set at the same time rather than having two separate calls with a visible delay between them. 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. Thank you very much for your time. Sincerely, Carlo Bramini. --00000000000030283805ed1a1953 Content-Type: application/octet-stream; name="winsup_cygwin_fhandler_serial.cc.patch" Content-Disposition: attachment; filename="winsup_cygwin_fhandler_serial.cc.patch" Content-Transfer-Encoding: base64 Content-ID: <f_laauiw440> X-Attachment-Id: f_laauiw440 ZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXIvc2VyaWFsLmNjIGIvd2luc3VwL2N5 Z3dpbi9maGFuZGxlci9zZXJpYWwuY2MKaW5kZXggMTc0YTU3YTQzLi41OGE4ZGY2NzcgMTAwNjQ0 Ci0tLSBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXIvc2VyaWFsLmNjCisrKyBiL3dpbnN1cC9jeWd3 aW4vZmhhbmRsZXIvc2VyaWFsLmNjCkBAIC0zOTEsNTAgKzM5MSwzOSBAQCBmaGFuZGxlcl9zZXJp YWw6OnRjZmxvdyAoaW50IGFjdGlvbikKIGludAogZmhhbmRsZXJfc2VyaWFsOjpzd2l0Y2hfbW9k ZW1fbGluZXMgKGludCBzZXQsIGludCBjbHIpCiB7Ci0gIGludCByZXMgPSAwOwotCi0gIGlmIChz ZXQgJiBUSU9DTV9SVFMpCi0gICAgewotICAgICAgaWYgKEVzY2FwZUNvbW1GdW5jdGlvbiAoZ2V0 X2hhbmRsZSAoKSwgU0VUUlRTKSkKLQlydHMgPSBUSU9DTV9SVFM7Ci0gICAgICBlbHNlCi0Jewot CSAgX19zZXRlcnJubyAoKTsKLQkgIHJlcyA9IC0xOwotCX0KLSAgICB9Ci0gIGVsc2UgaWYgKGNs ciAmIFRJT0NNX1JUUykKLSAgICB7Ci0gICAgICBpZiAoRXNjYXBlQ29tbUZ1bmN0aW9uIChnZXRf aGFuZGxlICgpLCBDTFJSVFMpKQotCXJ0cyA9IDA7Ci0gICAgICBlbHNlCi0JewotCSAgX19zZXRl cnJubyAoKTsKLQkgIHJlcyA9IC0xOwotCX0KLSAgICB9Ci0gIGlmIChzZXQgJiBUSU9DTV9EVFIp CisgIGlmICgoc2V0ICYgKFRJT0NNX1JUUyB8IFRJT0NNX0RUUikpIHx8IChjbHIgJiAoVElPQ01f UlRTIHwgVElPQ01fRFRSKSkpCiAgICAgewotICAgICAgaWYgKEVzY2FwZUNvbW1GdW5jdGlvbiAo Z2V0X2hhbmRsZSAoKSwgU0VURFRSKSkKLQlydHMgPSBUSU9DTV9EVFI7CisgICAgICBEQ0IgZGNi OworCisgICAgICBtZW1zZXQoJmRjYiwwLHNpemVvZihkY2IpKTsKKyAgICAgIGRjYi5EQ0JsZW5n dGggPSBzaXplb2YoZGNiKTsKKworICAgICAgaWYgKCFHZXRDb21tU3RhdGUoZ2V0X2hhbmRsZSgp LCAmZGNiKSkKKyAgICAgICAgeworICAgICAgICAgIF9fc2V0ZXJybm8gKCk7CisgICAgICAgICAg cmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgIGlmIChzZXQgJiBUSU9DTV9SVFMpCisgICAg ICAgIGRjYi5mUnRzQ29udHJvbCA9IFJUU19DT05UUk9MX0VOQUJMRTsKICAgICAgIGVsc2UKLQl7 Ci0JICBfX3NldGVycm5vICgpOwotCSAgcmVzID0gLTE7Ci0JfQotICAgIH0KLSAgZWxzZSBpZiAo Y2xyICYgVElPQ01fRFRSKQotICAgIHsKLSAgICAgIGlmIChFc2NhcGVDb21tRnVuY3Rpb24gKGdl dF9oYW5kbGUgKCksIENMUkRUUikpCi0JcnRzID0gMDsKKyAgICAgIGlmIChjbHIgJiBUSU9DTV9S VFMpCisgICAgICAgIGRjYi5mUnRzQ29udHJvbCA9IFJUU19DT05UUk9MX0RJU0FCTEU7CisKKyAg ICAgIGlmIChzZXQgJiBUSU9DTV9EVFIpCisgICAgICAgIGRjYi5mUnRzQ29udHJvbCA9IERUUl9D T05UUk9MX0VOQUJMRTsKICAgICAgIGVsc2UKLQl7Ci0JICBfX3NldGVycm5vICgpOwotCSAgcmVz ID0gLTE7Ci0JfQorICAgICAgaWYgKGNsciAmIFRJT0NNX0RUUikKKyAgICAgICAgZGNiLmZSdHND b250cm9sID0gRFRSX0NPTlRST0xfRElTQUJMRTsKKworICAgICAgaWYgKCFTZXRDb21tU3RhdGUo Z2V0X2hhbmRsZSgpLCAmZGNiKSkKKyAgICAgICAgeworICAgICAgICAgIF9fc2V0ZXJybm8gKCk7 CisgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CiAgICAgfQogCi0gIHJldHVybiByZXM7 CisgIHJldHVybiAwOwogfQogCiAvKiBpb2N0bDogKi8K --00000000000030283805ed1a1953 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple --00000000000030283805ed1a1953--
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |