Skip to main content

BKK

BKK currently manufactures two pieces of hardware with bluetooth capabilities.

The BKK Cup is a onahole style stroker/masturbator with an accelerometer and buttons built in. There is no output or haptic actuation in the toy, it is only used as a controller for either games or movies.

The BKK Bracelet is most likely the same circuitry as the BKK Cup, except in "bracelet" form. It probably contains the same accelerometer and button setup, allowing users to attach it to the onahole of their choice.

Note: BKK Bracelet implementation here is speculation taken from ad copy on the product website, we do not actually have a BKK Bracelet on hand at the time of this writing.

Chipset and Implementation Details

Due to the service IDs and identification of the BKK Cup, it is assumed that this is a TI CC2540 Reference Kit Design. In fact, it may using a reference keyfob implementation available on github. This is apparently a common reference design to copy, as it has also been found in lightbulbs.

Bluetooth Details

BLE Device Name

BKK Cup

Accelerometer Service UUID

0000ffa0-0000-1000-8000-00805f9b34fb

Button Service UUID

0000ffe0-0000-1000-8000-00805f9b34fb

Accelerometer characteristic (Read/Notify) UUID

0000ffa1-0000-1000-8000-00805f9b34fb

Button characteristic (Read/Notify) UUID

0000ffe1-0000-1000-8000-00805f9b34fb

Protocol

The BKK protocol consists of either reads from the device (battery power) or notifications (buttons, accelerometer).

Buttons

Buttons are relayed as a single byte, via notifications from the 0xffe1 characteristic. Note that only one button can have its status relayed at any time, pressing other buttons while a button is pressed may or may not cause the new value to be transmitted.

  • 0x05 - "G" button
  • 0x06 - "L" button
  • 0x08 - "E" button
  • 0x09 - "R" button

Accelerometer

The accelerometer value is relayed as 15hz updates through the 0xffa1 characteristic. Update are only sent while the toy is moving. The accelerometer value seems to consist of 3 bytes, but only reacts to movement on one axis, a vector going length-wise through the toy.