Y'all I really need help with learning RF codes on my Broadlink RM4 Pro

I feel like I’ve tried everything under the sun to get my RM4 Pro to learn my projector remote commands through home assistant. I have it all set up on the BroadLink app and it works without fail. I learned and use a ton of IR codes through the RM4 on home assistant without issue. I just for some reason cannot get RF codes specifically to learn or work.

I use the learn command service in developer tools. I choose my RM4 device. I name my device. I name the command. I select RF. I select alternative (although I’ve tried without this as well). I then call the service, click the button I’m trying to learn with about 1.5 seconds in between each click until the light on the RM4 Pro turns off, or I get the green check on home assistant. Then I have a script set up to send the code which works for all of the IR devices but not for this one. In fact I get an error code telling me failed to call because the command I just learned doesn’t exist. I feel like I have already tried every variation to this method. I’ve used different click speeds, I’ve turned of alternative, I’ve tried deleting the commands, I’ve tried pressing and holding, different names. I do not know what the hell I’m doing wrong.

I saw that there is a BroadLink Manager, and I was excited to give that I try to learn the commands and then just input them manually. But the old version that you just download and run does not support the RM4 Pro, and the new version is all done through a docker container, and I have no idea really what that is or how to set one up.

If you all have any suggestions please let me know, it feels like something I should have been able to figure out at some point in the year I’ve been trying, but I’m just finding my self In community thread after community thread saying the same things.

Could we see the script you use for sending the command?

1 Like
service: remote.send_command
data:
  device: projectorScreen
  command: screenDown
target:
  entity_id: remote.blaster

Thank you for your help, seriously

Has the command been saved correctly? I notice your device name and your command have a capital letter in the middle.

You can find the broadlink commands in the folder /config/.storage/. It will be called something like broadlink_remote_xxxxxxxxxxx_codes and it will look something like:

    "living_room_spotlights": {
      "Turn off": "scCwBJKeBgAPBAkKCAoJLQkJCS0JCgoJCQoJLQkJCQoJCgktCQoJCgkJCS0JLQkKCQoJLQkKCAoJCgktCQoICgkAAWQJCgkKCQkKLAkKCQoJCQkuCQkJCgkKCQkJLQkKCS0KCQkKCQkJLQoJCQoKLQgKCQkJCgkKCS0JCQkuCS0JCgksCgkJCgkJCQsJCQkKCS0JCQkKCS0JCwgKCQoJCgguCAoJLQkKCQoJCQktCQoJCgkJCS4JCgkJCQoJLQktCQkJCgktCgkJCgkJCS0JCgkKCQABZAoJCgkJCQotCQkJCgkJCi0JCgkJCQoJCgktCQkJLgkJCgkJCgktCQkJCgktCQoJCgkJCQoJLQkKCS0JLQkKCS0JCQkKCQoJCgkKCAoJLQkKCQkJLQkLCQkJCgkJCS4JCQktCQoJCgkKCSwJCgkKCQkJLgkKCQkJCgktCS0JCQoKCS0JCQkKCQoILQkKCQoJAAFkCQoJCQoJCS0JCgkJCgkJLgkJCQoJCggKCS0JCgktCQoJCgkJCS0JCgkKCC4JCgkJCQoJCgksCQoJLgktCQkJLQkKCQkKCQkKCQoJCgktCQkJCgktCQoJCgkKCAoJLQkKCS0JCgkKCAoJLQkKCQkJCgkuCQkJCgkKCSwKLAkKCQoJLQkKCQoICgktCQoJCgkAAWQJCgkJCQoJLQkKCQkJCgktCQoJCgkJCQoJLQkKCS0JCgkKCAoJLQkKCQkJLgkJCQoJCgkKCC0JCgkuCS0JCQktCQoJCQkKCQoJCgkKCC0KCQkKCS0JCgkKCQoICgktCQoJLQkKCQkJCgktCQoJCQkKCS4JCQkKCQoILgksCgkJCgktCQoJCggKCS0JCgkKCAABZAoKCQkKCQktCQkKCQkKCS0KCQkJCgkJCgktCQoJLQkKCQkJCgktCQoJCQkuCQoJCQkKCQkKLQgKCS4JLQkJCS0JCgkJCgkJCgkKCQoJLQkJCQoJLQkKCQoJCggKCS0JCgktCQoJCgkJCS0JCgkKCQkJLgkJCQoJCgktCS0JCQoJCS0KCQkKCQkJLggKCQoJAAFkCQoJCQoJCS0JCgkJCQoJLQoJCQoJCQoJCS0JCgktCQoJCgkJCS0JCgkKCS0JCgkJCQoJCgktCQkJLgktCQkKLAkKCQoJCQkLCQkJCgktCQkJCgktCQsICgkKCQoILggKCS0JCgkKCQkJLggKCQoJCgguCQoJCQkKCS0JLQkJCgoJLAoJCQoJCgksCgkJCgkAAWQJCgkKCQkKLQkJCQoJCQkuCQkKCQkKCQkKLAkKCS0KCQkKCQoJLQkJCQoJLQkKCQoJCQkKCS0JCgktCS0JCgktCQkKCQkKCQoJCgkJCS0JCgkKCSwKCgkJCgkJCgktCQkJLQkLCAoJCgktCQkJCgkKCS0JCgkKCQkJLQktCQoJCgktCQoJCggKCS0JCgkJCQABZQkJCgkJCgktCQkKCQkKCS0KCQkJCgkJCgktCQkKLQkKCQkJCgktCQoJCQkuCQkJCgkKCQkJLQkKCS4JLQkJCS0JCgkJCgkJCgkKCQoJLQkJCQoJLQkKCQoJCgkJCS0JCgktCQoJCgkJCS0JCgkKCAoJLgAAAAAAAA==",
1 Like

How do I get to that folder? or any files in general? do I have to connect to the desktop my home assistant instance is running on? Because I don’t have a monitor atm. Sorry I’m such a noob! <3

If you have HA OS or Supervised you should be able to install the Samba Share add-on (Settings | Add-ons) which will allow you to access HA files from elsewhere on your network. I use an Android tablet with the CX File Explorer app.

If you can do this, .storage is a hidden file so you’ll probably have to tick a checkbox to display it.

1 Like

You don’t need a monitor. Whatever you’re currently using will do.
Just follow these instructions and install the File Editor Addon - you’ll be able to access the storage folder once it’s set up and you remove storage from the config options for hidden folders.

Careful - make sure NOT to edit anything in that storage folder or you’re gonna hose your installation!

1 Like

Alright @ShadowFist @Stiltjack I got it figured out. Here is what’s in the file:

{
  "version": 1,
  "minor_version": 1,
  "key": "broadlink_remote_ec0bae84d784_codes",
  "data": {
    "projectorScreen": {
      "pause": "dsCiAZDKBAAnDQ0nJwwoDQ0nDScmDg0nDScNJw0nJw0nDQ0nJg8NJicODScmDgwoDCgnDA4mDgABhA0mKAwOJicOJg4NJw0nJw0NJw0oDCYOJyYOJg4NJycODScmDgwoJg0NJw4mJw4NJw0AAYMOJicODScnDSYODiYNJycMDicNJw0nDScmDicNDiYnDgwoJg0NJyYODScNJycNDiYNAAGEDiYnDQ4mJw0nDA4mDiYnDg0nDScNJw4mJw0nDQ0nJw0NJycNDScnDQ4mDScnDgwmDgABhA4mJw4MJycNJw0OJg4mJw0OJw0nDCgMJycNJw0OJicNDicmDg0nJg4MJw0nKAwOJg4AAYMOJicNDiYnDiYNDicNJyYODScNJg4mDiYnDScNECUmDg0nJw0NJigMDiYOJyYODScNAAGEDScmDg4mJw0nDQ0nDScnDQ0nDiYNJw4mJw0nDQ0oJg0NJygMDiYnDQ4mDiYnDgwoDAABhQ0nJw0MKCcMKAwOJg4mJw4NJw0nDScMKCcNJwwOJicODScmDg0nJw0MKA0nJw0NJg4ABdw="
    },
    "candles": {
      "On": "JgBQAAABI48TERMRFBETERMRExEUERMREzUTNRQ1EzUTNRM1FDUTNRMRExEUERMRExETERMRFBETNRM1EzUUNRM1FDQUNBU0FAAE6wABIUgTAA0F",
      "Off": "JgBQAAABI44UERMRExETERMRFBETERMREzUTNRQ1EzUTNRM1EzUTNRQREzUTERMRExETERQRExETNRMREzUUNBQ1EzUTNRM1EwAE7AABIkcTAA0F",
      "2hour": "JgBIAAABJY8TERQRExEUERQQFBAVEBQRFDUTNRM1FDUTNRQ1EzUTNRQRExEUNRMRExEUERMRExEUNRM1FBETNRM1EzYTNRM1FAANBQ==",
      "4hour": "JgBQAAABJo8TERQRExEUERMRExEUERMRFDUTNRM1FDUTNRM1FDUTNRMRFDUTNRMRFBETERQRExEUNBUQFBAUNRQ1EzUUNRM1EwAE7AABI0gTAA0F",
      "6hour": "JgBQAAABJpAUEBMSEhITEhISExISEhQREjYTNhQ0EzUTNhM1EzYTNhISExETEhI2ExISEhMSEhITNRM2EzUTEhI2EzYSNhM2EwAE7AABJUgTAA0F",
      "8hour": "JgBIAAABJ44UEBUQFBAUERQQFBAVEBUPFTQVMxUzFjMVNBU0FDQUNBQRFDQVEBQ0FBAVEBQQFRAUNBQQFTQUEBQ0FTQUNBQ0FQANBQ==",
      "dim": "JgBQAAABI48TERMRFBETERMRExEUERMREzUUNRM1EzUUNRM1EzUUNRMRExETERQREjYTERMSEhITNhM1FDUTNRQREzUTNRQ1FAAE9AABJUgTAA0F",
      "brighten": "JgBIAAABJo8TERQRExEUERMRExEUERMRFDUSNhQ1EzUTNRQ1EzUUNRMRFDUTERQRFDUTERQRExEUNRMRFDUTNRMREzYTNRQ1EgANBQ==",
      "on": "JgBQAAABJo8TEhISExISEhMSExEUERMSEjYTNhI2EzUTNhM1EzYSNhMSEhITEhISExISEhMRExITNRM2EzUTNhI2EzYSNhQ1EgAE7AABJEkSAA0F",
      "off": "JgBQAAABJo4UERMRExEUERMRExEUERMREzUUNBQ1EzUTNRQ1EzUTNRQREjYTERMRExIUEBQQFRAUNBQREzUUNRM1FDQUNRM1FAAE6wABJEgTAA0F",
      "candleMode": "JgBIAAABJpASEhMSEhITEhISExETEhISEzYSNhM1EzYSNhM1FTQSNhMRExISNhI2FBESEhISExISNhI2ExETEhM1FDUUNRI2FAANBQ==",
      "lightMode": "JgBQAAABJo4UEBUQFBAUERQQFRAUEBQQEzYUNBU0FDQVNBQ0FTMVNBUQFTMVMxYzFQ8WDxUPFg8VMxUQFRAUEBU0FDQVNBQ0FAAE6wABJkYUAA0F",
      "dimmer": "JgBQAAABJJAUEBQQFBAVEBQQFBAUEBUQFDQUNBQ0FTQUNBQ0FTQUNBQQFRAVDxUPFjMVEBQQFRAUNBQ0FDQVNBQQFDQVNBQ0FAAE6gABJUcUAA0F",
      "brighter": "JgBQAAABJ48TEhISExETEhISExETEhISEzUTNhI2EzYTNRQ1EzYTNRMSEjYVEBQQEzUVEBQQFBEUNBQQFTQUNBQRFDQUNBU0FAAE8AABJUgTAA0F"
    },
    "screen": {
      "down": "dsAKApDKBAAnDA8lKA0nDQ4mDScnDgwnDScNJw4mJw0nDg0nJg4NJycNDScnDQ0nDScnDQ4mDgABgw4nJwwPJicNJw0NJw0mKA0NJw4mDiYOJicNJw4MKCYODSYoDQ0nJg4NJw0nJw0NJw0AAYQOJycNDiYnDScMDicNJycNDiYOJw0nDScnDScODCcoDA4mJw4NJycNDiYOJicODCgMAAGFDiYnDQ0nKAwoDA4mDiYnDg0nDiYOJg4mJw4nDA4mJw4NJycNDiYnDg0nDCgnDQ0mDgABhQ0nJw0NJigMKAwOJw0nJw0OJg4mDSgMJygMKAwOJicODScnDQ4mJw4MKAwnKAwOJg4AAYUMJygMDiYnDScODScNJycNDiYNJw0nDScoDCcNDiYnDg4mJw0NJycODCcNJycNDiYOAAGEDiYoDA4mJw0nDg0nDiYnDQ0oDCcNJw4mJw0nDQ4mJw4NJycNDScnDQ0nDScmDg0nDgABhA4mJw0OJicNJw4NJwwoJw0NJg4mDiYOJycNJw0OJicODCgnDA4mJw4NJw0nJg4OJg4AAYQOJicNDiYnDScODCgNJigMDiYOJw0nDiYnDScNDScnDgwnKAwOJyYODScNJycNDiYNAAGFDiYnDQ4mJw4nDQ0mDiYoDA4nDScOJg4mJw0nDQ0nJw0OJicODScmDg0nDiYnDQ0nDQAF3A==",
      "screen_off": "dsA6AZDKBAAnDQ0mKAwnDg0nDiYnDQ4nDCgMJw4mKAwnDg0nJg4NJycODCcnDiYNDScOJg4mDgABhA0nJw0OJicNJw4NJw0nJwwOJg4nDScOJicNJw0OJyYODScnDQ0nJw0nDg0mDiYOJwwAAYUOJicNDicnDScNDSYOJicODScOJg4mDiYnDiYNDScoDQ0nJg4NJycNJw0NKAwnDScNAAGFDScnDA4nJw0nDQ4mDiYnDg0nDCgNJg4mKAwnDg0nJw0OJyYODCgmDSgMDiYOJg4mDgABhA0nJw0OJicNJw4NJwwoJg0OJg4mDiYOJyYOJw0NJycODCYoDQ0nJw0nDQ4mDiYOJwwAAYUOJicNDSgmDSgMDiYOJicODScOJg4mDScnDCgNDScnDQ4mJw0OJyYOJw0NJw0mDiYOAAXc"
    }
  }
}

It seems to me that I had named it screen in the past and had those commands Ig? I still don’t think either of them work because I’ve never had the screen working. The command I trained I named screenDown not “pause” so I don’t know what that’s about other than it not liking my camel caps, but I’m going to test that as well and see if it does anything.

Okay so I ran it with the pause instead of screen down and it ran
image

BUT the screen still definitively didn’t move, so the code must be wrong?

All the codes under screen are also not functioning.

Ok, I’m flying blind here because you don’t describe how you’re sending the commands.

However, if you’re doing this using the call_service from dev tools, try sending the base64 version. I copied and modified this directly from the docs, so you might need to mess around with it, but I’m using your code for down:

service: remote.send_command
data:
  target:
    entity_id: remote.blaster
  data:
    command: >-
      b64:dsAKApDKBAAnDA8lKA0nDQ4mDScnDgwnDScNJw4mJw0nDg0nJg4NJycNDScnDQ0nDScnDQ4mDgABgw4nJwwPJicNJw0NJw0mKA0NJw4mDiYOJicNJw4MKCYODSYoDQ0nJg4NJw0nJw0NJw0AAYQOJycNDiYnDScMDicNJycNDiYOJw0nDScnDScODCcoDA4mJw4NJycNDiYOJicODCgMAAGFDiYnDQ0nKAwoDA4mDiYnDg0nDiYOJg4mJw4nDA4mJw4NJycNDiYnDg0nDCgnDQ0mDgABhQ0nJw0NJigMKAwOJw0nJw0OJg4mDSgMJygMKAwOJicODScnDQ4mJw4MKAwnKAwOJg4AAYUMJygMDiYnDScODScNJycNDiYNJw0nDScoDCcNDiYnDg4mJw0NJycODCcNJycNDiYOAAGEDiYoDA4mJw0nDg0nDiYnDQ0oDCcNJw4mJw0nDQ4mJw4NJycNDScnDQ0nDScmDg0nDgABhA4mJw0OJicNJw4NJwwoJw0NJg4mDiYOJycNJw0OJicODCgnDA4mJw4NJw0nJg4OJg4AAYQOJicNDiYnDScODCgNJigMDiYOJw0nDiYnDScNDScnDgwnKAwOJyYODScNJycNDiYNAAGFDiYnDQ4mJw4nDQ0mDiYoDA4nDScOJg4mJw0nDQ0nJw0OJicODScmDg0nDiYnDQ0nDQAF3A==

I sent the commands like this:

service: remote.send_command
data:
  command: screen_off
  device: screen
target:
  entity_id: remote.blaster

I’m editing your code rn

@ShadowFist I’m getting this error code:

image

I ran exactly your code because I didn’t have to edit it.

service: remote.send_command
data:
  target:
    entity_id: remote.blaster
  data:
    command: >-
      b64:dsAKApDKBAAnDA8lKA0nDQ4mDScnDgwnDScNJw4mJw0nDg0nJg4NJycNDScnDQ0nDScnDQ4mDgABgw4nJwwPJicNJw0NJw0mKA0NJw4mDiYOJicNJw4MKCYODSYoDQ0nJg4NJw0nJw0NJw0AAYQOJycNDiYnDScMDicNJycNDiYOJw0nDScnDScODCcoDA4mJw4NJycNDiYOJicODCgMAAGFDiYnDQ0nKAwoDA4mDiYnDg0nDiYOJg4mJw4nDA4mJw4NJycNDiYnDg0nDCgnDQ0mDgABhQ0nJw0NJigMKAwOJw0nJw0OJg4mDSgMJygMKAwOJicODScnDQ4mJw4MKAwnKAwOJg4AAYUMJygMDiYnDScODScNJycNDiYNJw0nDScoDCcNDiYnDg4mJw0NJycODCcNJycNDiYOAAGEDiYoDA4mJw0nDg0nDiYnDQ0oDCcNJw4mJw0nDQ4mJw4NJycNDScnDQ0nDScmDg0nDgABhA4mJw0OJicNJw4NJwwoJw0NJg4mDiYOJycNJw0OJicODCgnDA4mJw4NJw0nJg4OJg4AAYQOJicNDiYnDScODCgNJigMDiYOJw0nDiYnDScNDScnDgwnKAwOJyYODScNJycNDiYNAAGFDiYnDQ4mJw4nDQ0mDiYoDA4nDScOJg4mJw0nDQ0nJw0OJicODScmDg0nDiYnDQ0nDQAF3A==

I don’t think I did anything differently?

Ok, next attempt. I might have added an extra data part by mistake:

service: remote.send_command
target:
    entity_id: remote.blaster
data:
    command: b64:dsAKApDKBAAnDA8lKA0nDQ4mDScnDgwnDScNJw4mJw0nDg0nJg4NJycNDScnDQ0nDScnDQ4mDgABgw4nJwwPJicNJw0NJw0mKA0NJw4mDiYOJicNJw4MKCYODSYoDQ0nJg4NJw0nJw0NJw0AAYQOJycNDiYnDScMDicNJycNDiYOJw0nDScnDScODCcoDA4mJw4NJycNDiYOJicODCgMAAGFDiYnDQ0nKAwoDA4mDiYnDg0nDiYOJg4mJw4nDA4mJw4NJycNDiYnDg0nDCgnDQ0mDgABhQ0nJw0NJigMKAwOJw0nJw0OJg4mDSgMJygMKAwOJicODScnDQ4mJw4MKAwnKAwOJg4AAYUMJygMDiYnDScODScNJycNDiYNJw0nDScoDCcNDiYnDg4mJw0NJycODCcNJycNDiYOAAGEDiYoDA4mJw0nDg0nDiYnDQ0oDCcNJw4mJw0nDQ4mJw4NJycNDScnDQ0nDScmDg0nDgABhA4mJw0OJicNJw4NJwwoJw0NJg4mDiYOJycNJw0OJicODCgnDA4mJw4NJw0nJg4OJg4AAYQOJicNDiYnDScODCgNJigMDiYOJw0nDiYnDScNDScnDgwnKAwOJyYODScNJycNDiYNAAGFDiYnDQ4mJw4nDQ0mDiYoDA4nDScOJg4mJw0nDQ0nJw0OJicODScmDg0nDiYnDQ0nDQAF3A==

EDIT: In case I’m not here to reply, save your commands in a script and try sending those instead. You’ve got plenty of examples in the Broadlink Docs.

I just tried this:

service: remote.send_command
data:
  command: >-
    b64:dsAKApDKBAAnDA8lKA0nDQ4mDScnDgwnDScNJw4mJw0nDg0nJg4NJycNDScnDQ0nDScnDQ4mDgABgw4nJwwPJicNJw0NJw0mKA0NJw4mDiYOJicNJw4MKCYODSYoDQ0nJg4NJw0nJw0NJw0AAYQOJycNDiYnDScMDicNJycNDiYOJw0nDScnDScODCcoDA4mJw4NJycNDiYOJicODCgMAAGFDiYnDQ0nKAwoDA4mDiYnDg0nDiYOJg4mJw4nDA4mJw4NJycNDiYnDg0nDCgnDQ0mDgABhQ0nJw0NJigMKAwOJw0nJw0OJg4mDSgMJygMKAwOJicODScnDQ4mJw4MKAwnKAwOJg4AAYUMJygMDiYnDScODScNJycNDiYNJw0nDScoDCcNDiYnDg4mJw0NJycODCcNJycNDiYOAAGEDiYoDA4mJw0nDg0nDiYnDQ0oDCcNJw4mJw0nDQ4mJw4NJycNDScnDQ0nDScmDg0nDgABhA4mJw0OJicNJw4NJwwoJw0NJg4mDiYOJycNJw0OJicODCgnDA4mJw4NJw0nJg4OJg4AAYQOJicNDiYnDScODCgNJigMDiYOJw0nDiYnDScNDScnDgwnKAwOJyYODScNJycNDiYNAAGFDiYnDQ4mJw4nDQ0mDiYoDA4nDScOJg4mJw0nDQ0nJw0OJicODScmDg0nDiYnDQ0nDQAF3A==
target:
  entity_id: remote.blaster

I’m running yours now… there was no difference I think. It ran, nothing moved. I’m going to fuss around with a few of these different codes and get back you all if nothing works. Thank you again.

1 Like

Okay I tried that and it didn’t work, I did also add a space between the code and “‘b64:’” I also tried it with my candles on command which worked flawlessly. I tried to get some more codes to run this way because I didn’t trust pause or any of the screen device commands, but I haven’t been able to have any of these new learned commands show up in this file with the codes. I did the steps exactly as I have in the past, and I restarted File Editor addon and restarted home assistant when that didn’t work. I also tried doing it under a new device name when learning the command and that also did not work. So, I’m stuck again. I will happily blindly follow instructions from you all when you have the time to give them to me. Thank you!!
sadbanana

Last suggestion I can give, because I’m all out of ideas.

Record your down command 10 different times, maybe calling it down1, down2 etc.
When you’re done, open the file and check if those 10 commands are exactly the same. If they’re not, then your remote sends rolling codes and there’s no easy way to send commands I’m afraid.

2 Likes

I’ll give it a go. Thank you again @ShadowFist for the help!

If it were a “rolling code” wouldn’t the Broadlink app also find issue with it? Because again, it works perfectly fine on their app.

Is your projector remote using 315 or 433mhz?
I think I might try to use rm pro on mine and see if it works

1 Like

I’m like 99% sure it was 433mhz, but I would have to double check when I get home in like 30 minutes.