Skip to content

Tail light HID protocol

Fredrik Orderud edited this page Sep 16, 2023 · 6 revisions

HID protocol description

Tail-light update

Steps to update the tail-light:

  • Connect to mouse HID device with Usage=0212 and UsagePage=FF07.
  • Send a feature report with ByteLength=73 with the following header:
FeatureReport[0] = 0x24; // ReportID 36
FeatureReport[1] = 0xB2; // magic value
FeatureReport[2] = 0x03; // magic value
FeatureReport[3] = red;
FeatureReport[4] = green;
FeatureReport[5] = blue;

Other package types

Observed set feature-report packages of unknown type:

  • {0x24, 0x82, 0x00, 0x00, L"D\VID_045E&PID_00F9&MI_01&COL01", 0x00..., 0x07}
  • {0x24, 0x89, 0x01, 0x03, 0xf7, 0x07, ..}
  • {0x24, 0x97, 0x00, 0x00, 0x08, ..}
  • ...

How to reverse-engineer the protocol

It's possible to reverse-engineer the IntelliMouse USB HID protocol by installing USBPcap and Wireshark.

Steps:

  1. Open Wireshark with USBPcap plugin.
  2. Open "Microsoft Mouse and Keyboard Center" app.
  3. Change tail-light color.
  4. Observe USBHID SET_REPORT Request packages with ReportID=36 and ReportType=Feature that adhere to the format described above.

image

The feature report also contains a number of other non-zero bytes. I don't know if they carry a meaning or are just uninitialized memory.

It's possible to filter the packages by entering e.g. usbhid.setup.ReportType==3 as display filter in WireShark.