Skip to content

Add Utimi protocol handler (benben lightspot BLE SDK)#866

Merged
qdot merged 2 commits intobuttplugio:masterfrom
DatUub:add-utimi-protocol
May 9, 2026
Merged

Add Utimi protocol handler (benben lightspot BLE SDK)#866
qdot merged 2 commits intobuttplugio:masterfrom
DatUub:add-utimi-protocol

Conversation

@DatUub
Copy link
Copy Markdown
Contributor

@DatUub DatUub commented Apr 11, 2026

  • Adds protocol handler for Utimi BLE toys using the benben lightspot SDK
  • Command format: A0 03 [vib] [thrust] [m2] [m3] [m4] AA on service 0000ffa0 / char 0000ffa1
  • Separate from JoyHub because benben uses 5 motor slots (8-byte packet) vs JoyHub's 4 slots (7-byte packet)
  • Protocol reverse-engineered from the Utimi Android APK (com.benben.lightspot.bluetooth SDK)
  • utimi.rs — Protocol handler with AtomicU8 state tracking for shared command packet, implements vibrate + oscillate
  • utimi.yml — Device config matching BLE name prefix Utimi, service ffa0/ffa1
  • mod.rs — Registration
  • cargo check passes
  • Tested on physical Utimi prostate massager (model "Utimi000020") — vibration and thrust motors confirmed working via BLE
    This pr message was generated with help of claude

@CLAassistant
Copy link
Copy Markdown

CLAassistant commented Apr 11, 2026

CLA assistant check
All committers have signed the CLA.

Adds support for Utimi BLE toys using the benben lightspot protocol.
Command format: A0 03 [vib] [thrust] [m2] [m3] [m4] AA on service
0000ffa0 / characteristic 0000ffa1. Similar to JoyHub but uses 5 motor
slots (8 bytes) instead of 4 (7 bytes).
Protocol reverse-engineered from the Utimi Android APK
(com.benben.lightspot.bluetooth SDK).
@DatUub DatUub force-pushed the add-utimi-protocol branch from 1122c0a to 59e7dd4 Compare April 11, 2026 22:56
@DatUub DatUub closed this Apr 12, 2026
@DatUub DatUub reopened this Apr 12, 2026
@blackspherefollower blackspherefollower self-assigned this Apr 16, 2026
@blackspherefollower blackspherefollower self-requested a review April 16, 2026 12:07
@blackspherefollower
Copy link
Copy Markdown
Collaborator

@DatUub Far more info is needed about the devices this is supposed to support. Links please

Copy link
Copy Markdown
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.

Nice and clean. If possible, pleas add this identifier:

  - identifier:
      - Utimi000040
    name: Utimi KnotVibe ThrustMaster
    id: 4a418af2-74c6-4b98-9a21-80690aae4cec

@blackspherefollower
Copy link
Copy Markdown
Collaborator

@qdot This is good. There's an extra identifier that could be added, but that can also happen in a later commit

Per blackspherefollower's review on PR buttplugio#866, adds Utimi000040
configuration entry so the KnotVibe ThrustMaster resolves to its
proper product name instead of falling through to the generic
Utimi Prostate Massager default. The Utimi* btle name match
already covers the advertisement, this just adds the named
configuration.
@qdot qdot merged commit f0c8d54 into buttplugio:master May 9, 2026
1 check passed
qdot pushed a commit that referenced this pull request May 9, 2026
Per blackspherefollower's review on PR #866, adds Utimi000040
configuration entry so the KnotVibe ThrustMaster resolves to its
proper product name instead of falling through to the generic
Utimi Prostate Massager default. The Utimi* btle name match
already covers the advertisement, this just adds the named
configuration.
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.

4 participants