# BLE Communication This page covers the Bluetti device Bluetooth Low Energy (BLE) GATT service details, characteristic UUIDs, scan data patterns, and BLE advertising structure. ## 5. Bluetooth (BLE) Communication - BLE is used for local device pairing, provisioning, and control (when not on Wi-Fi) - Encrypted BLE channel: `ConnectManager.bleEncryptedHandle` uses AES-CFB/NoPadding (`net.poweroak.lib_base.utils.AesExtKt`) - Keys are negotiated per-session (not hardcoded) - Device discovery by Bluetooth uses `/api/blusmartprod/device/basic/v1/findDeviceByBluetooth` --- ## Section 15 — BLE Protocol Reference for Developers > **Target device:** AC2A (model code `"AC2A"`, number 20 in `DeviceModel` enum). The AC2A is an inverter-class device using protocol V2 (≥2000). ### 15.1 BLE GATT Details | Item | UUID | |------|------| | Service | `0000ff00-0000-1000-8000-00805f9b34fb` | | Notify/Read characteristic | `0000ff01-0000-1000-8000-00805f9b34fb` | | Write characteristic | `0000ff02-0000-1000-8000-00805f9b34fb` | | CCC descriptor | `00002902-0000-1000-8000-00805f9b34fb` | **Scan filter:** Service UUID `0000ff00-...` is used as the BLE scan filter. **Scan record identification (manufacturer-specific data):** | Hex prefix | Meaning | |-----------|---------| | `424c5545545449` ("BLUETTI") | ESP32 device, non-encrypted | | `424c5545545445` ("BLUETTE") | ESP32 encrypted | | `424c5545545446` ("BLUETTF") | ESP32 encrypted variant | **Write characteristic:** - MTU: 247 bytes (BLE 4.2 max) for ESP32/encrypted devices - Write without response: `writeCharacteristic()` or `writeCharacteristicSplit()` with `supportMaxLength=244`