buttplugio / docs.buttplug.io

12 stars 7 forks source link

Document Lovense Solace Pro Protocol #32

Open denialtek opened 3 months ago

denialtek commented 3 months ago

BLE Name: LVS-B12 Service: 42410001-0023-4bd4-bbd5-a6920e4c5653 Characteristic: 42410002-0023-4bd4-bbd5-a6920e4c5653 Lovense Identifier Code: BA

Speed

0x4c = L 0x56 = V 0x53 = S 0x3a = : 0-20 = speed 0-20 = bottom of stroke range 0-20 = top of stroke range 0x3b = ;

Note that the usual Vibrate:20; command also works for just controlling the speed.

Move to Position

FSetSite:100; (where the number can be 0-100)

I didn't find a command that also controls how fast the toy moves to the given position.

Other

SetStroke:0: 100,ss; - Not sure what this does. It didn't appear to actually affect the stroke range of the speed or position commands

qdot commented 1 month ago

Quick update on this, mostly procedural:

Lovense spams the device with FSetSite:xx; calls when they do their real time updates from the app (i.e. touch tracking). They send the command at 10hz, and it does... ok enough. For the Buttplug linearcmd implementation, I just did the exact same thing, calculating distance to move at 100ms intervals. For moves of under about 1.2s for the full device, things actually stay surprisingly smooth. Above ~1.2s, it does start to get a bit choppy, but unlike some other devices, it does at least try to move as slowly as possible, versus just not going anywhere.