Skip to content

4.0.0

Latest

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

New Contributors

Full Changelog: 3.1.0...4.0.0