buttplugio / buttplug

Rust Implementation of the Buttplug Sex Toy Control Protocol

Home Page:https://buttplug.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Satisfyer devices can cause all devices to disconnect randomly

qdot opened this issue · comments

commented

Describe the bug

  1. Start intiface central
  2. Connect multiple devices, one of them being a satisfyer device
  3. Play around with the sliders on the devices tab

Expected behavior
Devices should stay connected, move accordingly

Actual behavior
At some point, all devices, EVEN XINPUT, disconnect completely. Bluetooth devices do not come back.

Additional context
I have no fucking clue how this is happening. Tried it with a XBox Controller, OhMiBod Lumen, WeVibe Verge, and Satisfyer Royal One. If I turn the satisfyer off, everything is fine. The fact this takes out the fucking gamepad is weird as hell, since that's USB?! My best guess is that the satisfyer update loop has a major bug where it's just flooding the bluetooth radio with commands. That said, this is all going to a USB 3 hub, so we REALLY shouldn't be saturating a fucking PCI-E bus enough for a disconnect, but there might be some internal OS buffer getting overrun?

commented

This probably has something to do with #532 also.

Is it possibly because the command handlers send the updates, but the keepalive could fire mid command (or vice versa), and cause BLE errors? An error on the keepalive thread should log and exit the loop, which might prematurely shutdown the keepalives, but doesn't explain the wider errors.

commented

I... think this is fixed now? Haven't seen it happen since I fixed #532