Skip to main content

BLE Communication Protocol

BLE Architecture Overview

The Anova Precision Cooker exposes a single Bluetooth Low Energy service that handles both command transmission (TX) and response reception (RX). Communication is bidirectional through a single characteristic.

Service & Characteristic UUIDs

All BTLE operations for the cooker use the following 128-bit UUIDs:

  • Service UUID: 0000ffe0-0000-1000-8000-00805f9b34fb
  • Characteristic UUID (TX/RX): 0000ffe1-0000-1000-8000-00805f9b34fb

Communication Flow

Command Format (TX)

  • Commands are sent as ASCII strings
  • Each command must end with a carriage return (\r)
  • Commands are written to the designated characteristic
  • The write operation does not require an immediate response

Response Handling (RX)

  • Responses are received through BLE notifications
  • Data is accumulated in chunks (typically up to 20 bytes)
  • A response is considered complete when either:
    • A chunk less than 20 bytes is received
    • The data ends with a null byte (0x00)
  • The complete response should be decoded from ASCII and trimmed of extraneous whitespace

Device Discovery and Connection

  1. Device Discovery

    • Scan for BLE devices advertising the specified service UUID
    • Alternatively, filter devices by name containing "anova" (case-insensitive)
    • Select the matching device
  2. Connection Setup

    • Establish BLE connection to the device address
    • Enable notifications on the TX/RX characteristic
    • Send initial identification command to determine model type
  3. Model Detection

    • Send get id card command
    • Parse response to determine if device is 800W or 900W model
    • If response begins with "anova f56-", it's a Wi-Fi-enabled (900W) model

Best Practices

  • Timeout Handling: Implement appropriate timeouts for commands (recommended: 15 seconds)
  • Notification Management: Always enable notifications before sending commands
  • Error Handling: Be prepared for connection loss and implement reconnection logic
  • Command Rate: Avoid sending commands too rapidly; space them appropriately
  • Response Parsing: Handle partial and incomplete responses by correctly buffering notifications

Example Workflow

  1. Scan for devices advertising the service UUID or with names containing "anova"
  2. Connect to the selected device
  3. Subscribe to notifications on the characteristic
  4. Send commands with appended carriage return
  5. Process responses by accumulating notification chunks
  6. Disconnect cleanly when finished
Device Name

When scanning for devices, look for names containing "anova" to identify compatible devices. The search is case-insensitive for broader compatibility.

Connection Management

Always properly disconnect from the device when your application exits to ensure the device is ready for future connections.