A CLI and tray application to monitor HyperX Cloud II Wireless headset battery level.
The CLI application is compatible with both Linux and MacOS operating systems. However, the tray application is only functional on Linux. Although it was only tested on Manjaro/KDE, it should also work on other distribution and desktop environments.
Currently, only the HyperX Cloud II Wireless and HyperX Cloud Stinger 2 Wireless. However, the HyperX Cloud II Wireless comes in two versions: one produced before HP acquired HyperX and one after. The application has only been tested on the HyperX Cloud II Wireless with the HP vendorID.
Make sure you have hidraw installed on your system.
Debian/Ubuntu:
sudo apt install libhidapi-hidraw0
Arch:
sudo pacman -S hidapi
MacOS:
brew install hidapi
These dependencies are probably already installed.
Debian/Ubuntu:
sudo apt install libdbus-1-dev libusb-1.0-0-dev libudev-dev
Arch:
sudo pacman -S dbus libusb
MacOS:
brew install libusb
Create a new file in /etc/udev/rules.d/99-hyperx-cloud-II.rules with the following content inside:
SUBSYSTEMS=="usb", ATTRS{idProduct}=="018b", ATTRS{idVendor}=="03f0", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idProduct}=="0696", ATTRS{idVendor}=="03f0", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idProduct}=="1718", ATTRS{idVendor}=="0951", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idProduct}=="0d93", ATTRS{idVendor}=="03f0", MODE="0666"
KERNEL=="hidraw*", ATTRS{idProduct}=="0d93", ATTRS{idVendor}=="03f0", MODE="0666"
KERNEL=="hidraw*", ATTRS{idProduct}=="018b", ATTRS{idVendor}=="03f0", MODE="0666"
KERNEL=="hidraw*", ATTRS{idProduct}=="0696", ATTRS{idVendor}=="03f0", MODE="0666"
KERNEL=="hidraw*", ATTRS{idProduct}=="1718", ATTRS{idVendor}=="0951", MODE="0666"
Once created, replug the wireless dongle.
To only build the cli_app on MacOS, use:
cargo build --release --bin cli_app
To build both applications on Linux, use:
cargo build --release
You can also download a compiled version from releases.
cargo build --release
will fail on MacOS because cargo will try to build the tray application, but some dependencies are exclusive to Linux.
cli_app
without any arguments will print the current battery level.
hyper_x_cloud_ii_wireless
without any arguments will start the tray application. Once it's open, hover over the headset icon in the system tray to view details like the battery level. To exit, right-click on the icon.
The battery level is checked regularly, but information about muting or charging the headset is only recorded when those events occur.
You can contribute code or monitor packets using Wireshark from the HyperX app on Windows.
This guide is very helpful.
In my case, the filter usb.idVendor == 0x03f0 && usb.idProduct == 0x018b
only showed on request.
I then only listened to the port on which this request was sent, e.g., (usb.src == "3.5.0") || (usb.dst =="3.5.0")
.
If you have an older headset, you may have to use a different vendor and product ID usb.idVendor == 0x0951 && usb.idProduct == 0x1718
.
Once you have set the filters, you can perform various actions and review the packets transmitted to and from the headset.
This project was inspired by hyperx-cloud-flight.