Hi, i currently work with an Arm Controller from ST and i try to create a CDC + HID usb interface device.
The configuration is working under XP but on Win7 only the Com Port is visible, the keyboard is not detected. While sniffing the usb communication i found out that the device descriptor is read correct (like on XP) but the HID report descriptor is not read by win7. Does anybody have an idea what is the problem?
Here is the driver i used:
; ; STMicroelectronics Comunication Device Class driver instalation file ; (C)2006 Copyright STMicroelectronics ; [Version] Signature="$Windows NT$" Class=Ports ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} Provider=%STM% LayoutFile=layout.inf DriverVer=10/02/06 [Manufacturer] %STM%=DeviceList [DestinationDirs] DefaultDestDir=12 [SourceDisksFiles] [SourceDisksNames] [DeviceList] %DESCRIPTION%=STMUSB, USB\VID_0483&PID_A097&MI_00 ;------------------------------------------------------------------------------ ; Windows 2000/XP Sections ;------------------------------------------------------------------------------ [STMUSB.nt] include=mdmcpq.inf CopyFiles=DriverCopyFiles AddReg=STMUSB.nt.AddReg [DriverCopyFiles] usbser.sys,,,0x20 [STMUSB.nt.AddReg] HKR,,DevLoader,,*ntkern HKR,,NTMPDriver,,usbser.sys HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" [STMUSB.nt.Services] AddService=usbser, 0x00000002, DriverService [STMUSB.nt.HW] include=mdmcpq.inf [DriverService] DisplayName=%DESCRIPTION% ServiceType=1 StartType=3 ErrorControl=1 ServiceBinary=%12%\usbser.sys ;------------------------------------------------------------------------------ ; String Definitions ;------------------------------------------------------------------------------ [Strings] STM="STMicroelectronics" DESCRIPTION="Datafox Virtual COM Port"
_ALIGN_BEGIN uint8_t usbd_cdc_CfgDesc[USB_CDC_CONFIG_DESC_SIZ] __ALIGN_END = { /*------------------------------------------------------------------------*/ /*Configuration Descriptor*/ /*------------------------------------------------------------------------*/ 0x09,0x02,0x4B,0x00,0x03,0x01,0x00,0xC0,0x32, //--------------------------------------------------------------------------- // Interface Association Descriptor //--------------------------------------------------------------------------- 0x08,0x0B,0x00,0x02,0x02,0x02,0x01,0x04, /*---------------------------------------------------------------------------*/ /*Interface Descriptor 1 */ //--------------------------------------------------------------------------- 0x09,0x04,0x00,0x00,0x01,0x02,0x02,0x01,0x04, //--------------------------------------------------------------------------- /*Header Functional Descriptor*/ //--------------------------------------------------------------------------- 0x05,0x24,0x00,0x10,0x01, //--------------------------------------------------------------------------- /*Call Management Functional Descriptor*/ //--------------------------------------------------------------------------- 0x05,0x24,0x01,0x00,0x03, //--------------------------------------------------------------------------- /*ACM Functional Descriptor*/ //--------------------------------------------------------------------------- 0x04,0x24,0x02,0x06, //--------------------------------------------------------------------------- /*Union Functional Descriptor*/ //--------------------------------------------------------------------------- 0x05,0x24,0x06, 0x00,0x01, //--------------------------------------------------------------------------- /*Endpoint 2 Descriptor*/ //--------------------------------------------------------------------------- 0x07,0x05,0x83, 0x03,LOBYTE(CDC_CMD_PACKET_SZE1),HIBYTE(CDC_CMD_PACKET_SZE1), 0xFF, /*---------------------------------------------------------------------------*/ /*Data class interface descriptor 1*/ //--------------------------------------------------------------------------- 0x09,0x04,0x01,0x00,0x02,0x0A,0x00,0x00,0x04, //--------------------------------------------------------------------------------- /*Endpoint OUT Descriptor*/ //--------------------------------------------------------------------------------- 0x07,0x05,0x01, 0x02,LOBYTE(CDC_DATA_MAX_PACKET_SIZE1), HIBYTE(CDC_DATA_MAX_PACKET_SIZE1), /* 065 */ 0x00, //--------------------------------------------------------------------------------- /*Endpoint IN Descriptor*/ //--------------------------------------------------------------------------------- 0x07,0x05,0x81, 0x02,LOBYTE(CDC_DATA_MAX_PACKET_SIZE1), HIBYTE(CDC_DATA_MAX_PACKET_SIZE1), 0x00, ////------------------------------------------------------------- ///************** Interface Descriptor Keyboard ****************/ ////------------------------------------------------------------- 0x09, USB_INTERFACE_DESCRIPTOR_TYPE, 0x02, 0x00, 0x01, 0x03, 0x01, 0x01, 0x00, ////---------------------------------------------------------------- ///**************** HID Descriptor Keyboard ********************/ ////---------------------------------------------------------------- 0x09,0x21,0x11,0x01,0x00,0x01,0x22,0x3F,0x00, ////------------------------------------------------------------------------- ///******************** Descriptor of Keyboard endpoint ********************/ ////------------------------------------------------------------------------- 0x07,0x05,0x82,0x03,0x08,0x00,0x0A, //---------------------------------------------------------------------------
> but the HID report descriptor is not read
Did you change the macro for HID interface number in usbcfg.h?
usbcfg.h #define USB_HID_IF_NUM 0 // <---- 2
This macro is used to process Get_Descriptor( HID_REPORT_DESCRIPTOR ), in USB_ReqGetDescriptor(), usbcore.c
Tsuneo
Hi,
i checked it and the value is 3 (2 interfaces for CDC and one for HID) Meanwhile i make some more tests with the system and i found out, that the timing problem is related to the used hub (not the test system with VM). Connecting the board directly to a free usb port of the pc and win7 detects both configurations, yeah! It works under 32 / 64 System. I think the timing problem is because of not using the DMA configuration. I will try if DMA works with hub as well.
Many thanks for your attention and your help!!
Best regards,
Matthew