Difference in USB NCM class driver behavior for Windows 10 and Windows 11?
We have developed a Network Control Model (NCM) device, adhering to the CDC (0x02) class and the NCM (0x0D) subclass, as outlined in Microsoft’s supported USB classes (USB Device Class Drivers Included in Windows - Windows drivers | Microsoft Learn). Our aim is to utilize Microsoft’s UsbNcm.sys driver, which is designed to manage devices compatible with USB NCM. However, we are encountering a problem with this configuration on Windows 10 Pro (Version 22H2, OS build 19045.2965, installed on 23-03-2023, with Windows Feature Experience Pack 1000.19041.1000.0). According to the NCM specification, the communication interface subclass is identified as the Ethernet Control Model. As per this Ethernet Control Model specification, the host driver of an NCM device’s communication interface is expected to send a Zero-Length Packet (ZLP) when the Nth packet equals the maximum packet size. This specification is correctly adhered to by the host driver in Windows 11, which sends the ZLP as expected. However, this is not the case in Windows 10. We have confirmed this discrepancy through Lacro and Wireshark logs. Consequently, our compact USB NCM device does not operate correctly with the UsbNcm.sys driver in Windows 10. The version of the UsbNcm.sys driver we are using is DriverVer = 04/21/2009, 10.0.19041.1. Therefore, we are puzzled as to why the UsbNcm.sys driver in Windows 10 does not comply with the specification. Have we missed any points?