I was trying to use my FIDO device with a modified HID report descriptor.
My device worked with current descriptor, but when I added report ID to input and output reports, the microsoft security key is not able to communicate with device.
I do not see any attempt to send any output report on USB analyzer.
Could you please help to let me know if there is any restriction from FIDO that HID report should have no ID. If yes then could you please help to let me know the reason for such design.
0x06, 0xD0, 0xF1, /* HID_UsagePage(FIDO_USAGE_PAGE) */
0x09, 0x01, /* HID_Usage(FIDO_USAGE_CTAPHID) */
0xA1, 0x01, /* HID_Collection(HID_Application) */
0x85, 0x01, // REPORT_ID(0x01)
0x09, 0x20, /* HID_Usage(FIDO_USAGE_DATA_IN) */
0x15, 0x00, /* HID_LogicalMin(0) */
0x26, 0xFF, 0x00, /* HID_LogicalMaxS(0x00ff) */
0x75, 0x08, /* HID_ReportSize(8) */
0x95, CTAPHID_PCKT_LEN, /* HID_ReportCount(HID_INPUT_REPORT_BYTES) */
0x81, 0x02, /* HID_Input(HID_Data | HID_Absolute | HID_Variable) */
0x85, 0x02, // REPORT_ID(0x02)
0x09, 0x21, /* HID_Usage(FIDO_USAGE_DATA_OUT) */
0x15, 0x00, /* HID_LogicalMin(0) */
0x26, 0xFF, 0x00, /* HID_LogicalMaxS(0x00ff) */
0x75, 0x08, /* HID_ReportSize(8) */
0x95, CTAPHID_PCKT_LEN, /* HID_ReportCount(HID_OUTPUT_REPORT_BYTES) */
0x91, 0x02, /* HID_Output(HID_Data | HID_Absolute | HID_Variable) */
0x85, 0x03, // REPORT_ID(0x03)
0x09, 0x07, /* HID_Usage(Vendor Usage 0x07) */
0x15, 0x00, /* HID_LogicalMinimum(0) */
0x26, 0xff, 0x00, /* HID_LogicalMaximum(0xff) */
0x75, 0x08, /* HID_ReportSize(8) */
0x95, 0x08, /* HID_ReportCount(8) */
0xb1, 0x02, /* HID_Feature(Data,Var,Abs) */
0xC0, /* HID_EndCollection */