Storing 2 bytes of data in your Logitech mouse
4 hours ago
- #USB
- #HID++
- #Logitech
- The author had a 'dumb idea' to use a Logitech MX Vertical mouse as a tiny USB drive for data storage.
- Logitech mice use the HID++ protocol, partially documented and partially reverse-engineered, with 33 features exposed.
- HID++ 2.0 involves a feature table where each feature ID maps to a device-specific index, used for subsequent calls.
- Attempts to use undocumented features like 'TemplateBytesNVS' for non-volatile storage were made, but some were blocked by macOS's IOHIDManager.
- The device name register accepted writes but ignored them, while the DPI register successfully stored and retained a 2-byte value across devices.
- The project, though yielding only 2 bytes of storage, provided deep insights into HID++, macOS HID management, and device behavior.
- The investigation emphasized learning through experimentation rather than documentation, uncovering unexpected behaviors and system limitations.
- The author concludes that the value was in the exploration and understanding gained, not the practical outcome.
- A Rust tool was developed for this purpose and is available on GitHub for others to experiment with their Logitech mice.