Skip to content

feat: Add support for Syncbot #694

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 3 commits into
base: dev
Choose a base branch
from
Draft

Conversation

AshyHacker
Copy link

Hello, I've added support for Syncbot, a new powerful sex toy.

The encrypt key is hardcoded. You must use the correct encrypt key for the protocol to work properly.

The implementation was tested using intiface-engine.

@blackspherefollower blackspherefollower self-requested a review March 15, 2025 15:43
@blackspherefollower blackspherefollower self-assigned this Mar 15, 2025
services:
0000ffe0-0000-1000-8000-00805f9b34fb:
tx: 0000ffe1-0000-1000-8000-00805f9b34fb
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't suppose you did any work to understand the touch slider readings?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right. Syncbot also has Rx channel and can read battery level and slider, but this PR focuses on the core functionality. (This is just FYI question, right?)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pretty much. Ideally I'd ask for the protocol to be documented (both directions) in an issue on https://github.com/buttplugio/docs.buttplug.io just so we at least have the notes recorded so it'll be quicker to add sensor support later

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good. I have summarized the findings from my analysis in an issue.

buttplugio/docs.buttplug.io#42

Copy link
Collaborator

@blackspherefollower blackspherefollower left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's a couple of minor tweaks needed, but overall the fact you've worked out what the protocol is doing is a major achievement here.

I'll test with my hardware when I'm back home in a week.

@blackspherefollower
Copy link
Collaborator

So, I think this is in good shape (maybe run cargo fmt -- --emit=files for code formatting if you haven't already), but I'd like to test with my hardware before it lands.

Thanks for your hard work on this one

@blackspherefollower
Copy link
Collaborator

Hmm... Unfortunately mine isn't behaving with this implementation.
I'm going to compare some traces from mine to see how they compare.

@AshyHacker
Copy link
Author

That's unfortunate... One possibility is that the encryption key is generated based on information specific to a particular device (such as the MAC address). I'll do a deeper analysis when I have time.

@qdot qdot marked this pull request as draft April 20, 2025 18:24
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.

2 participants