Skip to content
Doug Nelson edited this page Mar 24, 2024 · 103 revisions

HA Firemote - Wiki Home


Introduction

The Firemote project exists to accomplish two main goals:

  1. To provide a Home Assistant card that not only visually matches the physical remote control that shipped with a media player device, but also to allow the flexibility to configure the remote buttons in a way that works best for each individual user.
  2. To save its users from the time and hassle of researching, programming, and testing Home Assistant commands to fully control their devices through Home Assistant by doing that work for them.

If you're new to Firemote, and you haven't looked through the README.md file yet, I recommend doing that first before opening a new discussion or issue. If you cannot find the answer you are looking for, then the resources below may be useful for you.

Take a look at some quick videos showcasing how Firemote can control a

Sprechen Sie Deutsch? If German is your native language, you might find this Youtube video to be helpful: https://www.youtube.com/watch?v=GdFiCbyN4Lk

How Does Firemote Send commands to my devices?

Firemote isn't an integration, it is a Home Assistant (lovelace) card. This card is designed to interact with your media player devices in the most efficient way possible. Because it is not an integration, Firemote requires Home Assistant integrations to work. Any function that Firemote is capable of preforming could also be done without the Firemote card through Home Assistant commands and scripts.

flowchart LR
  A[/Media Player Device\]
  subgraph HA[Home Assistant]
    direction LR
    subgraph Ints[Integrations]
      direction LR
      ADB[Android Debug Bridge]
      ATR[Android TV Remote]
      intETC[etc...]
    end
    core[(core)]
    subgraph cards[Cards]
      direction TB
      FiremoteCard[[Firemote Card]] 
      cardetc[[etc...]]
    end
  end
  Ints <--> core
  core <--> cards
  A <--> ADB
  A <-.-> ATR
  ATR ~~~ cardetc
  cards <--> UI(Home Assistant Dashboard)
Loading

Resources

Forums

The Firemote Discussions page is a great place to look for answers to your questions.

Feel free to join us over at the FIREMOTE-GENERAL-CHAT Discord channel (English)

There are a few conversation threads on Reddit and on the Home Assistant Community Forum but if you want the attention of the project maintainer, the best option is to communicate here through GitHub.

If you believe you have found a bug, or would like to request a feature, then the Issues page is a great place to look first. If there isn't an open issue concerning your topic, then you may want to open a new issue.

If you would like to share the Firemote project with a friend or on a forum, you can post this link https://github.com/PRProd/HA-Firemote


Devices Officially Supported by Firemote

Firemote has tested and currently supports devices from the following families of products. Click on a product family for more details.

Devices Not Officially Supported by Firemote

If you own a device that IS in one of the families listed above, but that device does not yet have official Firemote support, then I invite you to open a new Device Support Request

If you own a device from a new device family that you want added to this project, cast your vote here!

Please keep in mind that in order to add your device request to the Firemote card, I will likely need to have the device in my hand for proper testing, or I will need to work closely with you (frequent communication) to work out the details. Each device seems to have its own unique characteristics.

Since it is expensive for me to personally purchase, evaluate, and develop support for all of your device requests, I've set up an Amazon Wish List (US) and an Amazon Wish List (DE) for any of you who are feeling incredibly generous and want to send me something that I don't already own.


App/Function Launcher Buttons

The availability of applications can vary by region and from device to device. Currently, Firemote supports OVER 200 unique launcher buttons for applications, device input switching, and special device features. The majority of these options were added by community request.

Existing Buttons

The list of Firemote buttons is growing every day!

A complete list of over 215 app launcher buttons, more than 20 device specific input and function buttons, and their supported devices can be found here.

Request a New Button

Do you have an app that you'd like to launch from Firemote, but it's not yet available? No problem! This is the BEST way to get your app shortcut added quickly:

  • Review the instructions for providing App Launcher Request details
  • Open a new App Shortcut Request from the issues tab.
  • After you have submitted the request, if the app on the platform you requested is available to download for free in the U.S. region, your request will likely be completed and added to the next Firemote release. If it is not available for me to easily download and confirm that it's working, I will contact you to request more information. Please do your best to reply in a timely manner. I don't like having too many issues open at once.

Create a Custom Button for Yourself

You are not limited to only using the launcher buttons that come with Firemote. Through YAML, you can define your own working buttons in one of two ways: defining a script or constructing a service call.

Example:

type: custom:firemote-card
entity: media_player.fire_tv_192_168_107_88
device_family: amazon-fire
device_type: fire_tv_4_series
compatibility_mode: default
custom_launchers:
  - friendly_name: flash the light
    label: FLASH
    image_path: https://upload.wikimedia.org/wikipedia/commons/2/28/Flash-outlined-thin-circular-button.svg
    color: red
    background: white
    script: flashthelablight
  - friendly_name: Red Lamp
    label: red
    icon: mdi:lamp
    color: red
    background: blue
    service: light.toggle
    target:
      entity_id: light.bedroom_lamp
    data:
      color_name: red
      transition: 2
      brightness_pct: 100
app_launch_1: customlauncher flash the light
app_launch_2: customlauncher Red Lamp
scale: '110'

YAML usage:

Key Value Required Description
friendly_name string yes This is the name that will appear in the GUI app selector dropdown
label string no The text that will appear on the button
icon mdi icon name no a valid mdi icon name
ex: mdi:lamp
image_path url no path to an image resource
color css color value no custom color for your text label or your mdi icon
ex: white
ex: '#ff0000'
background css color value no custom color for your button's background
ex: green
ex: '#ffffff'
script string yes if calling a script The name of your Home Assistant script
service string yes if not using a script The name of the Home Assistant service you want to call
target object yes if not using a script Define the entity for your service to act upon
data object no optional parameters for your service call

Once defined, a custom button can be assigned to a Firemote button location through the YAML config itself, or it can be selected through the Visual Editor dropdown

image



Create a Custom Button for the Community

If you are comfortable with Git and understand how to make a pull request, here is a list of the standards (subject to change) and the locations of where to make your code modifications.

Inside the const fastappchoices is a JSON structure that defines a button. Locate the section alphabetically where your button should go, and insert JSON in the following format:

  "{unique-lowercase-app-name}": {
      "button": "{value}",
      "friendlyName": "{value}",
      "className": "{value}",
      "deviceFamily": ["amazon-fire", "apple-tv", "chromecast", "nvidia-shield", "xiaomi"],
      "amazon-fire": {
          "appName": "{value}",
          "androidName": "{value}",
          "adbLaunchCommand": "{value}",
      "apple-tv": {
          "appName": "{value}",
      },
      "chromecast": {
          "appName": "{value}",
          "androidName": "{value}",
          "adbLaunchCommand": "{value}",
      },
      "nvidia-shield": {
          "appName": "{value}",
          "androidName": "{value}",
          "adbLaunchCommand": "{value}",
      },
      "xiaomi": {
          "appName": "{value}",
          "androidName": "{value}",
          "adbLaunchCommand": "{value}",
      },
  },
Key Value
button Single quoted, small in length SVG xml blob that represents the button's artwork
friendlyName Human readable friendly name that will appear in the UI app dropdown menu
className CSS class name that points to the css class describing the background (and/or other attributes) of this button
deviceFamily Array value containing one or more of the example values listed above. Any device family listed here MUST have a corresponding key below
appName The source: attribute found in Home Assistant developer tools when this app is active
androidName For Android Devices Only
The app_id: attribute found in Home Assistant developer tools when this app is active, typically the same as appName
adbLaunchCommand For Android Devices Only
Optional, but recommended for speed
An ADB shell command that will launch this app, typically beginning with adb shell am start -n followed by a value found from the output of following the directions here

Inside the static styles scroll down until you see app names listed, then continue scrolling to where your className would fit alphabetically in the list. Insert a small CSS block describing the background of the button

    .myButtonClassName {
        background: #ffffff;
    }


Simulate a Long Button Press event

The Firemote card does not currently have a way of sensing a "long press" on a remote button. However, using the built in custom launchers feature, you can use a custom command to simulate the pressing and holding of a button on a physical remote.

For example, In discussion #270 I provided this solution when asked how to simulate a long press on the Center/OK button of a Fire TV remote:

type: custom:firemote-card
entity: {YOUR ENTITY ID HERE}
device_family: amazon-fire
device_type: fire_stick_4k
compatibility_mode: default
custom_launchers:
  - friendly_name: Longpress Select
    label: L Select
    color: red
    background: white
    service: androidtv.adb_command
    target:
      entity_id: {YOUR ENTITY ID HERE}
    data:
      command: >-
        sendevent /dev/input/event4 1 28 1 && sendevent /dev/input/event4 0 0 0
        && sleep 1 && sendevent /dev/input/event4 1 28 0 && sendevent
        /dev/input/event4 0 0 0
app_launch_1: customlauncher Longpress Select

If you wanted to simulate the same long press event for a NVIDIA Shield device, check out this example:

type: custom:firemote-card
entity: {YOUR SHIELD ENTITY ID HERE}
android_tv_remote_entity: {YOUR SHIELD REMOTE ENTITY ID HERE}
device_family: nvidia-shield
device_type: shield-tv-pro-2019
compatibility_mode: default
custom_launchers:
  - friendly_name: Longpress Select
    label: L Select
    color: red
    background: white
    service: remote.send_command
    target:
      entity_id: {YOUR SHIELD REMOTE ENTITY ID HERE}
    data:
      num_repeats: 1
      delay_secs: 0
      command: KEYCODE_DPAD_CENTER
      hold_secs: 1
app_launch_1: customlauncher Longpress Select

Note: Long Press is not currently working properly in Apple TV devices. Read more about it here




CEC for Volume, Power, and other controls

If you need help or would like to read more about using CEC controls with Firemote, the Using CEC Controls page is a great place to start.



Known Limitations

Amazon Fire

  • The Android TV Remote Integration does NOT support Amazon Fire devices which means that certain Fire devices may experience a considerable lag between button presses and device reactions that cannot yet be overcome. The most heavily impacted devices are:
  • After a restart or other similar type of interruption, a button press on your physical remote control may be required to regain control with your Firemote.

Apple TV

  • A long press on the Home button was supported a while ago, but a recent OS update to the Apple TV seems to have temporarily broken that feature. A fix will hopefully be available soon. Read more about it here

Roku

  • Keyboard functionality was introduced in Firemote version v3.2.3 and requires Home Assistant version 2024.2.0 or newer.
  • The search feature does not work properly in with the Roku integration, so it cannot be added to the function options. Ticket #105827 was opened to report this issue, but there may not be a positive outcome.
  • The sleep button (sleep timer for compatible Roku TV devices) requires Home Assistant 2024.3.1 or newer



FAQ

I installed the Firemote Card, but I can't find it to add in my dashboard

This tends to happen when your Home Assistant UI needs a refresh. The best way to do this is through force clearing your Home Assistant cache and trying again.

Why won't the volume, mute, and/or power buttons work from my Firemote card?

In many cases, your remote control sends commands for volume, mute, and power to your TV or receiver using the IR emitter on the front of the physical remote control. These IR commands cannot be sent in a traditional Home Assistant setup.

If your player device AND the device they are connected to both offer CEC options, then activating CEC will allow the Firemote card controls to work as expected. Click here to learn more about how to configure CEC to work with your Firemote. Another option might be to control your devices (TVs, Receivers, etc.) using Button Overrides. If you can control those kinds of devices through Home Assistant, you can write a HA script and attach that script to a button on your Firemote.

Due to the way the Apple TV Home Assistant integration is built, an Apple TV style Firemote cannot properly simulate a "Mute" button press. A Button Override will be required in this case.

Why don't any of the buttons on the Firemote work at all?

  • If your Firemote used to work perfectly, and some or all of the buttons suddenly stopped working, it could be that all you need to do is press one button (any button) on your Fire TV device's physical remote control. After doing that step, try your Firemote again. This step most commonly fixes the issue in Amazon Fire devices after they are powered on, restarted, or updated.
  • Check your card configuration:
    • Is the correct Android device selected?
    • Is the correct Device Family selected?
    • Is the correct Device type selected?
    • If you are using it, is the correct matching Android TV Remote Entity selected?
    • Is Compatibility Mode set to Default?
  • If the Default Compatibility Mode is not working on your device, and you've checked every other step, slowly choose "event0", "event1", etc. and test your remote buttons under each mode. One of these will work.

I own a device that isn't a part of any of the existing device families, can it be added?

Yes! In fact, there is a poll in the discussion group called Vote for what gets added next where the community can help decide which new device family will gain Firemote support next. If your device isn't on the ballot, no problem! Just vote for "Other" and write the name of your device in the discussion thread below.

Why isn't the model of my Amazon Fire Device supported?

There are over 40 kinds of Amazon Fire devices, so it will take a while to gain properly tested support for all of them. If Firemote doesn't support your Amazon Fire device yet, you can still use Firemote! Simply choose a supported device that is similar to the one that you have (preferably a remote that looks the same as your physical remote), then you can test different compatibility modes to find out which one works the best.

The BEST option for everyone is if you would submit a request to have your device added! It's simple! Just open a new Amazon Fire TV Device Support Request, fill out the quick and easy form, and you're done!

Why do only some of the Firemote buttons for the Apps that came with my Apple TV work properly, while others don't?

Apple TV app shortcuts work simply by passing the name of the app to the apple tv remote entity. Firemote is built and tested against an environment that uses English as the primary language. In some scenarios, built-in Apple TV apps use language app specific names, which is why asking it to open the English version of that app's name does not work. In order to overcome this, I request that you open a new language support request so we can work together and make all of these buttons work as intended.

Can Firemote controls be exposed to scripts and voice commands?

No. As far as I'm aware, there isn't a way to glue a card's buttons and functions to a script or voice command.

I want a shortcut button for an app I use frequently, but it's not on the list. Can it be added?

Absolutely! Simply ask! Here's how: From the Issues menu, simply start a new App Shortcut Request. If you absolutely cannot wait, you can also build your own launcher button using YAML.

Why aren't there keyboard controls for Apple or Roku devices?

This is all a result of how the Firemote card sends commands. The Apple TV integration for Home Assistant does not include any keyboard or letter button press commands for Firemote to hook into. The Roku Integration claims to have support for a button literal (this is how it is referred to in the Roku API documentation) but I have been unable to make that work. Issue 105776 was opened in the Home Assistant Github repo, but the author has not responded yet.

Why do I still need the ADB integration when there is an Android Remote Integration?

You've likely noticed in the Firemote setup instructions that for several devices, the ADB integration is a requirement. The reason for this comes down to using the best tool for the job.

Between the two integrations, the Android Debug Bridge / Android TV Integration can do almost all of the things that Firemote requires to control Android based devices. The Android TV Remote Integration unfortunately does not currently have the same range of abilities and features. However, the benefit of adding the Android TV Remote Integration to your Firemote is that it can offer a level of speed and stability for some commands that just isn't possible through standard ADB commands.

Firemote always defaults to using the ADB integration, but will choose to use the Android TV Remote integration based on these factors:

  • If the Android TV Remote Integration has been configured
  • If using the Android TV Remote Integration would have a speed advantage over the ADB integration

The speed element is a big one! ADB commands can introduce a serious lag because of how they work, where the commands sent using the Android TV integration can be nearly instantaneous.

Which languages are currently supported?

The Firemote project is written in English. In an effort to make things easier for all users, language translations are being added to the Firemote visual editor through the help of the community. Additionally, Apple TV users who do not have their devices set to English might experience problems when trying to launch the Apple native apps with Firemote, so in those cases language translations are required.

Language Code Visual Editor Apple TV App Names
Danish da
Dutch, Flemish nl
English en
German de
Hebrew he
Lithuanian lt
Polish pl
Portuguese pt
Portuguese BR pt-br
Spanish es

If a language you speak is not currently supported, please consider opening a new language support request. If your language is supported, but you do not see it when using the Firemote visual editor, take a look at this article: Changing Your Home Assistant Language.

How do I report a problem, make a request, or talk about stuff?

Click on the Issues button at the top of this page, click 'New Issue', and select the appropriate category for your needs. You're also welcome to join or begin a new discussion if that suits your needs.

How can I contribute?

  • Did you install Firemote through HACS? If you did, and it was easy, visit the HACS Github Page and give their project a star! There should be thousands, but for some reason they don't have many. Give them some love!
  • Give this GitHub project a star! Not only does it help more people see it, but it also kicks off an automation that plays an encouraging little tune at my workstation. It's great!
  • Take a look at the current discussions board to see if anything is tagged with "Help Wanted".
  • Since it is personally expensive for me to purchase, evaluate, and develop integrations for all of your requests, I've set up an Amazon Wish List (US) and an Amazon Wish List (DE) for any of you who are feeling incredibly generous and want to send me something that I don't already own.
  • If you speak a language that's not currently in this list, you can open a new language support request
  • Buy Me A Coffee