i have a usbHidReportDescriptor that looks like the following and works, that means the device is recognized and initialized by WinXP.
Code: Select all
PROGMEM char usbHidReportDescriptor[USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH] = {
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x0b, 0x01, 0x00, 0x00, 0xff, // USAGE (Vendor Defined Page 1:Vendor Usage 1)
0xa1, 0x01, // COLLECTION (Application)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255)
0x75, 0x08, // REPORT_SIZE (8)
0x85, 0x01, // REPORT_ID
0x95, 0x06, // REPORT_COUNT (6)
0x09, 0x00, // USAGE (Undefined)
0x82, 0x00, 0x01, // INPUT (Data,Ary,Abs,Buf)
0x85, 0x02, // REPORT_ID
0x95, 0x01, // REPORT_COUNT (1)
0x09, 0x00, // USAGE (Undefined)
0xb2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf)
0x85, 0x03, // REPORT_ID
0x95, 0x06, // REPORT_COUNT (6)
0x09, 0x00, // USAGE (Undefined)
0xb2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf)
0x85, 0x04, // REPORT_ID
0x95, 0x01, // REPORT_COUNT (1)
0x09, 0x00, // USAGE (Undefined)
0xb2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf)
0x85, 0x05, // REPORT_ID
0x95, 0x06, // REPORT_COUNT (6)
0x09, 0x00, // USAGE (Undefined)
0xb2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf)
0x85, 0x06, // REPORT_ID
0x95, 0x02, // REPORT_COUNT (2)
0x09, 0x00, // USAGE (Undefined)
0xb2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf)
0x85, 0x07, // REPORT_ID
0x95, 0x0A, // REPORT_COUNT (10)
0x09, 0x00, // USAGE (Undefined)
0xb2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf)
0x85, 0x08, // REPORT_ID
0x95, 0x01, // REPORT_COUNT (1)
0x09, 0x00, // USAGE (Undefined)
0xb2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf)
#if USE_BOOTLOADER
0x85, 0x09, // REPORT_ID
0x95, 0x01, // REPORT_COUNT (1)
0x09, 0x00, // USAGE (Undefined)
0xb2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf)
#endif
0x85, 0x32, // REPORT_ID
0x95, 0x0B, // REPORT_COUNT (11)
0x09, 0x00, // USAGE (Undefined)
0xb2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf)
0x85, 0x33, // REPORT_ID
0x95, 0x06, // REPORT_COUNT (6)
0x09, 0x00, // USAGE (Undefined)
0xb2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf)
0x85, 0x34, // REPORT_ID
0x95, 0x01, // REPORT_COUNT (1)
0x09, 0x00, // USAGE (Undefined)
0xb2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf)
0x85, 0x35, // REPORT_ID
0x95, 0x06, // REPORT_COUNT (6)
0x09, 0x00, // USAGE (Undefined)
0xb2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf)
0x85, 0x36, // REPORT_ID
0x95, 0x04, // REPORT_COUNT (4)
0x09, 0x00, // USAGE (Undefined)
0xb2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf)
#if USE_IRSND_CAPABILITY
0x85, 0x37, // REPORT_ID
0x95, 0x01, // REPORT_COUNT (1)
0x09, 0x00, // USAGE (Undefined)
0xb2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf)
#endif
0xc0 // END_COLLECTION
};
This works well as long as USE_IRSND_CAPABILITY is set to 0. As soon as it's set to 1 (regardless of the setting of USE_BOOTLOADER) it doesn't work any more. In the device manager I can see a yellow exclamation mark and when I click onto the device it tells me something about a code-10 error.
lss-output with USE_IRSND_CAPABILITY = 0 -> working
Code: Select all
00000149 <usbDescriptorHidReport>:
149: 05 01 0b 01 00 00 ff a1 01 15 00 26 ff 00 75 08 ...........&..u.
159: 85 01 95 06 09 00 82 00 01 85 02 95 01 09 00 b2 ................
169: 02 01 85 03 95 06 09 00 b2 02 01 85 04 95 01 09 ................
179: 00 b2 02 01 85 05 95 06 09 00 b2 02 01 85 06 95 ................
189: 02 09 00 b2 02 01 85 07 95 0a 09 00 b2 02 01 85 ................
199: 08 95 01 09 00 b2 02 01 85 09 95 01 09 00 b2 02 ................
1a9: 01 85 32 95 0b 09 00 b2 02 01 85 33 95 06 09 00 ..2........3....
1b9: b2 02 01 85 34 95 01 09 00 b2 02 01 85 35 95 06 ....4........5..
1c9: 09 00 b2 02 01 85 36 95 04 09 00 b2 02 01 c0 00 ......6.........
...
lss-output with USE_IRSND_CAPABILITY = 1 -> not working
Code: Select all
00000149 <usbDescriptorHidReport>:
149: 05 01 0b 01 00 00 ff a1 01 15 00 26 ff 00 75 08 ...........&..u.
159: 85 01 95 06 09 00 82 00 01 85 02 95 01 09 00 b2 ................
169: 02 01 85 03 95 06 09 00 b2 02 01 85 04 95 01 09 ................
179: 00 b2 02 01 85 05 95 06 09 00 b2 02 01 85 06 95 ................
189: 02 09 00 b2 02 01 85 07 95 0a 09 00 b2 02 01 85 ................
199: 08 95 01 09 00 b2 02 01 85 09 95 01 09 00 b2 02 ................
1a9: 01 85 32 95 0b 09 00 b2 02 01 85 33 95 06 09 00 ..2........3....
1b9: b2 02 01 85 34 95 01 09 00 b2 02 01 85 35 95 06 ....4........5..
1c9: 09 00 b2 02 01 85 36 95 04 09 00 b2 02 01 85 37 ......6........7
1d9: 95 01 09 00 b2 02 01 c0 00 .........
Does anyone have an idea what could cause this problem or have any experience with it?
Strangely the problem also appears when I remove a report ID (e.g. ID 0x32).