{
  "added_at": "2026-11-09",
  "additional_evidence_urls": [
    "https://github.com/orlopau/ember-mug/blob/8a62bd582c97b124cce8701f04098294b1e3865f/docs/target-temp.md",
    "https://github.com/orlopau/ember-mug/blob/8a62bd582c97b124cce8701f04098294b1e3865f/docs/battery.md",
    "https://github.com/orlopau/ember-mug/blob/8a62bd582c97b124cce8701f04098294b1e3865f/docs/liquid-level.md",
    "https://github.com/orlopau/ember-mug/blob/8a62bd582c97b124cce8701f04098294b1e3865f/docs/push-events.md",
    "https://github.com/orlopau/ember-mug/blob/8a62bd582c97b124cce8701f04098294b1e3865f/docs/ota.md",
    "https://github.com/orlopau/ember-mug/blob/8a62bd582c97b124cce8701f04098294b1e3865f/docs/mug-color.md",
    "https://github.com/orlopau/ember-mug/tree/8a62bd582c97b124cce8701f04098294b1e3865f/docs",
    "https://github.com/orlopau/ember-mug/commit/401dbb0ea5aea0343457c13f23a21868f740b28e",
    "https://github.com/orlopau/ember-mug/blob/8a62bd582c97b124cce8701f04098294b1e3865f/LICENSE"
  ],
  "category": "reconstruction-cases",
  "class": "hardware",
  "description_en": "Documents the Bluetooth Low Energy GATT interface of Ember smart mugs, worked out from an Ember Mug 2 and a decompiled copy of the Android Ember app. Per-characteristic pages give UUIDs, read, write and notify methods and byte layouts for the mug name, LED colour, current and target temperature, temperature unit, battery and charging status, liquid level and state, date and time zone, firmware and hardware versions, and push events. A separate page lists the analytics fields that the decompiled app sends to Ember’s collection server.",
  "description_zh": "记录 Ember 智能马克杯的低功耗蓝牙 GATT 接口，依据一只 Ember Mug 2 和反编译的 Android 版 Ember 应用推断得出。各特征页面给出 UUID、读取／写入／通知方式及字节布局，涵盖杯子名称、LED 颜色、当前温度与目标温度、温度单位、电量与充电状态、液位与液体状态、日期与时区、固件与硬件版本以及推送事件。另有一页列出反编译应用向 Ember 数据收集服务器发送的分析字段。",
  "entry_url": "https://awesomerea.org/resources/ember-mug-ble-protocol-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/ember-mug-ble-protocol-case/",
  "evidence_url": "https://github.com/orlopau/ember-mug/blob/8a62bd582c97b124cce8701f04098294b1e3865f/README.md",
  "group": "cases",
  "id": "ember-mug-ble-protocol-case",
  "json_url": "https://awesomerea.org/resources/ember-mug-ble-protocol-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/ember-mug-ble-protocol-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/ember-mug-ble-protocol-case/index.md",
  "name": "Ember Mug: reverse-engineered Bluetooth LE characteristics",
  "name_zh": "Ember Mug：逆向分析得出的低功耗蓝牙特征",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirement_facets": [
    "scope",
    "prerequisites",
    "testing",
    "license"
  ],
  "requirements": [
    "The documentation covers observations from an Ember Mug 2; other Ember mugs may differ. Some characteristic meanings are tentative, including a battery byte likely to be voltage and liquid level that seems to update only while charging.",
    "Applying the findings needs an Ember mug and a BLE client that reads, writes and subscribes to characteristics under service UUID fc543622236c4c948fa9944a3e5353fa. Writing 0000 as target temperature turns the heater off.",
    "The findings were derived from a decompiled Android APK. The repository includes documentation and short excerpts of Ember app code, with no client code or tests.",
    "The documentation is MIT-licensed; quoted Ember app code retains Ember’s rights."
  ],
  "requirements_zh": [
    "文档记录来自 Ember Mug 2 的观察结果；其他 Ember 杯款可能不同。部分特征含义仍属推测，包括一个可能代表电压的电池字节，以及似乎仅在充电时更新的液位。",
    "应用这些发现需要 Ember 杯，以及能在服务 UUID fc543622236c4c948fa9944a3e5353fa 下读取、写入和订阅特征的 BLE 客户端。将目标温度写为 0000 会关闭加热。",
    "这些发现来自反编译的 Android APK。仓库包含文档和 Ember 应用代码的简短摘录，没有客户端代码或测试。",
    "文档采用 MIT 许可；所引用的 Ember 应用代码保留 Ember 的权利。"
  ],
  "targets": [
    "protocol"
  ],
  "url": "https://github.com/orlopau/ember-mug",
  "verification": "source-reviewed",
  "verified_at": "2026-10-20"
}
