This repository serves the purpose of documenting information about Satisfyer toys.
The vibration can be controlled using the liveControl
service. The actual vibration strength is set via motorValue
. 4 bytes per motor. Each byte may range from 0x00
to 0x64
(% strength). The last byte will persist however depending on the device it may stop after a while, so resend it in an interval. Don't forget to set motorMode
(see Commands).
There are many ways to recognise Satisfyer devices. Using dinfo
(see BleDeviceService) to filter based on advertised services suffices in most caes but one could also check the advertised manufacturer data and/or the advertised local name.
The device advertised manufacturer data contains exactly one key 0x5D
with the productID (see Products) as the value.
BleDeviceService | UUID |
---|---|
deviceControl | 51361600-c5e7-47c7-8a6e-47ebc99d80e8 |
deviceInfo | 51361700-c5e7-47c7-8a6e-47ebc99d80e8 |
dinfo | 0000180a-0000-1000-8000-00805f9b34fb |
liveControl | 51361500-c5e7-47c7-8a6e-47ebc99d80e8 |
BaseBleCharacteristic | UUID |
---|---|
battery | 00002A19-0000-1000-8000-00805f9b34fb |
controlMode | 51361601-c5e7-47c7-8a6e-47ebc99d80e8 |
controlValue | 51361602-c5e7-47c7-8a6e-47ebc99d80e8 |
deviceName | 00002A00-0000-1000-8000-00805f9b34fb |
hardwareInfo | 51361701-c5e7-47c7-8a6e-47ebc99d80e8 |
motorMode | 51361501-c5e7-47c7-8a6e-47ebc99d80e8 |
motorValue | 51361502-c5e7-47c7-8a6e-47ebc99d80e8 |
renameValue | 51361603-c5e7-47c7-8a6e-47ebc99d80e8 |
BleCharacteristicV3 | UUID |
---|---|
alarm | 51361603-c5e7-47c7-8a6e-47ebc99d80e8 |
apiVersion | 00002A28-0000-1000-8000-00805f9b34fb |
firmwareRevision | 00002A26-0000-1000-8000-00805f9b34fb |
hardwareRevision | 00002A27-0000-1000-8000-00805f9b34fb |
heating | 51361604-c5e7-47c7-8a6e-47ebc99d80e8 |
keepAliveControl | 51361605-c5e7-47c7-8a6e-47ebc99d80e8 |
productId | 00002A24-0000-1000-8000-00805f9b34fb |
pumpControl | 51361606-C5E7-47C7-8A6E-47EBC99D80E8 |
renameValue | 51361602-c5e7-47c7-8a6e-47ebc99d80e8 |
serialNumber | 00002A25-0000-1000-8000-00805f9b34fb |
BleCharacteristicV4 | UUID |
---|---|
lockControl | 51361607-c5e7-47c7-8a6e-47ebc99d80e8 |
Command | Byte |
---|---|
disableHeat (V3) | 0 |
enableHeat (V3) | 1 |
play | 1 |
pause | 3 |
stop | 7 |
unpair | 66 |
heating | 67 |
createAlarm | 80 |
deleteAlarm | 81 |
heartbeat | 87 |
reboot | 94 |
rename | 160 |
Constant | Value |
---|---|
GET_DRAW_VALUE_INTERVAL_MICROS | 12500L |
GET_DRAW_VALUE_INTERVAL_MILLIS | 12.5F |
GET_VALUE_INTERVAL_MICROS | 12500L |
GET_VALUE_INTERVAL_MILLIS | 12.5F |
INTENSITY_FACTOR | 100 |
LIVE_CONTROL_MIN_SAVE_DURATION_MS | 2000L |
LIVE_MODE_ARRAY_LENGTH | 4 |
MAX_LOOP_DRAW_BUFFER_CAPACITY | 72000 |
MAX_LOOP_DURATION_MILLIS | 900000L |
MAX_LOOP_DURATION_MINUTES | 15L |
MAX_LOOP_SEND_BUFFER_CAPACITY | 72000 |
MAX_PATTERN_DURATION_MILLIS | 900000L |
MAX_PROGRAM_DURATION_MIN | 15L |
MAX_RECORD_CAPACITY | 72000 |
MIN_LOOP_DRAW_POINTS | 10 |
MIN_LOOP_DURATION_MILLIS | 1000L |
MIN_LOOP_SEND_POINTS | 10 |
MIN_PROGRAM_DURATION_MILLIS | 5000L |
MIN_PROGRAM_DURATION_SEC | 5L |
MIN_PROGRAM_POINTS_COUNT | 400 |
MIN_SUPPORT_HEARTBEAT_FIRMWARE_VER | "2.0.24" |
MIN_SUPPORT_KEEP_ALIVE_FIRMWARE_VER | "2.0.34" |
Constant | Value |
---|---|
NONE_MOTORS | 0 |
ONE_MOTOR | 1 |
TWO_MOTORS | 2 |
THREE_MOTORS | 3 |
Constant | Value |
---|---|
FIRST_MOTOR | 1 |
SECOND_MOTOR | 2 |
THIRD_MOTOR | 3 |
Constant | Value |
---|---|
POWER_BYTE | 0 |
BATTER_BYTE | 1 |
HEATER_BYTE | 2 |
PWM1_BYTE | 3 |
PWM2_BYTE | 4 |
PWM3_BYTE | 5 |
PWM4_BYTE | 6 |
PWM5_BYTE | 7 |
LEDS1_2_BYTE | 8 |
LEDS2_3_BYTE | 9 |
BUTTON1_BYTE | 10 |
BUTTON2_BYTE | 11 |
BUTTON3_BYTE | 12 |
BUTTON4_BYTE | 13 |
BUTTON5_BYTE | 14 |
BUTTON6_BYTE | 15 |
BUTTON7_BYTE | 16 |
RESERVED_BYTE | 17 |
FUNCNUM_BYTE | 18 |
BLOCKNUM_BYTE | 19 |
BleScanStatus | Value |
---|---|
SUCCESS | 0 |
ERROR | 1 |
LOADING | 2 |
ConnectionState | Value |
---|---|
CONNECTED | 0 |
DISCONNECTED | 1 |
CONNECTION_LOST | 2 |
DISCONNECTING | 3 |
CONNECTING | 4 |
PENDING_CONNECTING | 5 |
PingDeviceType | Value |
---|---|
LEGACY_MODE | 0 |
HEARTBEAT_MODE | 1 |
NONE | 2 |
FirmwareState | Value |
---|---|
ACTUAL | 0 |
UPDATING | 1 |
UPDATE_AVAILABLE | 2 |
UPDATE_REQUIRED | 3 |
SILENT_UPDATE_REQUIRED | 4 |
Thanks to lorissikora for spending his time (sometimes after midnight) to find the best approximation of songs to play on a Double Wand-er
.