Skip to content

Releases: Sapd/HeadsetControl

4.0.0

Choose a tag to compare

@Sapd Sapd released this 23 Jul 12:39
4.0.0
7868482

HeadsetControl 4.0.0 is a major release. It is the first stable release built on the complete rewrite of HeadsetControl from C to modern C++20, and it bundles all device and feature work accumulated since 3.1.0 — 20+ new headsets, new capabilities, and a large batch of battery/chatmix fixes.

Note for existing users: the command-line interface is unchanged — your existing commands and scripts keep working. The major version bump reflects the internal rewrite and the new public library API, not CLI breakage.

Highlights — the C++20 rewrite

HeadsetControl has been rewritten from the ground up in modern C++20:

  • Type-safe error handling with Result<T> — every device operation returns a rich result (level, status, error code + message) instead of ambiguous return codes.
  • New high-level library API — HeadsetControl is now usable as a library, not just a CLI:
    • C++: #include <headsetcontrol.hpp> (headsetcontrol::discover(), headset.getBattery(), …)
    • C / FFI: #include <headsetcontrol_c.h> for bindings (Python, Rust, …)
    • Static (headsetcontrol_lib) and optional shared (-DBUILD_SHARED_LIBRARY=ON, versioned with SOVERSION) targets.
  • Protocol templates (HIDPPDevice, SteelSeriesDevice, CorsairDevice) that cut per-device code by 60–80%.
  • Data-driven feature system — a single capability-descriptor table and a handler registry replace the old giant switch statements, with automatic parameter validation and help-text generation.
  • Comprehensive test suite — unit, mock-device, and integration tests, plus a virtual test device implementing every capability.
  • Reorganized project layoutsrc/*.clib/ (core library) + cli/ (command-line) + tests/; C++ headers use .hpp.

Breaking changes

  • Requires a C++20 compiler (GCC 13+, Clang 16+, Apple Clang 15+, MSVC 2019 16.10+).
  • Source layout reorganized into lib/, cli/, tests/; headers renamed .h.hpp.
  • New library targets and install layout (public headers under lib/).

Full technical detail is in the release notes below and in docs/ADDING_A_DEVICE.md / docs/LIBRARY_USAGE.md.

New device support

  • Audeze — Maxwell 2 (PlayStation/PC and Xbox variants)
  • Corsair — Virtuoso XT, Virtuoso Max Wireless, HS80 Max, Wireless V2 family
  • HyperX — Cloud III Wired (2026), Cloud II Wireless (incl. Kingston variant)
  • Lenovo — Wireless VoIP Headset
  • Logitech — ASTRO A50 Gen 5, G522 LIGHTSPEED, G PRO X2 LIGHTSPEED (Centurion protocol + new variant), G431 product ID
  • Plantronics / Poly — Voyager 8200 UC (via BT600 dongle)
  • Sony — INZONE H5 (WH-G500), INZONE Buds (WF-G700N)
  • SteelSeries — Arctis Nova 3P Wireless, Arctis Nova 3X Wireless, Arctis Nova 7 (Gen 2), Arctis Nova 7X / 7P (Gen 2 + additional PIDs, Diablo edition, WoW 20th Anniversary edition), Arctis Buds

New features

  • Noise filter capability (Audeze Maxwell).
  • Parametric equalizer capability (SteelSeries Arctis Nova 3P), plus equalizer presets and microphone-volume support for that family.
  • USB vendor/product name retrieval for connected devices.
  • Per-capability platform specification (devices can declare Linux/macOS/Windows support).
  • equalizer_presets_count decoupled from the preset list.
  • Packaging & installers: Windows NSIS installer, Linux AppImage / .deb / .rpm, and portable binaries for all platforms, produced by the continuous-build pipeline with SHA-256 checksums.

Fixes

  • Treat out-of-range battery voltage as unavailable rather than reporting a bogus level.
  • Fix Arctis Nova 7 battery-level misreporting and correct the HID interface used for Nova 3P/3X battery queries.
  • Use absolute battery reporting for SteelSeries Gen 2 devices.
  • Fix inverted ChatMix mapping on SteelSeries Arctis 7 / Pro.
  • Fix battery reporting on several Logitech devices and on HyperX Cloud II Wireless.
  • Limit the Logitech PRO X2 legacy battery fallback to genuinely unsupported features.
  • Fix -o querying each info capability twice; correct G Pro X2 sidetone-level mapping.

For developers

  • Adding a device is now a small header-only class — see docs/ADDING_A_DEVICE.md.
  • Using HeadsetControl as a library (C++, C, Python, Rust examples) — see docs/LIBRARY_USAGE.md.

Release artifacts are signed — each download has a matching .asc detached GPG signature (key git@sapd.eu, fingerprint 77BE B7E2 32CF 1E51 5477 7D4D D586 6C58 9401 97BF). Verify with gpg --verify <file>.asc <file>.

What's Changed

  • Fix rapid battery request issue on Audeze Maxwell by @ModoloDev in #412
  • fix(steelseries_arctis_nova_7): add missing product ID by @ChadAPSheridan in #419
  • Feat: Add support for SteelSeries Arctis Nova 3P Wireless by @marcg03 in #417
  • Added OS X 3rd party tool by @ChrisLauinger77 in #420
  • feat: Decouple equalizer_presets_count from equalizer_presets by @bwachtendorf in #423
  • Upgrade clang-format to version 18 and improve version consistency by @Sapd in #428
  • docs: Add headset-battery-indicator GUI link to README by @ruflas in #430
  • Fix Battery on various Logitech devs by @Sapd in #434
  • Add aarol/headset-battery-indicator to README by @aarol in #435
  • Fix Hyperx Cloud II Wireless battery status by @Joaaoc in #436
  • Add suport for SteelSeries Arctis Nova 3X Wireless by @jb-boin in #438
  • add support for SteelSeries Arctis Nova 7x Wireless Gen 2 by @alyraffauf in #440
  • C++ Rewrite by @Sapd in #443
  • Update CI to use lukka/run-cmake@v10 with CMakePresets and add MSVC s… by @Sapd in #453
  • edited third party softwares by @floraaubry in #445
  • Packages by @Sapd in #454
  • Organize Releases and add Windows Installer by @Sapd in #455
  • Add top level project guard by @billtran1632001 in #456
  • Add additional Steelseries Arctis Nova 7X v2 id by @Crashdummyy in #461
  • Clang format PR CI fix by @Sapd in #465
  • Replace -? for capabilities by @Sapd in #466
  • CI: Fix PATH error of installer by @Sapd in #467
  • Fix equalizer presets output in JSON, YAML, and ENV formats by @Sapd in #468
  • Separate Nova 7P into its own device class without sidetone/chatmix by @Sapd in #469
  • Fix cpp-linter 403 errors and apply code formatting by @Sapd in #470
  • Nova 7 Diablo by @handy142 in #473
  • Steelseries Gen2 uses absolute battery by @Sapd in #457
  • Fix inverted ChatMix level for SteelSeries Arctis 7/Pro (#475) by @Sapd in #480
  • Add support for Arctis Nova 7X (PIDs 0x22a4, 0x22a5) by @nisodex in #484
  • changed interface id from 0 to 4 for Arctis Nova 3P Wireless by @mrkrook2012 in #483
  • Add new device: Corsair wireless v2 by @Frank-py in #492
  • Adds support for a new G PRO X2 variant by @ChrisLauinger77 in #478
  • Add support for retrieving USB vendor and product names by @ChrisLauinger77 in #494
  • Add new device: Lenovo Wireless VoIP Headset by @danielstuart14 in #497
  • fix 499 - correct HID interface for Arctis Nova 3P/3X Wireless battery query by @asdfasdf-ohfot in #500
  • Add new PID for Arctis Nova 7x v2, Nova 7P v2 by @aarol in #496
  • Add support for Audeze Maxwell 2 PlayStation version by @jjantti22 in #502
  • Update sidetone level mapping for Logitech G Pro X2 Lightspeed by @ChrisLauinger77 in #503
  • Add support for Logitech G522 Lightspeed by @iowi479 in #501
  • Add support for Sony INZONE Buds (WF-G700N) by @Sniqi in #505
  • Updates QontrolPanel entries in README by @ChrisLauinger77 in #509
  • Adding G431 product id by @LJ5O in #508
  • Fix Arctis Nova 7 battery level misreporting. by @ashirkov-c-arlo in #507
  • Logitech G PRO X 2 LIGHTSPEED Centurion protocol by @ChrisLauinger77 in #512
  • Added full support for Audeze Maxwell 2 PS/PC version by @MonsterBagels in #506
  • Fix HID++ battery voltage out-of-range handling by @eriosgamer in #516
  • feat(device): add HyperX Cloud II Wireless (Kingston) by @Phelete in #519
  • add HyperX Cloud III Wired 2026 by @MattGalan in #525
  • Add Corsair Virtuoso Max Wireless support by @gr...
Read more

Continuous Build

Continuous Build Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Jan 14:13
d4fb352

Continuous Build

Latest automated build from master branch.

Downloads

Windows

Linux

macOS

Checksums (SHA256)

94da242166dd263447f7a34172985e13de07d30b38cba14381fac18864a7f8fa  headsetcontrol-4.0.0_16_g9ab5031-1.x86_64.rpm
bae53aeae8b06ad0ec505bbc560c446c925cead4c4b6a0eac5f671089da446af  headsetcontrol-linux-x86_64.zip
7f11dd78ee2a8e406291a5940f9f1c97302109989fe9cf5f9e035227ea78975b  headsetcontrol-macos-arm64.zip
cf56be6ae6dafb79abf2f7df6c2395702e8a1f6a373ad68bb2d9abb558ae50fa  headsetcontrol-x86_64.AppImage
a88781e899562a1b99fa661909cbf336ec59aed8e48aef5c40a09dbe8d378ad1  headsetcontrol_4.0.0-16-g9ab5031_amd64.deb

Built from 9ab5031

3.1.0

Choose a tag to compare

@Sapd Sapd released this 22 May 13:02
8fd639f

What's Changed

New Contributors

Full Changelog: 3.0.0...3.1.0

3.0.0

Choose a tag to compare

@Sapd Sapd released this 01 Apr 13:48
3.0.0
fc61909

Implemented an output feature for third party API.
For example: headsetcontrol --output json
See here for full docs of the API.

Short output (-c) is now deprecated.

What's Changed

  • Adds Device ID for SteelSeries Arctis Pro GameDAC by @AGuyWhoLikesTetris in #300
  • Fix HyperX Cloud Alpha by @InfiniteLoopGameDev in #305
  • Add Steelseries Arctis Nova Pro Wireless support by @Anden in #306
  • Add support for Steelseries Arctis Nova 7 Diablo IV edition by @yurusov in #310
  • Add support for Logitech G Pro X 2 by @darkymtp in #316
  • Add Arctis Nova 3 support by @AnErrupTion in #319
  • Introduce internal equalizer baseline and band limit by @AnErrupTion in #320
  • Closes issue #322 | Add option to check if headset is connected by @AinoSpring in #323
  • Support for 0x0a56(Corsair Void Elite USB RGB) by @catdotjs in #307
  • Implement JSON/YAML/ENV output by @Sapd in #333
  • Help text (-h) reworked and dynamically adjusts depending on device
  • Battery can now also report during charging (but it might be imprecise)
  • HeadsetControl will now also display version information

New Contributors

Full Changelog: 2.7.0...3.0.0

2.7.0

Choose a tag to compare

@Sapd Sapd released this 01 May 12:43

Summary

  • Add --follow [secs] parameter for monitoring
  • A Windows binary is now built for every PR/Push, check GitHub actions/artefacts
  • A lot of fixes, devices and device features (see below)

What's Changed

New Contributors

Full Changelog: 2.6.1...2.7.0

2.6.1

Choose a tag to compare

@Sapd Sapd released this 17 Jul 12:54
d890a6c

What's Changed

New Contributors

Full Changelog: 2.6...2.6.1

2.6: Dev Menu and full Windows Support

Choose a tag to compare

@Sapd Sapd released this 13 Nov 11:42

Summary

  • Added developer menu: ./headsetcontrol --dev
    • E.g. list all connected HID devices: ./headsetcontrol --dev -- --list
  • Support for different Usage/UsagePage/InterfaceIDS per feature/device instead of per device
    • This enables full Windows Support
    • UsageIDs for several devices still need to be added

What's Changed

  • cmake improvements for distros by @iv-m in #181
  • Support different Interface/Usage/UsagePage-IDs per headset by @Sapd in #188

Full Changelog: 2.5...2.6

2.5

2.5

Choose a tag to compare

@Sapd Sapd released this 24 Oct 12:45

Summary

  • Windows binary now statically linked
  • Added support for more devices
  • udev location fixed

What's Changed

  • Improve README: Add Fedora commands by @vscsilva in #155
  • SteelSeries Arctis 1 Wireless battery status support by @iv-m in #156
  • Add support for Logitech G433 (Sidetone) by @Athemis in #161
  • Add support for SteelSeries Arctis Pro Wireless by @csmith in #162
  • Be more verbose about the -m option by @XPhyro in #171
  • Fix chat-mix comment by @XPhyro in #176
  • Mention voice prompts and rotate to mute in readme by @simonbaird in #175
  • Add support for Logitech Zone 750 by @simonbaird in #174
  • Added Roccat Elo 7.1 USB by @JackLeEmmerdeur in #172
  • Fix install path of udev rules on linux by @ianliu in #179
  • Windows: Link statically by @Sapd in #180

New Contributors

Full Changelog: 2.4...2.5

2.4

2.4

Choose a tag to compare

@Sapd Sapd released this 13 May 11:47

Added a lot of new devices

Windows support

Choose a tag to compare

@Sapd Sapd released this 09 Jan 19:29
4436084
  • Experimental Windows support
  • CI
  • New corsair void product ids
  • Renamed executable to lower-case
  • G533 battery status
  • G935 support
  • G933 support