Skip to main content

Command Structure

All commands sent to the device follow a consistent packet structure:
[Header: 5 bytes] [Packet Count: 1 byte] [Category: 1 byte] [Value: 1 byte] [Checksum: 4 bytes]
Standard header: aa0800a823
The packet count field increments with each command but is not validated by the device. You can reuse the same count value across multiple commands.

Category 0x03: Activity & Recording

Controls device activity tracking and health monitoring.
CommandHex ValueDescription
Start Activity01Begins activity tracking, triggers notifications on DATA_FROM_STRAP every second
Stop Activity00Stops activity tracking
Health Monitor On0x03 0x01Enables continuous health monitoring
Health Monitor Off0x03 0x00Disables continuous health monitoring

Example Commands

# Start activity tracking
aa0800a8238c03017d5ec627

# Stop activity tracking
aa0800a8238d0300dc040351

# Enable health monitor
aa0800a82306030100000000
When activity tracking is enabled, you’ll receive heart rate, respiration rate, and other metrics via DATA_FROM_STRAP notifications.

Category 0x0e: Heart Rate Broadcast

Controls BLE heart rate service broadcasting.
CommandHex ValueDescription
Broadcast Off0x0e 0x00Disables standard BLE heart rate broadcasting
Broadcast On0x0e 0x01Enables standard BLE heart rate broadcasting

Example Commands

# Enable heart rate broadcast
aa0800a823080e016c935474

# Disable heart rate broadcast
aa0800a823070e00c7e40f08
When broadcast is enabled, you can connect to the device using the standard BLE Heart Rate Service (UUID: 00002a37-0000-1000-8000-00805f9b34fb) without custom reverse engineering.

Category 0x16: Data Retrieval

Triggers data retrieval from device storage.
CommandHex ValueDescription
Retrieve Data0x16 0x00Triggers burst of notifications on DATA_FROM_STRAP

Example Command

aa0800a8230e1600000000000000
This command is also automatically sent when the alarm is tapped on the device.

Category 0x42: Alarm Commands

Sets device alarm times.

Packet Structure (Extended Format)

[Header: 5 bytes] [Packet Count: 1 byte] [Category: 0x42] [Flag: 0x01] [Unix Time: 4 bytes] [Padding: 8 bytes] [Checksum: 4 bytes]
Extended header: aa10005723

Example Commands

# Set alarm for 7:00 AM (exact time)
aa100057236d4201d036656600000000f62deb81

# Set alarm for 12:00 PM (exact time)
aa100057236f4201207d656600000000fea1e060

# Set alarm for 4:20 AM (exact time)
aa10005723704201501165660000000f226a8bd

# Set alarm for 6:20 AM (Peak mode)
aa10005723814201f07e6666000000007037c2a4

# Set alarm for 6:20 AM (Perform mode)
aa10005723824201f07e666600000000b18eaefc
The Unix timestamp field uses little-endian byte order. The 8 padding bytes are always 00.

Category 0x19: Device Erase

Erases all data from the device.

Packet Structure

[Header: 5 bytes] [Packet Count: 1 byte] [Category: 0x19] [Magic: 0xfefefefefefefefe] [Padding: 0x00] [Checksum: 4 bytes]

Example Commands

aa10005723cf19fefefefefefefefe002f8744f6
aa10005723d219fefefefefefefefe00e30e2693
aa10005723d319fefefefefefefefe0023d1a852
This command permanently erases all stored data from the device. Use with caution.

Category 0x1d: Device Reboot

Reboots the device.
CommandHex ValueDescription
Reboot0x1d 0x00Initiates device reboot

Example Commands

aa0800a823d41d003c2e2fe6
aa0800a823da1d003603b1ec
aa0800a823df1d00ddc17aea

Category 0x17: Batch Data Request

Requests specific batch of stored data.

Packet Structure

[Header: 5 bytes] [Packet Count: 1 byte] [Category: 0x17] [Flag: 0x01] [Batch Number: 4 bytes] [Padding: 8 bytes] [Checksum: 4 bytes]

Example Command

aa10005723{count}1701{batch_num}00000000{checksum}
The batch number is obtained from the last notification received on DATA_FROM_STRAP during the initial sync process. See the Sync Process guide for details.

Undocumented Categories

The following command categories have been observed but their exact purpose is unknown:
CategoryObserved Behavior
0x14Always sent with value 00
0x23Sent during sync process
0x24Retrieves string from device
0x43Unknown
0x45Unknown
0x4cRetrieves device name
0x73Returns notification on CMD_FROM_STRAP with 01
0x74Returns notification with optional string data
0x75Unknown
0x76Unknown
0x78Random text commands (feature flags?)

Checksum Calculation

All commands use CRC-32 checksum with custom parameters:
import struct
from crccheck.crc import Crc32Base

def calculate_checksum(message):
    crc = Crc32Base
    crc._poly = 0x4C11DB7
    crc._reflect_input = True
    crc._reflect_output = True
    crc._initvalue = 0x0
    crc._xor_output = 0xF43F44AC
    output_int = crc.calc(message)
    return struct.pack("<I", output_int)
See Packet Formats for detailed checksum implementation and examples.

Build docs developers (and LLMs) love