Index: usb-devel/drivers/hid/usbhid/hid-core.c =================================================================== --- usb-devel.orig/drivers/hid/usbhid/hid-core.c +++ usb-devel/drivers/hid/usbhid/hid-core.c @@ -911,14 +911,13 @@ static int usbhid_set_raw_report(struct struct usb_host_interface *interface = intf->cur_altsetting; int ret, skipped_report_id = 0; - /* Byte 0 is the report number. Report data starts at byte 1.*/ - if ((rtype == HID_OUTPUT_REPORT) && - (hid->quirks & HID_QUIRK_SKIP_OUTPUT_REPORT_ID)) - buf[0] = 0; - else - buf[0] = reportnum; - - if (buf[0] == 0x0) { + /* + * If the report ID number is 0 then report data starts at byte 0. + * Otherwise byte 0 is the report number and report data starts + * at byte 1. + */ + if (rtype == HID_OUTPUT_REPORT && reportnum > 0 && + (hid->quirks & HID_QUIRK_SKIP_OUTPUT_REPORT_ID)) { /* Don't send the Report ID */ buf++; count--;