Berbel Kitchen Hood - ESP32 BLE Remote Emulator with MQTT Auto-Discovery

I reverse-engineered the BLE protocol of the Berbel BFB 6bT remote control and built an ESP32-based emulator that bridges the hood to Home Assistant via MQTT.

Why?

Berbel kitchen hoods (Skyline Frame, Edge, Glassline, etc.) use a proprietary BLE remote with no official smart home integration beyond an iOS-only app. This project gives you full control through Home Assistant.

What it does

The ESP32 emulates the original remote control over BLE and exposes the hood as MQTT entities with auto-discovery:

  • Lights - Upper light and cooktop light (toggle with state tracking)
  • Fan - Select entity with 5 speeds (Off, Stufe 1-3, Power)
  • Position - Raise/lower the hood
  • Afterrun - Toggle the afterrun timer
  • Power Off - Button entity
  • Status - Real-time state from the hood (9-byte bitmask decoded)
  • BLE Connection - Diagnostic binary sensor

All entities reflect the actual hood state, not optimistic updates. The hood sends status packets that are decoded in real-time.

Key discoveries during reverse engineering

  • The hood filters by MAC OUI and only accepts Texas Instruments MACs (88:01:F9 or 30:AF:7E). ESP32 MAC must be
    spoofed.
  • Legacy BLE pairing with LTK only (no IRK). Adding IRK breaks pairing.
  • GATT services must be in a specific order (DevInfo, Battery, HID, Custom).
  • HID service is required even though commands go through the custom Berbel service.
  • Button commands are 2-byte notifications: [code, 0x00] press, [0x00, 0x00] release.

Hardware

Just an ESP32 dev board. Uses NimBLE stack for ~100KB heap savings, leaving enough room for WiFi + MQTT on the shared radio.

Compatible hoods

Should work with all Berbel hoods with berbel Connect 2.0 (manufactured November 2020+):
Island, wall-mounted, headroom, and built-in hoods including Skyline Frame/
Edge/Curve/Sound/Light/Round, Ergoline, Glassline, Blockline, Smartline, Formline, Firstline.

Links

MIT licensed. Contributions welcome, especially from people with other Berbel hood models!

2 Likes

Amazing! Thank you very much!
It works so far—is there also a way to dim the light and possibly adjust the light color from 2700 to 6500K? Or is something like that planned?

Thank you for amazing work. You mentioned the hardware requirements to run is, but not the software requirements. How do I get “pio” which is need for installing the software on the ESP32?

Great Project.
Was looking forward for something like this for quite some time.
Did not test it out yet but I have one question:
Will the original BT remote still work when the hood is paired to the ESP? (Can the hood be connected to both at the same time?)

Very nice work!
In the last month I have done nearly the same.
My target is to come up with an ESPhome setup.

I can fully confirm your analysis regarding advertising 128 bit service data, and the characteristics and UUIDs.
Also the 2-byte button pressed from 0x01 to 0x0D is the same.

I used the app “nRF Connect” on an iPhone and paired that with the BFB 6bT. On characteristics f001 I have sent all 18 combinations of one 1 and seventeen 0s. (If you send a 9, it means “blinking”). My result is similar to yours, with some additional infos:
- 0: 1
- 1:
- 2: 3
- 3: 2
- 4: Lampe oben
- 5: P
- 6: Pfeile im Kreis (missing)
- 7: Dreieck nach rechts (missing)
- 8: Lampe nach unten
- 9: Dach nach oben
- 10: Nachlauf Kuchensegment
- 11: Kreis mit Punkt (missing)
- 12:
- 13: Dach nach unten
- 14:
- 15:
- 16:
- 17:

One thing that works a little bit different on my side:
-The hood connects to my ESP32 although I do not spoof the MAC. ESPhome also has some more characteristics than the BFB 6bT. I can read out the 9-byte state from the hood already.

EDIT: Since your approach works perfectly I will discontinue my project. :wink:

PIO —> look at platformio.org

The connection from the hood to my original BFB 6bT stays, even when the hood is additionally connected to my ESP32 running ESPhome. E.g. I press a light button in the hood, the LED on my BFB lights up and the corrsponding 9-bytes are received on the ESP32.

EDIT: I tried it out with this Remote Emulator. Works perfectly. Hood is connected to both the ESP32 and the BFB 6bT in parallel. All three device work in union.

1 Like