Need More Information? Check out this project's Wiki page
Firemote is a custom Home Assistant card that is capable of controlling your media devices directly from any Home Assistant dashboard. The Firemote dashboard remotes are designed to look just like your physical remote controls, but they also contain TONS of customization options to choose from!
- A functioning version of Home Assistant
- HACS (not required, but it makes things easier)
- A supported device
- Amazon Fire Smart TV, Fire Stick, or Fire Cube
- Apple TV
- Chromecast
- NVIDIA Shield
- onn. Media Player
- Roku TV, and Media Player
- Xiaomi Mi Box S
- Other Android-based non-fire devices might work as well, but with limited (and unsupported) functionality
Which Amazon Fire device do I own?
Which NVIDIA Shield device do I own?
- Turn on ADB/USB debugging on your Amazon, onn., Shield, Xiaomi, Chromecast, or Android TV device - Video Tutorial
- (does not apply to Apple TV or Roku users)
- Connect your device to Home Assistant:
- Amazon, Chromecast, Shield, onn., Xiaomi, or Android TV users:
- Set up the Home Assistant Android Debug Bridge Integration and connect it to your device (REQUIRED in every setup why?)
- Optionally, for non Amazon Fire devices only, you may additionally choose to set up the Home Assistant Android TV Remote Integration and connect it to your device. (optional)
- Apple TV Users
- Set up the Home Assistant Apple TV Integration and connect it to your device. This will create a "Media Player" entity, and a "Remote" entity automatically.
- Roku Users
- Set up the Home Assistant Roku Integration and connect it to your device. This will create a "Media Player" entity, a "Remote" entity, and multiple others as well.
- Amazon, Chromecast, Shield, onn., Xiaomi, or Android TV users:
- Click on HACS and select Frontend
- In the lower right-hand corner, click the "+ EXPLORE & DOWNLOAD REPOSITORIES" button
- Search for, and click on "Firemote Card" then click the DOWNLOAD button in the lower right-hand corner
- You will be prompted to reload your browser. Click the RELOAD button to continue
- Turn on ADB/USB debugging on your Amazon, onn., Shield, Xiaomi, Chromecast, or Android TV device - Video Tutorial
- (does not apply to Apple TV or Roku users)
- Connect your device to Home Assistant:
- Amazon, Chromecast, Shield, onn., Xiaomi, or Android TV users:
- Set up the Home Assistant Android Debug Bridge Integration and connect it to your device (REQUIRED in every setup why?)
- Optionally, for non Amazon Fire devices only, you may additionally choose to set up the Home Assistant Android TV Remote Integration and connect it to your device. (optional)
- Apple TV Users
- Set up the Home Assistant Apple TV Integration and connect it to your device. This will create a "Media Player" entity, and a "Remote" entity automatically.
- Roku Users
- Set up the Home Assistant Roku Integration and connect it to your device. This will create a "Media Player" entity, a "Remote" entity, and multiple others as well.
- Amazon, Chromecast, Shield, onn., Xiaomi, or Android TV users:
- Download the contents of the dist/ directory, and place it in your Home Assistant /config/www directory
- Register the HA-Firemote.js file that you just installed as a new resource
- On any dashboard, click the +ADD CARD button
- Search by cards for "Firemote Card" and click on it - help: It's not showing up
- Under the Device Family dropdown, choose "Amazon Fire", "Apple TV", "Chromecast", "NVIDIA Shield", "onn.", "Roku", or "Xiaomi"
- Amazon, Chromecast, Shield, onn., Xiaomi, or Android TV users:
- Under Device Model, select the device model that you own. (Help: Which Amazon Fire or NVIDIA Shield device do I own?)
- Under the Android Debug Bridge Entity dropdown, a list of your Android Debug Bridge integration entities will appear. Select the one you wish to control.
- If you are setting up something other than an Amazon Fire device, select the Associated Android TV Remote Entity that points to the same device as your Android Debug Bridge entity. This step is not required, but it will greatly improve the speed and reliability of your Firemote card
- Apple TV Users
- Under Apple TV Device Model, select the device model that you own
- Under Apple TV Media Player Entity, select the Apple TV Media Player entity you wish to control
- Under Apple TV Remote Entity, select the Apple TV remote entity that is associated with the Apple TV Media Player Entity you chose in the previous step
- Roku Users
- Under Roku Device Model, select the device model that you own
- Under Roku Media Player Entity, select the Roku Media Player entity you wish to control
- Under Associated Roku Remote Entity, select the Roku remote entity that is associated with the Roku Media Player Entity you chose in the previous step
- Amazon, Chromecast, Shield, onn., Xiaomi, or Android TV users:
- Make any other optional changes to your card, then click "SAVE" Other options include changing the app launch buttons to apps that you use most often, or changing the style of your remote control to look like something completely different from what shipped with your device. You can even add names and adjust the size of your Firemote card too!
Click here to see the full gallery
Examples:
type: custom:firemote-card
entity: media_player.fire_tv_192_168_1_30
device_family: amazon-fire
device_type: fire_tv_4_series
compatibility_mode: default
app_launch_1: prime-video
app_launch_2: netflix
app_launch_3: hdmi_1
app_launch_4: youtube
hdmi_1: Cable
scale: 85
type: custom:firemote-card
entity: media_player.apple_tv_4k_2nd_gen
device_family: apple-tv
device_type: appletv-4k-gen2
compatibility_mode: default
apple_tv_remote_entity: remote.apple_tv_4k_2nd_gen
app_launch_1: apple-appstore
app_launch_2: apple-tv-arcade
app_launch_3: mlb
app_launch_4: nfl
visible_name_text: Game Room
name_position: top
button_overrides:
mute-button:
script: receiver_mute_script
type: custom:firemote-card
entity: media_player.android_tv_192_168_107_209
device_family: nvidia-shield
device_type: shield-tv-pro-2019
compatibility_mode: default
android_tv_remote_entity: remote.shield
scale: '100'
app_launch_1: netflix
app_launch_2: function-find-my-remote
app_launch_3: function-mute
Options:
Name | Type | Required | Options | Description |
---|---|---|---|---|
type | string | yes | custom:firemote-card | Type of the card |
entity | string | yes | any valid media player entity created in the Android Debug Bridge Integration, Apple TV Integration or the Roku Integration | entity_id |
device_family | string | yes | amazon-fire apple-tv chromecast nvidia-shield onn roku xiaomi |
Manufacturer Family |
android_tv_remote_entity | string | no | any valid entity created in the Android TV Remote Integration | entity_id Ignored in Apple TV and Roku configurations |
apple_tv_remote_entity | string | yes* | any valid remote entity created in the Apple TV Integration | entity_id * Required ONLY in Apple TV configurations |
device_type | string | yes | appletv-4k-gen3 appletv-4k-gen2 appletv-4k-gen1 appletv-gen4 appletv-gen3 appletv-gen2 appletv-gen1 chromecast-4k fire_tv_toshiba_v35 fire_tv_4_series fire_tv_jvc-4k-2021 fire_tv_cube_third_gen fire_tv_cube_second_gen fire_tv_cube_first_gen fire_tv_stick_4k_max_second_gen fire_tv_stick_4k_second_gen fire_tv_stick_4k_max fire_tv_3rd_gen fire_tv_stick_lite fire_stick_4k fire_stick_second_gen fire_stick_first_gen fire_tv_second_gen_2015 onn-4k-streaming-box onn-full-hd-streaming-stick roku-streambar-pro roku-streambar roku-ultra-lt-2023 roku-ultra-lt roku-ultra-2020 roku-streaming-stick-4k roku-express-4k-plus roku-express-4k roku-express roku-premiere roku-generic-hisense roku-generic-tcl roku-generic-westinghouse shield-tv-2017 shield-tv-pro-2017 shield-tv-2019 shield-tv-pro-2019 mi-box-s xiaomi-tv-stick-4k |
The type of device you are controlling Which devices are supported? Which device do I own? |
compatibility_mode | string | no | default strong event0 event1 event2 event3 event4 event5 event6 event7 event8 event9 event10 event11 event12 event13 |
Adjust this value only if your buttons are completely unresponsive Ignored in Apple TV configurations FAQ Available for additional help |
defaultRemoteStyle_override | string | no | AF1 AF2 AF3 AF4 AF5 AF6 AFJTV AR1 AR2 AR3 CC1 NS1 NS2 ON1 RVRP RVR RSR RHR RTR RWR XM1 XM2 AL1 AL2 |
Optionally select a style of remote different from the one that shipped with your device |
app_launch_1 app_launch_2 app_launch_3 app_launch_4 app_launch_5 etc... |
string | no | See App Launch Button Customization section for options | Quick launch apps customization |
hdmi_1 hdmi_2 hdmi_3 hdmi_4 |
string | no | Personalized name for this HDMI input | The name entered here will appear on the button (truncated to 8 characters to fit) |
scale | integer | no | Any positive number | Change the size of this card by percentage. The default size is 100 |
custom_launchers | object | no | Create your own app launcher buttons | Details are in the Launcher Button Customizations of the README.md file |
button_overrides | object | no | Button name and HA script name are required. | Details are in the Button Overrides section of the README.md file |
visible_name_text | string | no | Any text | Optional device label for your firemote |
name_position | string | no | hidden bottom top |
Position for your optional device label |
visible_name_text_color | hex color value | no | Any hex color value e.g.: #ffffff | Optional text color for the device name label |
show_version_number | bool | no | true false |
Optionally display the Firemote Version number on the card |
hide_button_highlights | bool | no | true false |
Optionally hide the status higlighting decorations for the power, home, and play/pause buttons |
use_theme_background | bool | no | true false |
Optionally hide the AL1 or AL2 remote style's background color to let the HA theme color show |
hide_button_group_frame | bool | no | true false |
Optionally hide the frames around the button groups when using AL1 or AL2 |
useCustomSkin | bool | no | true false |
Toggle a custom background skin color on or off when using AL1 or AL2 |
skin | hex color value | no | Any hex color value e.g.: #ffffff | background skin color for AL1 or AL2 |
dpad_style | string | no | amazon-fire apple-tv-black apple-tv-silver chromecast xiaomi minimal |
Dpad style options for AL1 or AL2 |
Custom app launch buttons are not limited to the few that came printed on your remote control. In fact, the possibilities are endless! If you don't see your favorite app on this list, you can click on the Issues button on the top of this page, click 'New Issue' and then click the "Get Started" button next to the "App Shortcut Request" option. There are currently over 230 options available, and the list just keeps growing.
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
Button Overrides can be very useful for customization. These overrides can be used to call a Home Assistant service directly, run a script, or hide a button on your remote. These options are accomplished through your Firemote's YAML configuration.
Consider this example:
button_overrides:
mute-button:
script: receiver_mute_script
volume-down-button:
script: receiver_volume_down_script
volume-up-button:
service: light.toggle
target:
entity_id: light.bedroom_lamp
data:
color_name: red
transition: 2
brightness_pct: 100
power-button:
hidden: true
Valid button names are as follows:
- app-switch-button
- apps-button
- back-button
- blue-button
- center-button
- channel-down-button
- channel-up-button
- down-button
- fastforward-button
- green-button
- hamburger-button
- headset-button
- home-button
- input-button
- keyboard-button
- left-button
- live-button
- mute-button
- num1-button
- num2-button
- num3-button
- num4-button
- num5-button
- num6-button
- num7-button
- num8-button
- num9-button
- num0-button
- options-button
- patchwall-button
- playpause-button
- power-button
- profile-button
- programmable-one-button
- programmable-two-button
- red-button
- restart-button
- replay-button
- rewind-button
- right-button
- search-button
- settings-button
- sleep-button
- subtitle-button
- tv-button
- up-button
- voice-button
- volume-down-button
- volume-up-button
- yellow-button
Additional FAQs can be found here in the Firemote Wiki
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 one, 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.
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.
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!
- Do you speak a language other than English that is not already supported? You can help out the community by filling out a new language support request.
- 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.