# Edifier Speakers BLE: reconstructing M60 and M90 speaker control

> Edifier Speakers BLE reconstructs the M60 and M90 speakers' BLE control protocols and uses them in a Home Assistant integration. Its references describe model-specific GATT services, frame checksums, commands, responses, and limits; the integration exposes volume, source, EQ, playback, and selected device settings.

- Type: Case study
- Targets: Protocol
- Category: Independent reconstruction cases
- Relationship: Independent reconstruction project
- Sources reviewed: 2026-11-06
- Added to the catalog: 2026-11-08
- Original resource: <https://github.com/kralonur/edifier-speakers-ble>
- Primary source: <https://github.com/kralonur/edifier-speakers-ble/blob/51fd1d09475dc4beeec70aa8a3343ef3005f966c/README.md>
- Catalog page: <https://awesomerea.org/resources/edifier-speakers-ble-case/>
- Record JSON: <https://awesomerea.org/resources/edifier-speakers-ble-case/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/edifier-speakers-ble-case/index.md)

## Requirements & limits

- **Prerequisites:** Home Assistant with a working Bluetooth adapter or ESPHome Bluetooth proxy, plus a powered M60 or M90 speaker.
- **Limits:** M60 reads were checked on a PC, while M60 Home Assistant reads and hardware writes remain unconfirmed.
- **License:** MIT License.

## Primary sources

1. <https://github.com/kralonur/edifier-speakers-ble/blob/51fd1d09475dc4beeec70aa8a3343ef3005f966c/README.md>
2. <https://github.com/kralonur/edifier-speakers-ble/blob/51fd1d09475dc4beeec70aa8a3343ef3005f966c/docs/edifier-m60-ble.md>
3. <https://github.com/kralonur/edifier-speakers-ble/blob/51fd1d09475dc4beeec70aa8a3343ef3005f966c/docs/edifier-m90-ble.md>

## More in Protocols

- [Halyard: reconstructing Shadow cloud PC streaming on handhelds](https://awesomerea.org/resources/halyard-case/index.md) · Case study
- [Axial: mapping and controlling the DJI RS 4 Mini over Bluetooth](https://awesomerea.org/resources/axial-dji-rs4-mini-case/index.md) · Case study
- [Fiat Ducato X250: decoding the body CAN bus](https://awesomerea.org/resources/fiat-ducato-x250-wican-case/index.md) · Case study
- [Unrack: extending reconstructed t.racks DSP control](https://awesomerea.org/resources/unrack-dsp-control-case/index.md) · Case study
- [ArmorX Toolkit: reconstructing ARMORX Pro configuration and control](https://awesomerea.org/resources/armorx-toolkit-case/index.md) · Case study
- [dsh-ls125-uv-probe: reconstructing the LS125 probe protocol and host](https://awesomerea.org/resources/dsh-ls125-uv-probe-case/index.md) · Case study

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
