# Kiiroo Onyx/Pearl 1

The Kiiroo Onyx 1 and Pearl 1 were a set of toys made to control each other via Kiiroo's remote servers. The Onyx 1 was a tube with constricting elements and a touch sensor slider, while the Pearl 1 was a vibrator with 4 capacitive touch elements used to track insertion depth.

# Bluetooth Details

# Bluetooth 2.0 Connections

When pairing using Bluetooth 2.0, serial ports on OS X and linux machines will register for the Pearl toy as:


and for the Onyx toy as:


# Bluetooth LE Connections

When using Bluetooth LE to talk to Kiiroo toys, the following UUIDs are used.

Service UUID:


RX Characteristic UUID:


TX Characteristic UUID:


# Kiiroo Protocol

The Kiiroo communications protocol consists of strings send to either the Pearl or Onyx. These strings are formatted like so:


Where x is an integer from 0-4. When sent to the Onyx, this command sets the pressure ring position. When sent to the Pearl, this command sets vibration levels.

These commands are sent from the Pearl whenever a corresponding touch sensor is hit. There is no way to send commands from the Oynx.

That is it. That is the whole protocol. The end.

# Stupid Kiiroo Tricks

The simplicity of the protocol means that two toys can interact locally on POSIX-compliant platforms (linux, OSX/macOS, etc) using nothing but a 'cat' command. If both toys are paired using Bluetooth 2.0, so that the Pearl is at


and the Onyx is at


Then the following command can be run

cat /dev/tty.PEARL-DevB > /dev/tty.ONYX-DevB

This will cause the output from the Pearl's touch sensors to be read directly into the Onyx, controlling its pressure rings.