From 0b58637a49589058ca503a2175af7bb61355fee9 Mon Sep 17 00:00:00 2001 From: kylongmu Date: Tue, 3 Jan 2023 11:25:54 +0800 Subject: USB CDC驱动在win11下无法识别,看了微软的描述修改子类后正常 (#6783) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 这是微软关于此问题的链接: https://learn.microsoft.com/zh-cn/windows-hardware/drivers/usbcon/usb-driver-installation-based-on-compatible-ids#usbsersys-installation Windows 10 及更高版本 从 Windows 10 开始,Usbser.inf 已添加到 %Systemroot%\INF 目录,该目录加载 Usbser.sys 作为设备堆栈中功能设备对象 (FDO) 。 如果设备属于通信和 CDC 控制设备类, Usbser.sys 加载。 无需编写自己的 INF 来引用驱动程序。 驱动程序是基于与包含在 Windows 中的其他 USB 设备类驱动程序相似的兼容 ID 匹配来加载的。 USB\Class_02 USB\Class_02&SubClass_02 如果要自动 加载Usbser.sys, 在设备描述符中将类代码设置为 02,将子类代码 设置为 02。 有关详细信息,请参阅 USB 通信设备类。 使用此方法时,无需为设备分发 INF 文件,因为系统使用的是 Usbser.inf。 如果设备指定类代码 02,但子类代码值不是 02,则 Usbser.sys不会自动加载 。 即插即用管理器尝试查找驱动程序。 如果找不到合适的驱动程序,则设备可能未加载驱动程序。 在这种情况下,你可能需要加载自己的驱动程序或编写引用另一个内置驱动程序的 INF。 --- components/drivers/usb/usbdevice/class/cdc_vcom.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'components/drivers') diff --git a/components/drivers/usb/usbdevice/class/cdc_vcom.c b/components/drivers/usb/usbdevice/class/cdc_vcom.c index 8eacd9248d..89d03caf88 100644 --- a/components/drivers/usb/usbdevice/class/cdc_vcom.c +++ b/components/drivers/usb/usbdevice/class/cdc_vcom.c @@ -98,7 +98,7 @@ static struct udevice_descriptor dev_desc = USB_DESC_TYPE_DEVICE, //type; USB_BCD_VERSION, //bcdUSB; USB_CLASS_CDC, //bDeviceClass; - 0x00, //bDeviceSubClass; + 0x02, //bDeviceSubClass; 0x00, //bDeviceProtocol; CDC_MAX_PACKET_SIZE, //bMaxPacketSize0; _VENDOR_ID, //idVendor; @@ -118,7 +118,7 @@ static struct usb_qualifier_descriptor dev_qualifier = USB_DESC_TYPE_DEVICEQUALIFIER, //bDescriptorType 0x0200, //bcdUSB USB_CLASS_CDC, //bDeviceClass - 0x00, //bDeviceSubClass + 0x02, //bDeviceSubClass 0x00, //bDeviceProtocol 64, //bMaxPacketSize0 0x01, //bNumConfigurations -- cgit v1.3.1