Skip to content

Feat/add gamebuds support - #57

Open
gokcank wants to merge 2 commits into
elegos:developfrom
gokcank:feat/add-gamebuds-support
Open

gokcank wants to merge 2 commits into
elegos:developfrom
gokcank:feat/add-gamebuds-support

Conversation

@gokcank

@gokcank gokcank commented Jul 29, 2026

Copy link
Copy Markdown

This PR introduces initial configuration support for the SteelSeries Arctis GameBuds (PS5/PC) (PID: 0x230a).

Changes Included:

Added: src/linux_arctis_manager/devices/gamebuds.yaml - Initial device configuration mapping to enable standard control-transfer parameters.

Modified (Bug Fix): src/linux_arctis_manager/config.py - Fixed an AttributeError in the DeviceConfiguration class. Previously, if a device configuration YAML lacked a status or device_init block, the respective attributes were never initialized in the class constructor. This caused the daemon to crash (AttributeError: 'DeviceConfiguration' object has no attribute 'status') when polling the device state. Added explicit fallback assignments (self.status = None and self.device_init = None) to safely handle devices with unmapped telemetry.

Integration Test Report & Known Limitations

  1. General Overview
    The device successfully communicates via USB ctrl_transfer. Virtual audio sinks ("media" and "chat") are created without issues. However, due to missing telemetry data (status block) in gamebuds.yaml, some UI and synchronization limitations exist.

Pull Request Description

Title: feat: add initial support for SteelSeries Arctis GameBuds (PS5/PC)

Description:
This PR introduces initial configuration support for the SteelSeries Arctis GameBuds (PS5/PC) (PID: 0x230a).

Changes Included:

  • Added: src/linux_arctis_manager/devices/gamebuds.yaml - Initial device configuration mapping to enable standard control-transfer parameters.
  • Modified (Bug Fix): src/linux_arctis_manager/config.py - Fixed an AttributeError in the DeviceConfiguration class. Previously, if a device configuration YAML lacked a status or device_init block, the respective attributes were never initialized in the class constructor. This caused the daemon to crash (AttributeError: 'DeviceConfiguration' object has no attribute 'status') when polling the device state. Added explicit fallback assignments (self.status = None and self.device_init = None) to safely handle devices with unmapped telemetry.

Integration Test Report & Known Limitations

1. General Overview
The device successfully communicates via USB ctrl_transfer. Virtual audio sinks ("media" and "chat") are created without issues. However, due to missing telemetry data (status block) in gamebuds.yaml, some UI and synchronization limitations exist.

2. Tab-Specific Test Results

Tab Feature / Setting Status Observation & Technical Explanation
Status Connection Interface ⚠️ Misleading UI Displays a "No device detected" error. Cause: The status block is pending in the YAML file. Without telemetry data, the GUI triggers a UI fallback, incorrectly acting as if the device is disconnected.
General Redirect Audio ❌ Not Working Changing this setting had no verifiable effect on the device or OS routing.
Device Mic Side Tone ✅ Working Responds as expected.
Device Noise Cancelling ✅ Working ANC modes toggle correctly.
Device Noise Level ✅ Working ANC/Transparency levels are successfully applied.
Device Wear Sense ⚠️ Desync Issue Toggling this alters the hardware volume, but the OS sink volume does not sync. Cause: Without incoming status updates, the daemon listener cannot trigger manage_mix_change(), leaving the volume desynced until manually adjusted.
Device Mic Volume ❌ Not Working No change detected in the actual audio input level.
Device PM Shutdown ❌ Not Working Power Management (auto-shutdown) commands have no effect.
Device Volume Limiter ❓ Unverified Could not verify if the hardware volume limiter became active.
Equalizer Preset Control ⚠️ Logical Bug Channel EQ presets continue to affect the audio output even when explicitly toggled off in the UI.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant