Broadlink IR/RF remotes integration (RM3 Mini, RM Pro, RM4 Mini/Pro)

Hi @tomw - i have a RM4 that I’ve been using for several years to control my 4 RF roller shades . Before discovering your driver, I’ve used Alexa+Echo Speaks to control the shades from Hubitat, which worked perfectly, but never liked being cloud dependent.

Now that if switches to your driver using sendCodeData command, I frequency have shades not responding to the command. I’ve tried sending the command twice with a small 2 second delay inbetween and I've also enabled "Send keep-alive ping to RM3 and RM Pro devices?", but it doesn't seem to stay enabled. Not sure that it even applies to the RM4 Pro.

I've confirmed in the hubitat logs that the sendCodeData() is going out, but for some reason, the blind/s don't move. I don't think it's an RF issue, as I was using the same RM4 Pro for years before without a single know failure.

I've never been able to manually repro the issue, so wondering if maybe the RM4 is sleeping or not fully awake when the commands comes in.

Any thoughts on how I can debug this?

thank you!

That setting will turn itself off if the driver confirms it doesn't apply to your device, as you're seeing with your RM4.

Unfortunately no one has figured out the equivalent functionally for the newer devices yet. However, unless you have blocked your RM4 from the Internet, it shouldn't be needed anyway.

As for debugging your specific issue, let me make sure I understand. When it worked before using the cloud-based setup, were you using an RF command that you learned using the Broadlink app or one that was based on selecting youe device type using the Broadlink mobile app?

I would try to figure out whether the code is:

  • always being sent by the device and not working (which you might remedy by trying to re-capture the code a few different times to try to get one that is more reliable); or
  • if it is not actually getting generated by the RM4 for some reason despite the logs from my driver showing the command is sent (which might point to an issue with my driver or with the format of the code itself).

When you sendSavedCode, do you always see the LED on the RM4 illuminate, even when it doesn't have the intended effect on the shade?

That's correct, I added the known device to the Broadlink app, then it prompted me to pair it directly with the roller shades. I didn't use the existing remote at all in the process.

If I manually send the saved codes by name in the hubitat driver, I haven't seen it fail. The failure only occurs when the shades open/close on a timer. For example the shades are open at night time, then close at 4am before the sun comes up. This is working the majority of the time (4 our of 5 times it is successful). If I were to re-capture the remote code, would I get a different sequence? Do you think some sequences are more reliable than others?

I just did a manual test by sending the name to "Send Saved Code" and I see the red LED flash on the RM4. Since the failures are random and seem to happen after the device has been idle for some time, I don't know if I'd be able to determine if the LED blinks in the failure case. Let me see if I can point a camera at it and capture and entire day.

thank you again for your help!

This is a stretch, but how are you powering the RM4?

The reason I ask is, when I first set up my RM4 Pro, I thought I would be clever and attach its USB cable to control unit of our Samsung Frame TV. This worked fine until the TV went into sleep mode, where it then powers off the USB port on the back of the control unit. My RM4 Pro would then stop working of course. :grimacing:

I had Tom quite baffled for a bit trying to figure out why my device was randomly not working with his code. All the while, it was because of the device not being constantly powered. :joy:


Ultimately it's an analog RF signal that is getting digitized, so there is room for some variation in the capture. I wouldn't expect RF to be quite as susceptible to small differences as IR (just an uneducated hunch), but capturing a few different instances of the same key press couldn't hurt as a quick experiment.

Another guess is that the shades have some quirk in behavior related to that specific automated operation. Maybe they need a different code first to "nudge" them awake before they can execute a command. The Broadlink app could be doing this (for example, sending multiple codes or something). Just another shot in the dark, but I'd try to see if you can replicate the issue using the manufacturer's remote to take Broadlink out of the picture.

I think your test to see if it is indeed sending a code makes sense. And trying a couple of different captures of the code may tell you something about reliability. And trying to force the issue to happen with the original remote may give additional info. Hopefully between all of those you can find some additional clues to help scope down the problem and figure it what to try next.

Hi @tomw - minor update, I recaptured all the codes (up and down) for my four blinds. I changed my rule to try both codes:


  • send shades up (old)
  • delay 2s
  • send shades up (new)

I made that change two days ago, and so far it’s been working perfectly.

The first time I captured the codes, I was pressing the remote button over and over, waiting for the driver to indicate that the code had been captured. This time I only pressed the remote button once and very close to the RM4, the driver capture status seemed to detect it quickly.

I’m wondering if the way I captured the codes the first time wasn’t clean due to the repeated button presses. Also wondering if it would be best to put my Hubitat and rm4 in a very clean RF environment (like faraday cage/RF shield box ) and re-do the captures there. I’ll hold off on that step until I get some more mileage on my current setup.

Thanks again for all your suggestions.

1 Like

@tomw - it's been a few days now. Switched to only using the newly captured codes and only sending them once. All 4 of my blinds have been perfect.

This is a great app, thanks for creating it and really appreciate your support!

For those reading this in the future, the key to my success was the way I captured the code.

Bad case:

  • Click "Learn RF"
  • Get within 5 feet of the Broadlink device
  • Rapidly or continuously click the RF remote button

Good case:

  • Click "Learn RF"
  • Get within 1 foot of the Broadlink device
  • Single click the RF remove button

Wow.....there was a lot of work put into this app..Thank you,
I just spent a couple hours, and a few glasses of wine, and i have 1 RM 4 mini on HE with:
On / Off codes
Fan settings 1 through 5
Temp settings 18C through 22C

Next step is to schedule on / off. I might care about the temp but having my office cool when i wake up is important ...the specific temp and fan less so but helpful.
Any suggestions on RM ...or even better....a dashboard option to turn on / off?

Amazing app...awesome work.

You could automate it however you like. Probably some combination of triggering based on a time prior to when you want the office ready, along with optionally using some additional sensors (like temp or humidity) to decide what to actually set the setpoint to.

For dashboard operations, you have multiple options. If you only need to send a single saved code, the easiest is to use a dashboard button and specify the button "number" to be a saved code name from your virtual device.

You can also do fancier things with different approaches using Rule Machine or node-red, as others in this thread have discussed. I used a node-red dashboard to create a web-based remote control for my different rooms.

Interesting. I was just playing some more with this.
I deleted the device and started over as i'm not certain i'm thinking about this right.
If this is a full display remote...then I think it sends set points for on, Temp and fan all in the same command....sound right?

Personally i probably don't care to have all the options so if i got this right then i just need a few
On, Fan Low, 22C as one save
On, Fan High, 22C as another save

am i thinking about this right?

You need to save the codes individually, regardless. You can't capture a sequence of button pushes from your physical remote because the hardware just doesn't work that way.

Then it is up to you whether to send them as separate individual commands (using either sendSavedCode() or push()) or to use the "sequence" feature that I described earlier in this thread.

As a side note:

I hope when you deleted your device that you didn't lose all of the codes you had worked to capture. I would recommend installing my Broadlink System Manager app (included as an option feature in this package) so that you can store any codes you save from virtual devices, just so you have a backup while you work to tweak your setup.

1 Like

Appreciate the reply.
I did lose the captures...but i didn't mind spending some time as im still trying to sort through what its actually saving.
For simplicity i saved 4 modes

when i send the respective on command ( from an off state) i can hear the difference in the fan im assuming its setting the temp as well as the fan.
And to be honest...4 of these states is good enough for me.

So this isn't a Broadlink App question...its more ff a dashboard question.
I saved all 4 of the states to different buttons....and they are working.....i know this is a novice question but how can i change the name of each one?
Left to right. Off, On Low, On Med, On High


I think you have a couple of options.

You could edit the markup for the dashboard directly or use css to customize them. I don't use Hubitat dashboards much, so someone else would have to advise on how to do that.

The other option would be to create a virtual button for each command and name it however you like. Then you could write a Rule Machine rule that is triggered by the button press and which issues the appropriate command to the Broadlink virtual device as its action.

The latter is tedious for a lot of commands but might be the most straightforward if you only need a few.

If you go this route, create one virtual button device that has multiple buttons. Otherwise you will have a bunch of devices cluttering your list. I have single virtual button devices with 25 buttons.

1 Like

Keeping it simple for the moment
Found some icons that do a decent job of describing the differences.

Awesome app.
Where do I send the beer money :slight_smile:

1 Like

This makes sense to avoid decluttering the Devices page, but how does it look on a dashboard?

I suspect they all have the same name, which is the issue that @macdenewf was trying to work around.

Just got this all setup today. Up to the part of learning RF codes. My question is, do you need to add the device to broadlink app first? Do you not add the device to the broadlink app at all? I cant get it to register the rf frequency, sweep keeps failing, but it registered fine in the broadlink app just fine..

After you have it connected to your WiFi, you don't have to use the Broadlink mobile app at all if you don't want to.

Which frequency does your remote operate at? Can you describe your testing procedure when sweeping?

Please enable debug logging on the virtual device and then do a sweep and private message the Logs output to me to see if it gives any clues.

Ok I will debug the log and see what it says. It uses I forgot the last 3 numbers.

The procedure I do is exactly whats in the instructions. Click "sweep rf", activity says "sweeping rf, HOLD" where I hold the remote button down for at least a minute, until it times out. Im literally on top of my Broadlink RM4 Pro. I am not near my Hubitat though (i dont know if that plays a factor).

Can I add to devices to my Broadlink app AND this app in Hubitat? I like to use a combo so I can easily link Broadlink to Google Home and control things with voice. It takes a middle man, Hubitat, out the equation. I would like to use this app for Pico remotes on fans I have...

Sure, you can run both. I don't know if they'd collide if you were unlucky enough to send a simultaneous request from both interfaces, though that is probably a low risk. I only use it locally.

Do you know if your remote sends packets repeatedly if you hold it down? It may be necessary to push it multiple times if not. You only have to be near the device. Proximity to Hubitat isn't needed.