Git Product home page Git Product logo

hyperx_pulsefire_dart_reverse_engineering's Introduction

HyperX Pulsefire Dart Reverse Engineering

Introduction

Reverse engineering material for the HyperX Pulsefire Dart Wireless Gaming Mouse

The HyperX Pulsefire Dart Wireless Gaming Mouse enumerates at 0951:16E1 (wireless) and 0951:16E2 (wired) and uses URB_INTERRUPT for control. Messages are 64 bytes long and zero-filled.

My unit (HX-MC006B 3500457-001.B00LF) has the following firmware versions reported by the Windows software:

  • Wireless firmware v4.1.0.4 (Wireless dongle firmware)
  • Wired firmware v1.1.0.8 (Mouse firmware)

These values seem to be the same (each digit split by dot) as in bcdDevice USB device descriptor value.

Check firmware versions on Linux:

cat $(egrep -l '16e1|16e2' /sys/bus/usb/devices/*/idProduct | sed 's/idProduct/bcdDevice/g')

The mouse operates in "direct mode" by default. It is therefore safe to send constant changes to the mouse without wearing the on-board memory.
Settings are only saved when sending a packet starting with DE FF 00 00.

The mouse is only compatible with the newer version of HyperX NGenuity (only available for Windows 10 from the Microsoft Store) and has a different protocol compared to older HyperX mice.

The codename for the newer NGenuity software is "NGenuity2", so that could perhaps be used as the protocol name.

The reverse engineering process has been purely done by inspecting the packets sent by NGenuity Beta and the mouse itself.
Some parts of the protocol documentation have been discovered by trial and error.
No HyperX Windows software has been decompiled or inspected while creating this project.

Protocol documentation

HIDAPI example code

  • example.c
    gcc -Ihidapi -lhidapi-hidraw example.c -o example && ./example 255 128 64 # RED GREEN BLUE

Packet captures

WIP Wireshark Dissector

License

CC0

The contents of this repository are licensed with Creative Commons — CC0 1.0 Universal license unless explicitly stated otherwise. Zero rights reserved.

HyperX® & HyperX Pulsefire Dart™ are registered trademarks of HP Inc (which were previously owned by Kingston Technology Corporation).
This project is not affiliated with or endorsed by HyperX, HP Inc or Kingston Technology Corporation.
All registered trademarks and trademarks are property of their respective owners.

hyperx_pulsefire_dart_reverse_engineering's People

Contributors

santeri3700 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

pgmtags

hyperx_pulsefire_dart_reverse_engineering's Issues

Pulsefire Dart openRGB support broke

Hey there, apologies for writing this here but I've been trying to troubleshoot the reason why openRGB refuses to modify any Dart RGB settings despite it being properly detected.

I've tried troubleshooting this on various computers and laptops but the effect is the same everywhere and with every openRGB version I've tried.

Considering you're the person that wrote support for the device to begin with, I thought you'd be able to help me get to the bottom of this mystery. Let me know if you need me to gather any logs or wireshark captures, or anything else and I'll do my best to help. Thank you in advance!

Edit: a link to the original support request thread on GitLab where I also tried raising the issue
https://gitlab.com/CalcProgrammer1/OpenRGB/-/issues/1069

Edit 2; forgot to mention that I'm running Windows10 64bit. Person in the above thread that mentioned their mouse worked with openRGB after the commit appears to be on Linux.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.