Skip to content

Protocol support for Svakom Fatima Pro (SL278B) #907

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

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions