Skip to content

usb_device.reset() wedges the Arctis Nova 7 dongle until physical replug #61

Description

@CaWu009

Summary

configure_virtual_sinks() calls self.usb_device.reset() unconditionally before kernel_detach(). On the Arctis Nova 7 dongle (1038:22a1, bcdDevice 2.31) that reset leaves the device in a state where usbhid can no longer read the HID descriptor on interface 3:

usbhid 1-3:1.3: can't add hid device: -71
usbhid 1-3:1.3: probe with driver usbhid failed with error -71

The hidraw node for that interface disappears, headsetcontrol stops seeing the headset too, and every subsequent SET_REPORT times out. Only a physical replug recovers it — a service restart does not, because the reset happens again on each start.

Environment

  • linux-arctis-manager 2.4.1 (pipx, Python 3.14.6)
  • Fedora, kernel 7.1.5
  • SteelSeries Arctis Nova 7, 1038:22a1, bcdDevice 2.31

Still present on v2.5.0-beta3 — the reset() call is unchanged there.

Evidence

The same -71 appears from kernel_attach() during teardown(), so once init has failed the interface is left with no driver bound at all:

$ for i in /sys/bus/usb/devices/1-3:1.*; do echo "$i: $(basename $(readlink $i/driver))"; done
/sys/bus/usb/devices/1-3:1.0: snd-usb-audio
/sys/bus/usb/devices/1-3:1.1: snd-usb-audio
/sys/bus/usb/devices/1-3:1.2: snd-usb-audio
/sys/bus/usb/devices/1-3:1.3: (none)
/sys/bus/usb/devices/1-3:1.4: usbhid
/sys/bus/usb/devices/1-3:1.5: usbhid

With the reset skipped, init succeeds reliably whenever the headset is powered on — verified with pyusb against the same interface, SET_REPORT completing in ~2 ms.

Suggested fix

Make the reset opt-in, or skip it for known-affected product IDs. Local workaround in use here:

if os.environ.get('LAM_SKIP_USB_RESET', '1') != '1':
    try:
        self.usb_device.reset()
    except usb.core.USBError as e:
        self.logger.warning(f"Error resetting USB device (non-fatal): {e}")

Happy to open a PR if you have a preference for how it should be gated (env var, device config flag, or product-ID allowlist).

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    v2-deprecatedDeprecated bugs as referencing v2 version of the app

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions