Broadlink binding for RMx, A1, SPx and MP. Any interest?

i tested interval updates and it work now, maybe when i test it first time i have some lags… i test beta 5 for me all work fine like a beta 4 (except power measures and night mode on sp3s).

PS is there good tutorial, with best way how to use broadlink rm pro in new openhub 3.0 interface, with less code and more clicks in interface? or i need use old way and write *.items *.sitemap and file?

Is there a list of dependencies for the binding? I did not find installation instructions except the generic ones for third party bindings @themillhousegroup

Probably an eclipse namespace left in there somewhere from conversion from 2.5.x to 3.x

Not sure if I understood everything, but this gave me an idea. I am on Openhab 2.5, but apparently I downloaded the 3.0 version of the binding. I now used the last release for 2.5 and it worked without any issues. Maybe this is also your problem, @silvereagle

Continuing the discussion from Broadlink binding for RMx, A1, SPx and MP. Any interest?:

Continuing the discussion from Broadlink binding for RMx, A1, SPx and MP. Any interest?:

Finally the Broadlink is arrived but i have some questions

How You guys learn the IR Codes which the broadlink is using got here an RM3 mini running with v44057 firmware.
with the new Broadlink App i could learn the Codes to Mobil but i have at moment no glue how to get that codes since the Windows Software above is not working with that frimware.

and no idea how to set uo docker properly :slight_smile:

Hi Jan,

i had the same Problem. I fixed it by resetting the device and closing the app directly after connecting the remote to the network.


I’ve had some time to pick up the dev work on the British General sockets, which look to extend the SP4b sockets.

I think I’ve got the payload sorted, but my java skills are weak and byte operations in java are weaker.

The Python here has the following code:

        checksum = sum(packet[0x08:], 0xC0AD) & 0xFFFF
        packet[0x06] = checksum & 0xFF
        packet[0x07] = checksum >> 8

I’ve seen in the existing binding code there’s some for loops for checksums, but I’m struggling to work out what the python is doing. It’s taking the byte array from the flag onwards and adding 0xc0ad but I don’t understand anything else.

My rudimentary, untested code for the encode function at the moment is as follows. I’m thinking I should move to using a ByteBuffer instead.

private void encodeMessage(int flag, String json) {
        int length = 12 + json.length();
        Byte[] packet = new Byte[14 + json.length()];
        packet[0x00] = (byte) (length & 0xFF);
        packet[0x01] = (byte) ((length >> 8) & 0xFF);
        packet[0x02] = (byte) (0xa5a5 & 0xFF);
        packet[0x03] = (byte) ((0xa5a5 >> 8) & 0xFF);
        packet[0x04] = 0x5a5a & 0xFF;
        packet[0x05] = ((0x5a5a >> 8) & 0xFF);
        packet[0x06] = 0x00;
        packet[0x07] = 0x00;
        packet[0x08] = (byte) flag;
        packet[0x09] = 0x0B;
        packet[0x0a] = (byte) (json.length() & 0xFF);
        packet[0x0b] = (byte) ((json.length() >> 8) & 0xFF);
        packet[0x0c] = (byte) ((json.length() >> 16) & 0xFF);
        packet[0x0d] = (byte) ((json.length() >> 24) & 0xFF);
        for (int i = 0; i < json.length(); i++) {            
            packet[i + 15] = (byte) json.charAt(i);

Any help would be appreciated

Some progress. The json response is quite long so the slice function cuts the output a bit short. Looking at the python code it reads to the end of the array, but that’s not working for me. I think the best course of action is to refactor the slice code to read to the end or take a parameter to read to the end.

Output of the status response decoded below:

EDIT: I can now control the BG1 twin wall socket. I’ve had to modify some of the core code slightly so I don’t feel comfortable doing a merge request with the main repo, however I’ve uploaded it here: GitHub - RobPope/BroadlinkOH3: OpenHAB3 implementation of Broadlink Binding including support for BG1

Hello Fellow Broadlink’ers.
First of all - Thank you to everyone for this great and very long thread :slight_smile: .
So this is my first post in the community (be nice). I was able to setup OH3 without any issues, put in all my lighting, blinds, UPS, Printer status, gmail, Pushover and link it all with Alexa.
For the RM4 Pro, it was more complicated: was connected and then it went into a communication error (couldn’t authenticate). I then deleted it, and reinstalled it using the Android App, but stopped short of adding it to my Android environment Broadlink APP, all seems to be good now. The RM4 Pro has the latest firmware v52079.

I have read and re-read this thread so many time and am very confused as to what my next steps are. It talks about, creating a remote control, etc… Am really not sure anymore where to start. If anyone could point me to a “plan” of action, that would be awesome. I am not familiar with OH 2 so everything I do is via the GUI. If I need to start doing things the “old” way (am an old guy…I can say that, right?), I am game for it, but will probably will have lots of question.

maybe something like this:

  1. Find your IR code (how, etc…) and put it somewhere.
  2. test those using xyz.
  3. create your remote, as such…using this…
  4. Test in OH 3
  5. Assign this to Alexa using the following meta data.

I am trying to create a simple remote that will turn on/off my Kitchen Fan It has 4 speeds and that’s all for now.

Thanks you so much for everything I have read in this forum so far - it’s awesome. :pray::pray::pray::pray:


I followed the link below. I used the Method 1 that he listed for Configuration and the the python-broadlink method for learning the IR codes. I also set it up with the MQTT method as a backup but I do not currently use it because I would have had to create a directory structure to match the MQTT messages. For my specific setup that would have created 2 or so hours of folder creation and a single text file for every IR code I needed to use. Using this method to capture the IR codes is the easiest way IMO. I was able to quickly and efficiently learn and toss all my IR codes into a file by repeating the same three quick commands.

From that point I ended up creating my own personal widget for the remote based off of the weather widget tutorial and several posts in the page below to help with understanding oh-links and badges.

1 Like

to learn codes - the best way is to use this utility Broadlink Manager download |
But what is the best way connect this codes in OH3 i don’t know. Year ago on OH2.5 i do this manual but that was complicated , you must wright many text files. I really interested how can we do this from OH3 interface, with his new abilities

Best way for OH3 is via the Broadlink binding. Install the binding Broadlink 3.1 which is a few posts above. The ActionCommand that I have called CABLE_SELECT(or CABLE_POWER depending on what photo you look at) is the command that correlates to what is in the file.

1 Like

Thx for the help, I instal broadlink bunding, it work, but can you pls do a more open tutorial. Something like how to add custom RF/IR code and shoot it from oh3, in a step by step way:

  • where you put map file
  • what you write in map file
  • how you create the property links like in your picture
  • how you shoot this property from “Model” (for example I do relay control from this menu can I add here “custom code” and shot it from here?)

Hello.Tell me please. I have broadlink rm4c mini.I can’t read the codes from the remote for the file tried the bridge broadlink but it is only suitable for RM1/2.Tell me please how to read codse. perhaps there are other ways.

Have a look here.
I also got a RM4C Mini in production controlling my TV and Mibox.
The guide should enable you to record your IR commands.
You can then use them in openHAB/MQTT as you need to.

The file goes into /etc/openhab/transform and you write in the .map file the commands like:


You can then use the “start” command to execute the IR code via openHAB via the broadlink command channel.
There should be enough information in this thread to configure openHAB by now.
Have a read through it and let us know if you need further information.

I tried this manual but I could not get the codes for me please in detail how did you get the codes?

I used the method outlined in linked thread via Teach Remote Codes leveraging broadlink-mqtt, whereas also used python-broadlink. Both worked, just follow the instructions of said thread or their respective github repos.

I have a Broadlink RM 4 mini on Openhab 2.5. I got a few IR codes that I learned with the Python library and it worked a couple of times. However now nothing happens when setting something in PaperUI and in addition the following shows up in the logs:

2021-03-13 21:38:04.592 [ERROR] [handler.BroadlinkRemoteModel4Handler] - rm4:cfbc4452[v]: Authentication failed: 
2021-03-13 21:38:04.595 [ERROR] [handler.BroadlinkRemoteModel4Handler] - Broadlink Exception: Response from device is not valid. (0x22=0xFF,0x23=0xFF,0x24=0xFF)
        at org.openhab.binding.broadlink.internal.BroadlinkProtocol.decodePacket( ~[bundleFile:?]
        at org.openhab.binding.broadlink.handler.BroadlinkBaseThingHandler.decodeDevicePacket( ~[bundleFile:?]
        at org.openhab.binding.broadlink.handler.BroadlinkBaseThingHandler.authenticate( [bundleFile:?]
        at org.openhab.binding.broadlink.handler.BroadlinkBaseThingHandler.transitionToOnline( [bundleFile:?]
        at org.openhab.binding.broadlink.handler.BroadlinkBaseThingHandler.updateItemStatus( [bundleFile:?]
        at org.openhab.binding.broadlink.handler.BroadlinkBaseThingHandler$ [bundleFile:?]
        at java.util.concurrent.Executors$ [?:1.8.0_152]
        at java.util.concurrent.FutureTask.runAndReset( [?:1.8.0_152]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301( [?:1.8.0_152]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ [?:1.8.0_152]
        at java.util.concurrent.ThreadPoolExecutor.runWorker( [?:1.8.0_152]
        at java.util.concurrent.ThreadPoolExecutor$ [?:1.8.0_152]
        at [?:1.8.0_152]
2021-03-13 21:38:04.603 [ERROR] [handler.BroadlinkRemoteModel4Handler] - rm4:cfbc4452[v]: Attempting to authenticate prior to getting device status FAILED. Will mark as offline
2021-03-13 21:38:04.607 [WARN ] [handler.BroadlinkRemoteModel4Handler] - rm4:cfbc4452[v]: Online -> Offline due to: Couldn't authenticate

It does show as online in PaperUI.
Any suggestions, what I could do?

Currently controlling a BG socket via Alexa so keen to test this out. Is there a ready compiled .jar for this anywhere please?