Broadlink RM2-Pro Compatibility


I’m looking for some solution to manage my IR devices throught HA. I’ve seen that some Broadlink RM are supported by HA like the RM2. There is some good price on GearBest for the RM2-Pro version (I don’t know if I can put a link of GearBest).

Is this hardware compatible with HA ? Does it need some development ? What the difference between the RM2 and the RM2-Pro hardware ?


Looking in the website of Broadlink, there are 2 versions RM-Pro.

The RM-Pro, that supports IR+ RF 433/315MHz

The RM-Pro 433, that only support IR+RF 433MHz.

In my case i have the RM-Pro (IR+RF 433+315) and i can tell you that is supported by HA.



Thank you. It seems weird because all devices on the website are called “Rm” and not “RM2”.

I wonder if that matters…

There’s no such thing as an RM2 PRO though it is a very common mistake. The product is just called RM PRO.

The RM2 bit came about when they launched an updated, version 2 and the serial numbers on those began RM2… The current version has serials beginning RM3… and has very different internals though function is just the same. You’ll see this advertised as RM PRO 2017 version as well as RM3 PRO but they are still really just called RM PRO and all support IR and RF.

Broadlink do make devices that just control via IR but none of these are PROs.

1 Like


Could you tell me if the “RM3”-starting serial devices have the same functionalities ?
I just got one, I can integrate it as a switch and it works well (learn IR, send IR), sensor doesn’t have error but it won’t retrieve temperature. Remains to 0.0. Has the new version still a temperature sensor ?

Configuration of the sensor :

platform: broadlink
host: !secret rmpro_host
mac: !secret rmpro_mac
update_interval: 120
name: Salon
  - temperature

and if I run the temperature update in python, I find this :

>>> rmpro = rm(host=('',80), mac=bytearray.fromhex('34EA3442C752'))
>>> rmpro.auth()
>>> rmpro.check_temperature()

The return value for the temperature check isn’t as expected in the code (following the check_temperature function) :

>>> packet=bytearray(16)
>>> packet[0]=4
>>> response=rmpro.send_packet(0x6a, packet)
>>> response
>>> len(response)
>>> response[0x22] | (response[0x23] << 8)
>>> payload = rmpro.decrypt(bytes(response[0x38:]))
>>> payload
>>> type(payload[0x4]) == int

The bytes 0x22 and 0x23 show an error, 65526 while 0 should be there.

I explained exactly this in the post above yours!

It does indeed have a thermometer, the first one I had didn’t work at all but the one I swapped it for does work although there is something odd with the way HA interacts with it that it can lose contact with the temperature sensor and needs HA to be restarted to get it back. This wouldn’t be a problem if the HA component didn’t stop retrying after three times.

I didn’t get that you actually had the RM3-serial version.
As I have no error trying to get temperature, I guessed the module is there.
I’ve tried to change the sensor component to a custom one with more retries in update but still the same.
Only when I repeat the “send packet”, I get sometimes a response different from 0, but it’s always incorrect.

With this version I also have troubles learning RF codes, IR working fine (send/receive).

RF learning has always been a bit hit and miss, best to reboot HA before trying but I have no idea why. Rock solid once you get the codes though.

I went through all the same head scratching as you, including doubting there actually was one, before swapping it for another which worked straight away. I’d suggest you do the same if you really want the temp out of it.

What exactly did you do to get the extra retries?

Well, I guess my unit is really faulty. Whatever I do, I can’t get the temperature. I can’t learn RF, even with the e-control app (frequency sweep fails).

For testing purposes, I changed the definition of _update so that the default value for retry becomes 5, same can be done for _auth :
> 122 def _update(self, retry=5):

Can You post your conf example ?

1 Like

Regarding Broadlink rm pro, rm2 or rm3. You just need to put it as below is what I used:
under switch platform

platform: broadlink
host: !secret ip_pro1
mac: !secret mac_pro1
timeout: 30
friendly_name: "Pro1" <=== this can be any name you like to show in frontend
type: rm <==== this is the type of the rm you have to put
#Talaykaew 5   
      friendly_name: "kitchen light 2"
      friendly_name: "kitchen aircon"
      friendly_name: "office light"
      command_off: 'si80AAwjDCMkDA0iJAwkDA0iDSIkDCQMDCMkDA0jJAwMIwwjJAwkDAwjDCMMIwwAAV4MIyQMJAwAAAAA'
      friendly_name: "front light"
      command_on: 'sj00AAwjDCMkDAwiJAwkDAwjDCIkDCQMDCMkDAwjJAwMIgwjJAwNIwwjDCMjDAwAAV4NIiQMJAwAAAAA'
      friendly_name: "gate light"
      command_off: 'shs0ACQMJAsNIiQMJAwNIw0iJQslDA0iDSINIw0AAWMNIg0iJQsNIw0iJAskDA0iDSINIg0iDSMAAAAA'

For the same rm pro as above comment used as sensor platform to show temperature:

platform: broadlink
update_interval: 60
host: !secret ip_pro1
mac: !secret mac_pro1
name: Office
icon: mdi:temperature-celsius
  - temperature

For the mp1, spmini2, spminiplus, under switch platform:

platform: broadlink
host: !secret ip_mp1
mac: !secret mac_mp1
timeout: 15
friendly_name: "Smart Plug MP1"
type: mp1
  slot_1: 'Slot 1' <==  'Slot 1' this can be change to the name you want
  slot_2: 'Slot 2'
  slot_3: 'Slot 3'
  slot_4: 'Slot 4'  
#  - platform: broadlink
#    host:
#    mac: '34:EA:34:F5:ED:E0'
#    type:  spmini2
#    friendly_name: 'fan'
#  - platform: broadlink
#    host:
#    mac: 'B4:43:0D:EF:1F:D4'
#    type:  spminiplus
#    friendly_name: 'camera'
#  - platform: broadlink
#    host:
#    mac: 'B4:43:0D:E4:51:AC'
#    type:  spminiplus
#    friendly_name: 'bedroom strip plug'

ok I have RM Pro - but where and how I get “commands” data ) I don’t have android device.

1 Like

Once you add the rm pro as a switch with blank command on and off. In the developer tools> services>broadlink.learn_command_ip_of_broadlink>call service> use your original remote point to the broadlink rm and press the button.

Broadlink rm pro will learn the signal send out from your original remote (this command will show in the frontend and some show at the info) then you can use that command fill in the on-off in switch platform.

*** the service learn and send command from broadlink won’t show immediately when you add them. You have to RESTART home-assistant***

1 Like

I added lines to config

  • platform: broadlink
    update_interval: 60
    mac: ‘XX:EA:34:43:04:XX’

and on developer tools is showing broadlink.learn_command_192_168_200_178
but where I must see the command ? - when I pick service ‘broadlink.learn_command_192_168_200_178’ and leave service data empty and press call service then in labout window is showing
“Failed to connect to device
11:26 components/switch/ (ERROR)”

you forget to put the “type” and please check the ip and mac address of broadlink pro. and in SWITCH platform

platform: broadlink
host: !secret ip_pro1
mac: !secret mac_pro1
timeout: 30
friendly_name: "Pro1" <=== this can be any name you like to show in frontend
type: rm <==== this is the type of the rm you have to put if you not sure put 'rm'
    kitchen_light: <== put the name your want lowercase and underscore if many word
      friendly_name: "Kitchen Light" <== put the name you want show in frontend
      command_on: ''  <=== leave blank first until you have learned the command then fill in
      command_off: '' <=== leave blank first until you have learned the command then fill in

After put this restart your home-assistant. then in service you will see the learn command.

ok I added this line already as well I tested:
- platform: broadlink
mac: 'XX:EA:34:43:04:XX'
timeout: 15
# Will work on most Phillips TVs:
friendly_name: "LEDTEst"
command_on: 'JgAcAB0dHB44HhweGx4cHR06HB0cHhwdHB8bHhwADQUAAAAAAAAAAAAAAAA='
command_off: 'FnEkRQ=='

and I see learning service Like I posted - but where I must see the learning command - and must I press the “Call service” ?
when I press command I get:
Failed to connect to device
11:26 components/switch/ (ERROR)

copy from my post and change to your desire ip address and mac address. Dont forget to take out the <== in my post. You have to put the type in order to learn the command.
Press call service> you will noticed from broadlink rm with red light show up after you press the call service, mean ready to learn the command.

If it was wrong ip or mac address, even you call service, broadlink rm pro don’t know you call the service.

the learned command after you used the call service. will show in frontend of your home-assistant or sometime show in the info

ok difference is only - your conf contains “type”
ok I try to add type as well