-
Notifications
You must be signed in to change notification settings - Fork 64
Home
- Introduction
- Resources
-
FAQ
- I installed the Firemote Card, but I can't find it to add in my dashboard
- Why won't the volume, mute, and/or power buttons work from my Firemote card?
- Why don't any of the buttons on the Firemote work at all?
- How do I get a new kind of device added?
- Why isn't my Amazon Fire Device supported?
- Why do only some of the Firemote buttons for the Apps that came with my Apple TV work properly, while others don't?
- Can I make a dashboard button, voice command, or Home Assistant script that calls Firemote?
- I want a shortcut button for an app I use frequently, but it's not on the list. Can it be added?
- Why aren't there keyboard controls for Apple devices?
- Why do I still need the ADB integration when there is an Android Remote Integration?
- Which languages are currently supported?
- How do I report a problem, make a request, or talk about stuff?
- How can I contribute?
The Firemote project exists to accomplish two main goals:
- 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.
- 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.
For an excellent overview of how the card works, YouTube's @BeardedTinker created a fantastic video about this card!
Be sure to give him a sub and a like if you enjoy it!
Take a look at some quick videos showcasing how Firemote can control a
- Chromecast device: https://www.youtube.com/watch?v=LFnNewwKY8I
- Roku Device: https://youtu.be/aZ9F4V9dAfQ
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
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
UI(Home Assistant Dashboard) <--> cards
subgraph HA[Home Assistant]
direction LR
subgraph cards[Lovelace Cards]
direction TB
FiremoteCard[[Firemote Card]]
cardetc[[etc...]]
end
core[(core)]
subgraph Ints[Home Assistant Integrations]
direction TB
ADB[Android Debug Bridge]
ATR[Android TV Remote]
RI[Roku Integration]
AI[Apple TV Integration]
intETC[etc...]
end
end
cards <--> core
core <--> Ints
ADB <-.-> A
ATR <-.-> A
RI <-.-> A
AI <-.-> A
cardetc ~~~ ATR
A[/Media Player Device\]
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
Firemote has tested and currently supports devices from the following families of products. Click on a product family for more details.
- Amazon Fire
- Apple TV
- Chromecast
- NVIDIA Shield
- onn.
- Roku
- Xiaomi Mi
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 that is not listed as being supported, you can still use Firemote! There is an entity: none feature that makes this possible.
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.
The availability of applications can vary by region and from device to device. Currently, Firemote supports OVER 300 unique launcher buttons for applications, device input switching, and special device features. The majority of these options were added by community request.
The list of Firemote buttons is growing every day!
A complete list of over 280 app launcher buttons, more than 25 device specific input and function buttons, and their supported devices can be found here.
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.
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
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;
}
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
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.
- 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.
- 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
- 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
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.
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.
- 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.
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.
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.
No. As far as I'm aware there isn't a way to access a card's buttons, functions, or features by calling an outside script or using a voice command.
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.
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.
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.
If you want a quick tutorial to help you to enable ADB, I've created a YouTube video titled Enable ADB & USB Debugging just for you!
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 | ✓ | ✓ |
Estonian | et | ✓ | |
French | fr | ✓ | |
German | de | ✓ | |
Hebrew | he | ✓ | |
Lithuanian | lt | ✓ | |
Polish | pl | ✓ | |
Portuguese | pt | ✓ | ✓ |
Portuguese BR | pt-br | ✓ | ✓ |
Spanish | es | ✓ | ✓ |
Spanish (Latin America) | es-419 | (✓ in beta) | (✓ in beta) |
Swedish | sv | (✓ in beta) |
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.
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.
- 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