jimb0b / broadlink-virgin-360-codes

IR blaster codes for the Virgin 360 box in the UK. Can be used by Broadlink devices.
1 stars 0 forks source link

Cannot get codes working with my Broadlink devices #2

Open davepearson1628 opened 4 months ago

davepearson1628 commented 4 months ago

Hi @jimb0b

Unfortunately I couldn't get your codes to work with either my Broadlink RM4 Pro, or my Broadlink RM4C Mini.

It would be great if I could get them to work - if you need me to upload any Home Assistant logs or anything, please let me know, although when I test in Home Assistant, the command is successfully sent and I see the IR light blink on the Broadlink devices, so I think Home Assistant is happy with the codes.

Regards, Dave.

jimb0b commented 4 months ago

Hi @davepearson1628 apologies for not responding sooner, I'm currently away but will be back early next week and will have a think about how we can troubleshoot this! I can't see how the codes could be different for individuals as I generated these from using a one for all remote with code 1582 so should be universal.

Just to check in the interim, which buttons have you tried specifically? can I check if you've tried the "power" button? I'm not 100% on this but from reading various threads online I'm wondering if there is a setting somewhere on the Virgin box to "accept" the IR codes although I'm not sure where that setting is just yet, if it exists at all (but some ppl seem to suggest the power button should always work).

Also we should check we both have the same hardware! I'll double check the serial/hw model when I get back, I wonder if Virgin have slightly different HW models for the same 360 software?

jimb0b commented 4 months ago

@davepearson1628 ok to confirm - my box is a Humax 1008R.

Cheers Jamie

davepearson1628 commented 4 months ago

Ah, that could explain why the codes don't work on my Boxes - I have:

Main Box: Arris-DCX960-MPA+ Remote: Humax-EOS1008C-V001

I'm wondering if I could get a Harmony Hub to work with either of these boxes and,. if so, could that be controlled from Home Assistant or even some sort of Linux command line tool?

jimb0b commented 4 months ago

Ohh right! Ok well with a bit of luck I might be able to find what the one for all code is for those boxes maybe(?) I'll have a look about and see if I can try a couple of codes..will report back soon!

davepearson1628 commented 4 months ago

That would be great - happy to test with any small subset of codes you come up with, if that saves time "recording" all of them.

davepearson1628 commented 4 months ago

One thing that occurs to me is that I have a "partially" working set of codes in my Broadlink App on my iPhone. I could use one of my devices to record the codes sent from the other, to create a set of Home Assistant Codes. The problem I have with using the phone is that the number codes don;t seem to be sent reliably, so if I send, say, 122, the TV360 box might only receive 1 or 12, not the complete sequence. With Home Assistant, I may be able to get this more reliable.

Sadly, I think there are also some missing codes in my Broadlink app, but it may be enough for my purposes.

I probably won't have time to try this out until the weekend, but I will let you know how I get on.

jimb0b commented 4 months ago

Interesting - I didn't realise you could send IR codes from an iPhone!

I've had a quick google and found a few threads which talk about codes other than 1582 however none of the codes were accepted by the one for all remote unfortunately, except for "2015" on this result I found https://community.virginmedia.com/t5/Forum-Archive/One-For-All-universal-remote-working-code/td-p/4590295 . Here's the corresponding code for power:

"arris-2015": {
      "power": "JgCgAI6PDxEPEA8SDxAPEQ8vEBAPEA8RDxEOEg8QDxEPEA8RDxEPjw8wDhEQEA8QEBAPMA8wDy4QLxAQDxEOEg8vDxEOERAQDxAQLw8wDjAPAAeWjo8PEQ4SDxAPEBAQDzAPEA8RDxEPEQ8QDxAQEA8RDxEPEA+PEC8QEA8QDxEPEQ8vDzAPMA8vDxEOEg8QDzAPEBAQDxAPEg4wDy8QLw8ADQU="
    }

I'm happy to try other "one for all" codes if you manage to find mention of them!

davepearson1628 commented 4 months ago

No, the iPhone has the Broadlink app on it, which tells the RM4 to transmit the codes. I tried this this evening and was able to capture the codes that had been set up in the Broadlink App and am able to get Home Assistant to transmit the codes, but, for some reason, my TV360 did not react to them at all. The codes sent from the Broadlink app are responded to (sometimes - it's a bit hit and miss).

I haven't had a chance to try your "power" button, as I've only just seen your post :-) I'll try and test it tomorrow.

davepearson1628 commented 4 months ago

So, I've had no joy at all with recording the key codes on my Broadlink devices, but I have found a device that WILL work with my TV360 boxes - the Panamalar IR Remote from Amazon. The IR itself works with the Smart Life app, and I just chose the Ziggo configuration option and the codes at the top of the list. To get it working with Home Assistant, I needed to create a "Tap-to-Run" seen for each button, when you do that and then restart Home Assistant, these scenes all show up in the Home Assistant Scenes.

Since the IR Device is really quite cheap at £20.00, I have another one on order so I can control both my TV360 boxes..

jimb0b commented 4 months ago

Ahh fair enough! Sorry I couldn't help, bit of a strange one as I'm not sure why it's not compatible with your boxes, I'll close this issue for now - feel free to re-open if you want another crack at it, cheers

robertwigley commented 4 months ago

@jimb0b Thanks for the link to this. I've got an All For One remote (this one) arriving later today. I came to the conclusion it was Arris vs Humax codes. However, @davepearson1628 has both an Arris and Humax box, so I'm not so convinced now. I will see what I come up with once the remote arrives. It'll probably be tomorrow before I get a chance to start looking at it.

jimb0b commented 4 months ago

@robertwigley yeah it's super strange! I'm not sure why it doesn't work, especially as the literature online says the code 1582 should work. I'd be interested to see your results!

robertwigley commented 4 months ago

I'll definitely report back whether I get it working or not. Stay tuned for an update in the next few days.

robertwigley commented 3 months ago

I have made some progress... sort of. The One For All URC1210 I ordered does not work with the Virgin 360 box, so that is going back to Amazon. It appears I need a remote that has a 2 deviice capability i.e. does Satellite/Set-Top boxes too. The URC1210 only does TVs! I should have checked more closely before ordering!

I'm going to pop to B&Q tomorrow (Monday) on my day off and pick up the URC7145 (Evolve 4), which should support the box. While researching on the support section of the One For All website, I found there are actually 10 different codes listed for Ziggo, inlcuding the magic 1582 that you used @jimb0b.

2443, 2589, 2015, 3451, 3477, 2762, 2942, 1582, 2401, 0253

Source PDF here.

I will update with more information as and when I have the new remote and have done some testing.

@davepearson1628 The Panamalar arrived late this afternoon. I have only spent a bit of time on it (as this is my fallback and would rather get the Broadlink working, which I haven't been able to go any further with yet), but I have not been able to get this working at all yet. I tried all the Ziggo code sets and all the ones for Virgin Media from the Tuya app. The box didn't respond to any of them. Maybe I am doing something wrong in the setup. I'm going to leave this for now and probably only come back to it if I can't get the Broadlink to work.

robertwigley commented 3 months ago

So I picked up the One For All URC7145 (Evolve 4) remote and have managed to get that working with the box, using the same code 1582. None of the other codes worked.

I have tried learning from the One For All remote, but, despite multiple learnings, have not managed to replicate them working on the box, other than once for "pause", but it only worked once and then not again.

Either the Virgin box is very finicky, or I am doing something wrong while trying to learn the codes. I've only learnt RF codes before with my Broadlink RM4 Pro, so I'm not sure if I am pointing the controller at the correct part of the RM4 Mini (as it requires line of sight) or whether I am the correct distance away from it etc. I don't think it should really matter though.

Pigeon steps...

jimb0b commented 3 months ago

Hi @robertwigley - yeah, I found those codes you mentioned above but had the same outcome (the remote wouldn't understand most of the codes except 1582 - I did also find some arris codes, but only code "2015" was accepted by the remote but as discussed above this did not work for Dave either).

Are you training through HA, and if so, can you check what the JSON file codes look like? I'm curious to know if you see the same codes as I had generated. I wonder if this is just terrible bad luck, and the specific virgin hardware models you both own just do not work with code 1582? :(

This has reminded me at least to update the readme on this project to clarify this was trained/works on a specific HW model so as not to be misleading for other users, will do so shortly.

robertwigley commented 3 months ago

@jimb0b The funny thing is the box works fine with the One For All (OFA) remote setup with code 1582. No problems with it at all. Totally consistent and works every time, just as if it were the OEM controller. Well, other than a few of the buttons not having functions, but that's to be expected as there are more/different buttons on the OFA than the OEM.

So the problem is not with code 1582 of the OFA remote, but with learning the codes from it to the Broadlink in HA.

Yes, I am learning through HA. Not a single code matches yours. I did learn them all, before wiping and starting again. Additionally, I have learnt a few codes, power, pause and play a number of times and am concentrating on these, as these are the ones I most want to get working. Every time I learn the code it gives a different Base64 string.

Here's what I have stored currently, none of which work (apart from pause, that one time).

{
  "version": 1,
  "minor_version": 1,
  "key": "broadlink_remote_a043b0706cb9_codes",
  "data": {
    "virgin_tv_360": {
      "power": "JgAmAAwIBgkFFQUJBQkFGgUJBQoFCQUUBRUFDgcTBQkFCQUaBQkFAA0F",
      "play": "JgBwAAwIBgkFFAUKBQkFGgUJBQoFCQUJBRUFDwUUBQkFFAcXBwgGAAt8DggVEwUJBQoFGQUKBQkFCgUJBRQFDwUUBQoFFAUaBQkHAAt6DggGCQUUBQoFCQUaBQkFCgUJBQkGFAUPBRQFCQUUBRoGCAYADQU=",
      "pause": "JgBMAA0IBQkFFQQKBQkFGgUJBQoFCQUUBRUFDwUUBQkFGgYHBwgGAAt8DggGCQUUBQkGCQUaBQkFCQUKBRQFFAUPBRQFCgUZBwcGCQUADQU="
    }
  }
}

I suspect if you learnt e.g. play again and stored it with a different name e.g. play_new (so as not to overwite the existing one), you will also find that you get a different Base64 string.

I think the next thing to do is test a different remote for e.g. my TV and see if that learns the same code each time, or whether it depends how quickly you press the button, how far you are from the Broadlink etc as to what it learns. Something for tonight. I am not giving up on this yet, as there must be a way to get it working.

jimb0b commented 3 months ago

🤔 Interesting. Thanks for the snippet, I wonder if they would work against my virgin box..will give that a go a little later and report back for extra troubleshooting points!

robertwigley commented 3 months ago

I think I will also try learning the codes in the Broadlink app and see if that works (i.e. whether it's related to how HA is talking to the Broadlink). The problem is not with code 1582 of the OFA remote, but with learning the codes from it to the Broadlink in HA, so this seems like a good thing to test to see if it's the Broadlink in general with these specific codes, or is just when trying to learn though HA, or if it's something about how I am learning them, distances, or IR interference in my room...

jimb0b commented 3 months ago

@robertwigley - just tested your codes. They work with my hardware! (I tried both pause and power, model is HUMAX-EOS1008R-V003). Looks like this might confirm a HW incompatibility with other models :(

robertwigley commented 3 months ago

@jimb0b Hmm. This is very strange. If the OFA remote is working fine with both our models, why do the learnt codes not work consistently between them and why are the Base64 strings different each time. Another thought I had was I may try learning them in a darkened room in case other light sources are interferring with learning the exact code. There has to be a learnt code for each button that will work between models, as the OFA remote works.

robertwigley commented 3 months ago

@jimb0b What distance and placement is your Broadlink in relation to the Virgin box? I wonder if it's a distance issue, not with learning, but with sending from the the Broadlink to the box. Mine is currently the other side of the room in direct line of sight of the Virgin box, about 3m away.

jimb0b commented 3 months ago

@robertwigley my device is in the corner of my lounge at maybe a 45 degree angle to the box? And approx 3m away as well. I would say the Broadlink has a very wide range though, as it's able to also control some IR LED candles in the room too which are high up on shelves / on the floor etc.

This is super strange though I agree, it doesn't make sense why the OFA remote works for us both but not the codes via broadlink for yourself or @davepearson1628 - it almost feels like there is some sort of built in "security" whereby the box would deny further RF codes if it is not received by the official remote/OFA, but even still - a signal is a signal, I'd expect it to be the same frequency for both OFA and Broadlink.

The only other differentiator I can think of would be the length of time the signal is sent for from the OFA/broadlink device, maybe it's worth playing about with the "hold seconds" setting to see if your boxes require the signal to be sent for a certain length of time to be accepted by the virgin box? This may explain why you're seeing sporadic behaviour too?

Alternatively, I'm not sure what the communication method is the official remote uses (I assume it's either bluetooth or RF) - but wondering if you could investigate training on those comms methods instead?

robertwigley commented 3 months ago

I agree it really doesn't make sense at the moment. The logical, in my mind, explanation is that the Broadlink is not learning the exact signal sent by the OFA remote and your box is just less fussy about it not being entirely accurate to the original OFA signal.

I will try fiddling with the hold seconds. What is yours set to? 1 second?

I think the OEM remote pairs via infrared and then switches to Bluetooth once paired. I don't believe there is any way of learning codes from it, which is why the OFA remote is needed.

robertwigley commented 3 months ago

On a side topic, I got some of the buttons on the Panamala to work, but not the power one. I asked @davepearson1628 if his power button worked and he said it did, but now it isn't! Also strange.

jimb0b commented 3 months ago

Re: hold seconds, I'm not setting anything specific for that so it'll be using whatever the default is.

robertwigley commented 3 months ago

@jimb0b @davepearson1628 This is interesting. I don't know if either of you came across this already?

https://www.reddit.com/r/broadlink/comments/t24vcq/broadlink_wont_learn_virgin_remote

It seems that you can learn codes from the OEM remote, if you unpair the remote from the box first. It sounds like doing that puts the remote back into infrared mode.

So unpair OEM remote, learn codes from it (rather than OFA remote), re-pair OEM remote. Something else to try...

UPDATE: Hmm. I may have jumped the gun. This appears to be referring to the V6 rather than 360. Same boxes, different software. So may or may not work. Still worth a try though I think.

jimb0b commented 3 months ago

Hmm yeah, good luck!

Also this is completely off topic but I wasn't sure where better to post this - if you do get the codes working, be sure to learn the "list" button on the OFA remote. I discovered this button takes you straight to the recordings menu - much more user friendly than having to navigate the home screen I find!

robertwigley commented 3 months ago

@jimb0b @davepearson1628 OK, so this is interesting. Still early stages on this, but I finally got the two main buttons I want to simulate, Power and Play/Pause, to work.

The Play button doesn't do anything on my OFA remote, while the Pause button exhibits the same behaviour as the Play/Pause button on the OEM remote. Additionally, the List button doesn't take me to the Recordings menu; it doesn't seem to do anything on my box.

The trick seems to be some combination of doing the learning in a darkened room (curtains closed), holding the remote further away (~1m) from the Broadlink (rather than about ~15cm previously) and pressing for ~1 second (rather than an ultra fast tap or a longer ~2 second hold I had tried previously) the button on the OFA remote.

Distance from the box when sending the commands does not seem to be an issue. I am therefore moving towards accepting my hypothesis that the issue is with accurately learning the commands with some boxes being more finicky than others about how accurate the command that's been learned is.

I will try and learn the rest of the buttons in the same way and hopefully end up with a full set that work.

FWIW, these are the learned codes that work on my box. It would be interesting to see if these work for both of you or not.

"virgin_tv_360": {
  "power": "JgByAA0IBQoFFAUJBQoFGQUKBQkFCgQVBBUFDwUUBQoECgUaBAoFAAt9DQkFCQUUBQoFCQUaBQkFCgUJBRQHEwQPBRUFCQUJBRoFCgQAC30OCAYJBRQFCQUKBRoECgUJBQoEFQUUBQ8FFAUKBAoFGgUJBQANBQ==",
  "play_pause": "JgBMAAwJBQkFFQUJBQkFGgUKBQkFCQUKBRQFDwUUBQkFGgUJBgkFAAt8DggGCQUUBQoFCQUaBQkFCgUJBQkFFQUPBBUFCQUaBQkFCgQADQU="

It feels like progress, but we will see how easy it is to replicate the learning for the other buttons.

jimb0b commented 3 months ago

@robertwigley thanks, will give those a go tomorrow and let you know!

Re: list/recordings button. My mistake, I forgot there was an extra step I followed, you can find the details here https://www.avforums.com/threads/virgin-360-my-recordings-my-shows-a-button-to-go-directly-to-them.2347467/ fingers crossed 🤞

robertwigley commented 3 months ago

@jimb0b Thanks. I'm really interested to know if we can find a set of codes that works for all three of us.

I'm just trying to replicate powering the box on/off with the TV I had previously with the integration before trying to learn the rest of the buttons. I'm hoping that a smartplug with power monitoring dialed in will allow me to tell whether the box is on or not. It seems to draw 10-11W when off, with not a lot of change when on, so this may be tricky/impossible. I gave up on it when I tried it about a year and a half ago, but then found the integration which provided this functionality, so I never needed to pursue it further. However, I have since switched to Zigbee2MQTT from ZHA, which allows you to configure the reporting intervals, so I am hoping to have more luck this time.

jimb0b commented 3 months ago

Good news @robertwigley - your codes work with my HW too!

davepearson1628 commented 3 months ago

I'll try testing them with my Broadcom tonight on both my Arris and Humax TV360 Boxes.

On reading some of your earlier comments, I wonder if I had my devices too close together when I was trying to capture the IR Codes?

robertwigley commented 3 months ago

@jimb0b That's good news. Hopefully these will work for @davepearson1628 too. Yes, it's quite possible that they were too close, or multiple factors contributing to them not working when captured. There does seem to be a knack to learning the codes so they work. Hopefully, I will be able to replicate it consistently for all buttons as I try and learn the rest of the codes in the same manner.

On a side note, in case either of you, or anyone else, wants to do this too, I got on/off state for the box working reliably with this power monitoring plug and a template binary sensor:

# Virgin TV 360 binary sensor
- name: Virgin TV 360
  icon: mdi:set-top-box
  state: >-
    {%- if states('sensor.virgin_tv_360_power') | float >= 12 -%}
      on
    {%- else -%}
      off
    {%- endif -%}

With these settings for Reporting applied in Zigbee2MQTT:

Endpoint | Cluster | Attribute | Min rep interval | Max rep interval | Min rep change
2 | haElectricalMeasurement | activePower | 5 | 3600 | 10

Note that although these are the defaults in Z2M, you need to click Apply to send them to the plug.

I also created a mini media player look alike entry on my dashboard, using multiple entity row to semi-replicate (other than the button colour and spacing it looks similar the mini media player card above it) what I had with the integration.

image

You need to create input button helpers and an automation to do this:

# Virgin TV 360 button actions
- id: FF68E56E-6420-46AD-AF54-79F44A086B7C
  alias: "Audio-Visual: Virgin TV 360 button actions"
  trigger:
    # Power
    - platform: state
      entity_id: input_button.virgin_tv_360_power
      id: power
    # Play/Pause
    - platform: state
      entity_id: input_button.virgin_tv_360_play_pause
      id: play_pause
    # Fast Forward
    - platform: state
      entity_id: input_button.virgin_tv_360_fast_forward
      id: fast_forward
    # Rewind
    - platform: state
      entity_id: input_button.virgin_tv_360_rewind
      id: rewind
  action:
    - choose:
        # Power
        - conditions:
            - condition: trigger
              id: power
          sequence:
            - service: remote.send_command
              target:
                entity_id: remote.broadlink_rm4_mini
              data:
                device: virgin_tv_360
                command: power
        # Play/Pause
        - conditions:
            - condition: trigger
              id: play_pause
          sequence:
            - service: remote.send_command
              target:
                entity_id: remote.broadlink_rm4_mini
              data:
                device: virgin_tv_360
                command: play_pause
        # Fast Forward
        - conditions:
            - condition: trigger
              id: fast_forward
          sequence:
            - service: remote.send_command
              target:
                entity_id: remote.broadlink_rm4_mini
              data:
                device: virgin_tv_360
                command: fast_forward
        # Rewind
        - conditions:
            - condition: trigger
              id: rewind
          sequence:
            - service: remote.send_command
              target:
                entity_id: remote.broadlink_rm4_mini
              data:
                device: virgin_tv_360
                command: rewind

and use the following for the dashboard:

- type: entities
  entities:
    - type: custom:multiple-entity-row
      entity: binary_sensor.virgin_tv_360
      name: Virgin TV 360
      show_state: false
      state_color: true
      entities:
        - entity: input_button.virgin_tv_360_rewind
          name: false
          icon: true
          tap_action:
            action: call-service
            service: input_button.press
            service_data:
              entity_id: input_button.virgin_tv_360_rewind
        - entity: input_button.virgin_tv_360_play_pause
          name: false
          icon: true
          tap_action:
            action: call-service
            service: input_button.press
            service_data:
              entity_id: input_button.virgin_tv_360_play_pause
        - entity: input_button.virgin_tv_360_fast_forward
          name: false
          icon: true
          tap_action:
            action: call-service
            service: input_button.press
            service_data:
              entity_id: input_button.virgin_tv_360_fast_forward
        - entity: binary_sensor.virgin_tv_360
          name: false
          icon: mdi:power
          state_color: true
          tap_action:
            action: call-service
            service: input_button.press
            service_data:
              entity_id: input_button.virgin_tv_360_power
  state_color: true
robertwigley commented 3 months ago

@jimb0b Just a thought. I'm not sure if it's needed to read the new codes in, but did you reload the Broadlink integration and/or restart HA when testing my codes? I'm just concerned that it maybe still had your codes in memory and was using them still, making us mistakenly think my codes are working for you.

jimb0b commented 3 months ago

@robertwigley yep definitely reloaded, and it uses a different device name too so I was confident I was using your codes. I also purposefully tried a typo for one of the commands ( i.e. "play_pause_x" to check it would error due to it being an unknown name, which it did.

robertwigley commented 3 months ago

@jimb0b Great. That's reassuring to know. I will try and learn the rest of the buttons tonight and post my codes for those once I have done so.

davepearson1628 commented 3 months ago

@robertwigley I've just tested your power and play_pause codes on my Humax TV360 and can confirm that they both worked with my Broadlink RM4Pro. I won't get a chance to test on the Arris box tonight, but I will try to tomorrow. I'll also try the RM4C Mini too.

It would be interesting to know if your codes match the ones that @jimb0b had working before? Dave.

robertwigley commented 3 months ago

Thanks @davepearson1628. That's good to know. Unfortunately, I am struggling to replicate the learning I did for those two buttons (even though I am doing everything the same), for the other buttons tonight. I've tried a number of times for a few of them, but they fail to work when tested. I am not going to give up and will keep trying, but it's time consuming, so it's likely to take me a few days.

Oh, and my codes don't match the ones that @jimb0b had, but they do work for him.

davepearson1628 commented 3 months ago

@robertwigley Thanks for the work you're putting in for this :-) good luck with getting the remaining codes to work.

I did read back and spotted in an earlier post that your codes didn't match his.

robertwigley commented 3 months ago

@davepearson1628 No worries. I want to get it working, not only for me, but I somehow doubt that the integration is going to be fixed, so it'll be good to provide another solution for others in the same boat.

Please do let me know about your testing with the Arris box, when you are able to, as that will tell me whether it's worth trying to learn all the codes, or just the ones I need. If they don't work on your Arris box, then it more or less tells us that they are far to finicky to accept "generic" codes and anyone wanting to do this is probably going to have to learn them and test them themselves.

davepearson1628 commented 3 months ago

@robertwigley I'm happy to confirm that your codes work on both my TV360 boxes

robertwigley commented 3 months ago

@davepearson1628 Thanks for testing and confirming. That gives me the motivation to try and learn all buttons and that it is possible to learn codes that should work for most people. It's just not easy to learn them.

davepearson1628 commented 3 months ago

I'll be very happy to test whatever codes you are able to generate, the broadcom devices are likely to be easier to live with than the Panamalar devices.

robertwigley commented 3 months ago

Thanks. I had to give up last night as I just didn't seem to be getting anywhere and had other things I needed to do, but will slowly chip away at this over the next few days.

Yes, and Broadlink is local control unlike the Panamalar.

robertwigley commented 3 months ago

@jimb0b @davepearson1628 It's taken ages, but I think I have finally cracked the "knack" of learning these codes, with the OFA remote I have at least. The trick seems to be to hold the remote almost vertically with the back of it facing the Broadlink at approximately 1m away and press the buttons firmly but fairly briefly. I think the IR signal must be emitted more or less from the base of the remote, rather than the front end (as you would normally expect).

Even so, it has taken multiple attempts for some buttons, even after "cracking the technique."

Anyway, I have a complete set of working codes for my box now. Note that I have not included all the buttons that @jimb0b has in his original listing as I found that a number of them didn't actually do anything on the OFA remote, probably becuase they don't exist on the OEM one. The only ones that surprised me slightly were the Volume buttons not doing anything, but then the OEM remote learns your TV volume commands, so perhaps it's not that surprising after all. I have tested every code, and they all seem to behave as expected. The only ones I can't be sure about are the coloured buttons, as I don't actually know what these do on the OEM remote either, so I wasn't able to find a way to test them.

{
  "version": 1,
  "minor_version": 1,
  "key": "broadlink_remote_XXXXXXXXXX_codes",
  "data": {
    "virgin_tv_360": {
      "power": "JgByAA0IBQoFFAUJBQoFGQUKBQkFCgQVBBUFDwUUBQoECgUaBAoFAAt9DQkFCQUUBQoFCQUaBQkFCgUJBRQHEwQPBRUFCQUJBRoFCgQAC30OCAYJBRQFCQUKBRoECgUJBQoEFQUUBQ8FFAUKBAoFGgUJBQANBQ==",
      "play_pause": "JgBMAAwJBQkFFQUJBQkFGgUKBQkFCQUKBRQFDwUUBQkFGgUJBgkFAAt8DggGCQUUBQoFCQUaBQkFCgUJBQkFFQUPBBUFCQUaBQkFCgQADQU=",
      "rewind": "JgBuAA0IFBQFCQUKBBoFCgUJBQkFCgUUBQ8FFAUJBhQFFAUPBQALfA4IFRMFCQUKBRoFCQUJBQoFCQUUBQ8FFAUKBRQFFAcNBQALfgwJBQkFFAUKBQkFGgUJBQoFCQUJBhQFDwUUBQkFFAUVBQ4GAA0F",
      "fast_forward": "JgB0AA0IFBQFCQUJBhkFCQUKBQkFFQQVBQ8FFAUJBRQFFQYHBwALew4IBgkFFAUKBQkFGgUJBQoFCQUUBRQFDwUVBgcHEwUUBQoFAARzCwAG/g4IBgkFFAUJBQoFGQUKBQkFCgUUBRQFDwUUBQkGFAUUBQkFAA0F",
      "record": "JgBwAAwIFRMFCQYJBRoFCQUJBQoFFAUUBQ8FFAUKBRkHDQUaBgALew4IBgkFFAUJBgkFGgUJBQkFCgUUBRQFDwUUBQoFGQUPBRoGAAt8DQgGCQUUBQkGCQUaBQkFCQYJBRQFFAUPBRQFCgUZBg4FGgUADQU=",
      "channel_up": "JgBMAA0IBQkFFQUJBQkFGgUJBQoFCQUKBRQFDwUUBQkFFQUJBQkFAAt9DgcHCAYUBQkFCQUaBQkGCQUJBQoFFAUPBRQFCQUUBgkFCQUADQU=",
      "channel_down": "JgBMAA0IBQkGFAUJBQkGGQUKBQkFCQUKBRQFDwUUBQkFFQUJBQ8FAAuEBggGCQUUBQkGCQUaBQkFCQUKBQkFFAUPBRQFCgUUBQkFDwUADQU=",
      "1": "JgBMAAwIBgkFFAUKBQkFGgUJBQoFCQUJBhQFDwQVBQkFCgUJBQ8FAAt8DggFCgUUBQkFCgUZBQoFCQUKBQkFFAUPBRQFCgUJBQkFDwUADQU=",
      "2": "JgBKAA0IBQkFFQUJBQkGGQYJBQkFCQUVBRQFDwUUBQkFCgUJBRQFAAt8DgkUFAQKBQkFGgUJBQoFCQUUBRQFDwUVBQkFCQUKBRQFAA0F",
      "3": "JgCWAAYJBRQFCgUJBRoFCQUJBgkFCQUVBQ4FFQQKBQkFCgUZBQALfQ4HBgkFFQUJBQkFGgUJBQoFCQUKBRQFEAQUBQkFCgUJBRoFAAt8DggGCQUUBQkFCgUZBQoFCQUKBAoFFAUPBRQFCgUJBQkFGgUAC3wOCAYJBRQFCgUJBRoFCQUJBgkFCQUVBA8FFQUJBQkFCgUZBQANBQ==",
      "4": "JgBKAAYJBRQFCQYJBRoECgUJBQoFCQUUBQ8FFAUKBQkFDwUJBQALfQ4IBQkFFQUJBQkGGQUJBQoFCQUKBRQFDwUUBQkFCgUPBQkFAA0F",
      "5": "JgBMAAwIBgkFFAUJBgkFGgUJBQkFCgUUBRQFDwUUBQoFCQUPBQ8FAAt8DggGCQUUBQkFCgUZBQoFCQUJBRUFFAUPBRQFCQUKBQ8FDgUADQU=",
      "6": "JgBMAAwIBgkFFAUJBQoFGgUJBQkFCgUJBRQFDwUUBQoFCQUPBRQFAAt8DggGCQUUBQoFCQUaBQkFCgUJBQkFFQUPBRQFCQUJBg4FFQUADQU=",
      "7": "JgBMAAwIBgkFFAUJBQoFGQUKBQkFCgUUBRQFDwUUBQkFCgUPBRkHAAt6DggGCQUVBAoFCQUaBQkFCgUJBRQFFQUOBhQFCQUJBQ8FGgUADQU=",
      "8": "JgBMAA0IBQkFFQUJBQkFGgUJBQoFCQUKBBUFDwUUBQkFCgUUBQkFAAt8DggGCQUVBQkFCQUaBQkFCgUJBQkFFQUPBRQFCQUKBRQFCQUADQU=",
      "9": "JgBwAAwIFRMFCQUKBRkHBwYJBQkFFQUUBQ8FFAUJBQoFFAUPBQALfA4IBgkFFAUJBQoFGQUKBQkFCgUUBRQHDQUUBQkGCQUUBQ8FAAt9DQgGCQUUBQkGCQUaBQkFCQUKBRQFFAUPBRQFCgUJBRQFDwUADQU=",
      "0": "JgBMAAwIBgkFFAUJBgkFGgUJBQkFCgUUBRQFDwUUBQoFCQUKBQkFAAt8DggGCQUUBQkGCQUaBQkFCQUKBRQFFAUPBRQFCgUJBQkFCgUADQU=",
      "guide": "JgBIABUTBQoFCQUaBQkFCQYJBQkFFAUPBRUFGQcHBhkFCgUAC3wOCAYJBRQFCQUKBRkFCgUJBQkGCQUUBQ8FFAUaBQkFGgUJBQANBQ==",
      "info": "JgBwAAwIBgkFFAYJBQkFGgUJBQoFCQUJBRUFDwQVBRkFCgUUBRoGAAt8DQgGCQUUBQkFCgUZBQoFCQUJBgkFFAUPBRQFGgUJBRQHGAcAC3sNCBUTBQoFCQUaBQkFCgUJBQkFFQQPBRUFGQcHBhQFGgYADQU=",
      "home": "JgBuAAwIBgkFFAUJBQoFGQUKBQkFCgUUBRQFDwUUBRoFDwUUBRoFAAt8DggVEwUJBQoFGQUKBQkFCQUVBRQFDwUUBRoGDQYUBRkHAAt7DQgVFAQKBQkFGgUJBQoFCQUUBRUFDgYUBRkHDQUUBRoFAA0F",
      "up": "JgBMAA0IBQkGFAUJBQoEGgUKBQkFCQUVBRQFDwUUBQ8FDwUUBQkFAAt9DQgGCQUVBQkFCQUaBgcHCQUJBRQGFAUOBRUFDwUOBRUFCQUADQU=",
      "down": "JgBMAAwIBgkFFAUJBQoFGgUJBQkFCgUJBRQFDwUUBQ8FDwUUBQ8FAAt8DggGCQUUBQoFCQUaBQkFCgUJBQkGFAUPBRQFDwUOBRUFDwUADQU=",
      "left": "JgBKAAwIFRMFCgUJBRoFCQUKBQkFCQUVBQ4FFQUPBQ4FFQUUBQALfA4IBgkFFAUJBgkFGQUKBQkFCgUJBRQFDwUUBQ8FDwUUBRQFAA0F",
      "right": "JgBMAAwIBgkFFAUKBQkFGgUJBQkFCgYTBRQFDwUUBQ8FDwUUBxgFAAt9DQgGCQUUBQkFCgUaBQkFCQUKBRQFFAUPBRQFDwUPBRQFGgUADQU=",
      "ok": "JgBMAAwIBgkFFAUKBQkFGgUJBQkFCgUUBRQFDwUUBQ8FDwUaBQkFAAt9DQgGCQUUBgkFCQUaBQkFCgUJBRQFFQUOBRUGDQUPBRoFCQUADQU=",
      "back": "JgByAAwIBgkFFAUJBgkFGQUKBQkFCgUJBRQFDwUUBQ8FCgUZBQ8FAAt8DggGCQUUBQoFCQUaBQkFCgUJBQkFFQQPBhQFDwQKBRoFDgUAC30OCAUJBRUFCQUJBRoFCQYJBQkFCgUUBQ8FFAUPBQkFGgUPBQANBQ==",
      "mute": "JgByAAwIBgkFFAUJBQoFGQYJBQkFCgUJBRQFDwUUBQoFCQUaBQ8FAAt8DggGCQUUBQkFCgUZBQoFCQUJBgkFFAUPBRQFCgUJBRoFDgUAC30OCAYJBRQFCQUKBBoFCgUJBQkFCgUUBQ8FFAUJBQoFGgUOBQANBQ==",
      "red": "JgCWAAwIFRMFCQUKBRkGCQUJBQoFCQUUBQ8FFAUPBRQFGgUPBQALfA4IBgkFFAUJBQoFGgUJBQkFCgUJBRQFDwUUBQ8FFAYZBQ8FAAt8DggGCQUUBQoFCQUaBQkFCQUKBQkFFQUOBRUFDgUVBRkFDwcAC3oOCAYJBRQFCgUJBRoFCQUKBQkFCQUVBQ8EFQUPBRQFGQYOBQANBQ==",
      "green": "JgByAAwIBgkFFAUKBQkFGgUJBQoFCQUUBRQFDwUVBA8FFQUZBxIGAAt8DggFCQYUBQkFCQYZBQkFCgUJBRUEFQUPBRQFDwUUBRoGEwUAC3wOCAYJBRQFCQUKBRoECgUJBQoFFAUUBQ8FFAcNBRQFGgUUBQANBQ==",
      "yellow": "JgByAA0IBQoFFAUJBQoFGQUKBQkFCQYJBRQFDwUUBQ8FFAcYBhkGAAt7DggFCgUUBQkFCgUZBQoFCQUJBQoFFAUPBRQFDwUUBRoFGgYAC3sOCAUKBRQFCQUKBRkFCgUJBQkFCgUUBQ8FFAUPBRQFGgYZBgANBQ==",
      "blue": "JgByAAwIBQkGFAUJBQkFGgUKBQkFCQUKBRQFDwUUBQ8FGgYHBwgGAAt8DggFCQUVBQkFCQUaBQkFCgUJBQoFFAUPBRQFDwUZBQoFCQUAC30NCAYJBRUFCQUJBRoFCQUKBQkFCQUVBQ8FFAUPBRkFCgUJBQANBQ=="
    }
  }
}

Please can you both test these codes when you get a chance, as it would be good to know if they are all working for you both too, or whether I need to try relearning any to find a "universal" one that works.

Speaking of which, having read the Broadlink documentation thoroughly to make sure I wasn't doing anything wrong, I discovered you can batch learn commands by putting them in a script and then following the prompts shown in HA as Persistent Notifications telling you which button to press. It massively speeds up the process of learning and/or relearning multiple commands. In case anyone else needs it in future, here's the script to learn all the buttons:

learn_virgin_tv_360_commands:
  sequence:
    - service: remote.learn_command
      target:
        entity_id: remote.broadlink_rm4_mini
      data:
        device: virgin_tv_360
        command_type: ir
        command:
          - power
          - play_pause
          - rewind
          - fast_forward
          - record
          - channel_up
          - channel_down
          - 1
          - 2
          - 3
          - 4
          - 5
          - 6
          - 7
          - 8
          - 9
          - 0
          - guide
          - info
          - home
          - up
          - down
          - left
          - right
          - ok
          - back
          - mute
          - red
          - green
          - yellow
          - blue
robertwigley commented 3 months ago

@jimb0b I just realised I forgot to follow your tip to learn the List button that takes you to Recordings.

"I forgot there was an extra step I followed, you can find the details here https://www.avforums.com/threads/virgin-360-my-recordings-my-shows-a-button-to-go-directly-to-them.2347467"

If all the other codes are working as expected for both of you, I will add this one.

davepearson1628 commented 3 months ago

@robertwigley I've tested everything except the colour buttons (I have no idea where they are used) and they all work perfectly - well done! Thanks to you and @jimb0b for all of your hard work on this.

robertwigley commented 3 months ago

@davepearson1628 Thanks for testing. That's really good to hear.

I have no idea where the colour buttons are used either.

robertwigley commented 3 months ago

@davepearson1628 I meant to ask, do they work for both your boxes?