Skip to content

Protocol support for Svakom Fatima Pro (SL278B) #907

@pktwhisperer

Description

@pktwhisperer

Feature Description

Hi! I've implemented Buttplug protocol support for the Svakom Fatima Pro (BLE advertised name SL278B), which isn't in the device config yet. I reverse-engineered the command protocol from a packet capture of the official app and built it following the existing svakom_sam pattern.
Per CONTRIBUTING I wanted to check in before opening a PR.

Covers 4 actuators: vibrate, constrict (suction), oscillate (thrust), temperature. Handshake + command encoding verified byte-for-byte against the capture, and hardware-tested. Regression fixture added — cargo test -p buttplug_tests fatima passes 4/4 (embedded/json × v3/v4).

A few protocol-shape tradeoffs I'd flag for review:

  1. Oscillate = pattern-as-intensity — the device exposes discrete firmware patterns (1–7), not a continuous speed; the Oscillate value maps to pattern number.
  2. Temperature = on/off — the heat actuator is on/off only in the captured protocol (and barely perceptible on hardware); modeled as Temperature[0,1], and excluded from the fixture (the v4 Scalar device-test channel doesn't accept a Temperature actuator).
  3. Two peripherals — the device presents as two independent SL278B peripherals, each its own Buttplug device; connection is a bit flaky (sometimes only one connects), and index is connection-order rather than a stable function identity — so the impl doesn't hardcode index→function.

Would you welcome a PR? Any structural preferences before I open it? Happy to take specifics off the tracker if you'd rather.

Thanks for buttplug — great project.

Metadata

Metadata

Assignees

Labels

FeaturesNew things to add to the project

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions