Broadlink2MQTT turns an RM4 mini, RM4 pro or
RM mini 3 into native infrared emitter and receiver
entities over MQTT discovery — the ones the official integration cannot give you.
No custom components. No base64 wrangling.
Five hops. The add-on owns the middle one — everything either side is stock Home Assistant.
Presses a button, emits a 38 kHz burst
Captures it in learning mode, or transmits it
Converts packets to raw timings, both directions
Discovery messages create the entities
Emitter, receiver, and a learning switch
Learning mode arms the blaster and polls it once a second. Every capture is decoded to signed microsecond timings — positive is carrier on, negative is carrier off.
Real NEC frames, encoded with the same 32.84 µs tick and 0x26 packet
header the add-on uses. Source: —
Created by MQTT discovery the moment the add-on starts. Nothing to add to YAML.
Every Broadlink RM with an IR front end. Sensors appear automatically where the hardware has them.
RF (315/433 MHz) is out of scope — Home Assistant's infrared entities are IR only, and RF captures are rejected rather than reported as bogus IR.
To receive anything, an RM must be put into learning mode and polled — and that session dies the moment anything else touches the IR front end.
core#177767 proposed doing exactly that inside the integration, and was closed. A core receiver entity is expected to be listening constantly.
The objection was about where the state machine lives, not whether it works. In its own process, driven by a switch you control, the same approach is sound.
“The Infrared receiver entity is meant to be used by devices that can receive constantly […] I don't think it should be implemented for Broadlink until Broadlink provides a firmware that allows for constant receiving.”
— maintainer review on core#177767
These are standard infrared entities, so anything that consumes the platform
can drive them. HAIR
is a HACS integration that turns captured remotes into Home Assistant devices — and this
add-on supplies the half it was missing.
HAIR's compatibility table lists the official Broadlink integration as transmit-only. There is no receiver entity, so the Sniffer has nothing to listen with.
The receiver arrives as a native InfraredReceiverEntity over MQTT. HAIR picks up any integration exposing one automatically — no configuration on either side.
The add-on arms the blaster. HAIR's Sniffer is a live listener, so it only hears while that capture window is open.
Each source remote appears as its own card, with every signal shown as an S/L diamond fingerprint. Repeat frames from a held button are filtered out, and a neighbour's stray clicker can be dismissed.
One click turns the captured remote into a Home Assistant device with a button entity per signal — no YAML, no base64 copied by hand.
HAIR's Closet is a portable code library of device profiles. It also imports SmartIR JSON, Flipper Zero .ir files, LIRC lircd.conf, and Girr exports, or takes a Pronto hex paste through the Clipper.
capture_limit before a long session. The default closes the window after
60 seconds, which is tight for working through a 40-button air conditioner remote.
Add the repository, install, start. If you run the Mosquitto add-on there is nothing to configure.