The following steps installs the newest Leanback Launcher with Recommendations, Castreceiver, Daydream and activates the Google Voice Search with Google Assistant so that it also can be used in a current Kodi 18 Nightly Build on a Fire TV. The Amazon settings are still accessible except for access to the Amazon Store, Alexa, Wisperplay and Amazon AppManager. These will be substituted by Google Play Store, Google Assistant, Google Cast and Google AppManager.
This is the most comprehensive and up-to-date transformation of a Fire TV into an Android TV device with almost all Google functionalities usable.
Amazon TV Launcher and Amazon Alexa voice search are completely replaced by Leanback Launcher and Google Voice Search. Xposed edge, XInstaller and HDXPosed must also be installed and activated in XposedInstaller. Before installing it is recommended to make a backup of the system and data partition via TWRP if you have connected an external sdcard. Many thanks to @SimLynks for some tips from his PlayFire modification and to @peleg for his wonderful [project] aftv2atv. It is advantageous to have the AppStarter or HALauncher installed during the installation of the Leanback Launcher as a fallback.
This manual is only possible with a rooted device! Please do not use restricted profiles from Google for this modification, as errors may occur.
- Tested on a rooted Fire TV 4k box
- Tested on a rooted Fire TV box (thanks to @tomsteel1 for second confirmation)
- Tested on a rooted Fire Stick 1st gen (thanks to @sconnyuk for the confirmation)
- Firmware 22.214.171.124
Prerequisites: Install Xposed framework, Xposed modules and BusyBox
XposedInstaller-3.1.5.apk (install Xposed v89+)
Prerequisites: Configure XInstaller
Launch the Xposed Installer - Make sure that Xposed v89+ is installed, if not update first - Then click on the three lines in the top left corner of the screen - Click on Modules - Click the check box to activate XInstaller (use Mouse Toogle for Fire TV) Restart the Fire TV Launch the Xposed Installer again - Click on Modules again - Click on XInstaller In XInstaller click on XInstaller first - Check Expert mode - Press the back arrow In the Installations page, in the "Enable" section, check the boxes for: - Downgrading apps - Installing unknown apps - Then scroll down to the "Disable" section and check the boxes for: - Checking signatures - Checking signatures (F-Droid) - Forward locking - Verifying apps - Checking SDK version - Checking duplicated permissions - Press the back arrow In the Misc page, in the "Enable" section, check the box for: - Debugging apps - Then scroll down to the "Disable" section and check the boxes for: - Checking permissions - Verifying JAR - Verifying signatures - Checking Lucky Patcher - Auto updating Google Play Exit the program
Copy all files in the appendix to C:\adb\
1. Disabling unnecessary and blocking Amazon junk
adb shell su -c pm disable amazon.jackson19 adb shell su -c pm disable android.amazon.perm adb shell su -c pm disable com.amazon.acos.providers.UnifiedSettingsProvider adb shell su -c pm disable com.amazon.advertisingidsettings adb shell su -c pm disable com.amazon.ags.app adb shell su -c pm disable com.amazon.alexashopping adb shell su -c pm disable com.amazon.android.marketplace adb shell su -c pm disable com.amazon.application.compatibility.enforcer adb shell su -c pm disable com.amazon.application.compatibility.enforcer.sdk.library adb shell su -c pm disable com.amazon.avod adb shell su -c pm disable com.amazon.awvflingreceiver adb shell su -c pm disable com.amazon.bluetoothinternals adb shell su -c pm disable com.amazon.bueller.music adb shell su -c pm disable com.amazon.bueller.notification adb shell su -c pm disable com.amazon.bueller.photos adb shell su -c pm disable com.amazon.cardinal adb shell su -c pm disable com.amazon.client.metrics adb shell su -c pm disable com.amazon.client.metrics.api adb shell su -c pm disable com.amazon.communication.discovery adb shell su -c pm disable com.amazon.connectivitydiag adb shell su -c pm disable com.amazon.dcp.contracts.framework.library adb shell su -c pm disable com.amazon.dcp.contracts.library adb shell su -c pm disable com.amazon.device.bluetoothdfu adb shell su -c pm disable com.amazon.device.crashmanager adb shell su -c pm disable com.amazon.device.logmanager adb shell su -c pm disable com.amazon.device.lowstoragemanager adb shell su -c pm disable com.amazon.device.messaging adb shell su -c pm disable com.amazon.device.messaging.sdk.internal.library adb shell su -c pm disable com.amazon.device.messaging.sdk.library adb shell su -c pm disable com.amazon.device.sale.service adb shell su -c pm disable com.amazon.device.settings adb shell su -c pm disable com.amazon.device.settings.sdk.internal.library adb shell su -c pm disable com.amazon.device.software.ota adb shell su -c pm disable com.amazon.device.software.ota.override adb shell su -c pm disable com.amazon.device.sync adb shell su -c pm disable com.amazon.device.sync.sdk.internal adb shell su -c pm disable com.amazon.dp.logger adb shell su -c pm disable com.amazon.ftv.glorialist adb shell su -c pm disable com.amazon.identity.auth.device.authorization adb shell su -c pm disable com.amazon.kindle.cms adb shell su -c pm disable com.amazon.kindle.devicecontrols adb shell su -c pm disable com.amazon.kor.demo adb shell su -c pm disable com.amazon.kso.blackbird adb shell su -c pm disable com.amazon.logan adb shell su -c pm disable com.amazon.malcolm adb shell su -c pm disable com.amazon.metrics.api adb shell su -c pm disable com.amazon.ods.kindleconnect adb shell su -c pm disable com.amazon.platform.fdrw adb shell su -c pm disable com.amazon.providers adb shell su -c pm disable com.amazon.providers.contentsupport adb shell su -c pm disable com.amazon.recess adb shell su -c pm disable com.amazon.securitysyncclient adb shell su -c pm disable com.amazon.sharingservice.android.client.proxy adb shell su -c pm disable com.amazon.shoptv.client adb shell su -c pm disable com.amazon.ssdpservice adb shell su -c pm disable com.amazon.ssmsys adb shell su -c pm disable com.amazon.storm.lightning.services adb shell su -c pm disable com.amazon.storm.lightning.tutorial adb shell su -c pm disable com.amazon.sync.provider.ipc adb shell su -c pm disable com.amazon.sync.service adb shell su -c pm disable com.amazon.tahoe adb shell su -c pm disable com.amazon.tcomm adb shell su -c pm disable com.amazon.tcomm.client adb shell su -c pm disable com.amazon.tmm.tutorial adb shell su -c pm disable com.amazon.tv.csapp adb shell su -c pm disable com.amazon.tv.fw.metrics adb shell su -c pm disable com.amazon.tv.launcher adb shell su -c pm disable com.amazon.tv.launcher/.ads.AdRefreshReceiver adb shell su -c pm disable com.amazon.tv.launcher/.content.ComradeReceiver adb shell su -c pm disable com.amazon.tv.launcher/.parentalcontrols.PCONPermissionsReceiver adb shell su -c pm disable com.amazon.tv.launcher/.primefreetrial.PrimeFreeTrialActivity adb shell su -c pm disable com.amazon.tv.launcher/.ui.HomeActivity_vNext adb shell su -c pm disable com.amazon.tv.launcher/.ui.ReleaseNotesActivity adb shell su -c pm disable com.amazon.tv.launcher/.ui.purchase.OffDeviceSubscriptionActivity adb shell su -c pm disable com.amazon.tv.launcher/.ui.purchase.VideoItemPurchaseActivity adb shell su -c pm disable com.amazon.tv.launcher/.util.LauncherPreloaderReceiver adb shell su -c pm disable com.amazon.tv.legal.notices adb shell su -c pm disable com.amazon.tv.livetv adb shell su -c pm disable com.amazon.tv.nimh adb shell su -c pm disable com.amazon.tv.notificationcenter adb shell su -c pm disable com.amazon.tv.oobe adb shell su -c pm disable com.amazon.tv.ottssocompanionapp adb shell su -c pm disable com.amazon.tv.ottssolib adb shell su -c pm disable com.amazon.tv.parentalcontrols adb shell su -c pm disable com.amazon.tv.settings/.PCONPermissionsReceiver adb shell su -c pm disable com.amazon.tv.settings/.auth.BuellerSettingsMAPInformationProvider adb shell su -c pm disable com.amazon.tv.settings/.blackcurtain.BlackCurtainActivity adb shell su -c pm disable com.amazon.tv.settings/.hud.HomeLongPressReceiver adb shell su -c pm disable com.amazon.tv.settings/com.amazon.tv.settings.tv.AppDisableService adb shell su -c pm disable com.amazon.tv.support adb shell su -c pm disable com.amazon.venezia adb shell su -c pm disable com.amazon.wcast.sink adb shell su -c pm disable com.amazon.webview.awvdeploymentservice adb shell su -c pm disable com.amazon.whisperlink.core.android adb shell su -c pm disable com.amazon.whisperplay.contracts adb shell su -c pm disable com.amazon.whisperplay.service.install adb shell su -c pm disable com.amazon.wifilocker adb shell su -c pm disable com.ivona.orchestrator adb shell su -c pm disable com.ivona.tts.oem adb shell su -c pm hide com.amazon.imp
2. Customize build.prop
adb shell su -c mount -o remount,rw /system adb push C:\adb\mod-build.prop.sh /sdcard/ adb shell su -c sh /sdcard/mod-build.prop.sh adb shell su -c rm /sdcard/mod-build.prop.sh adb shell su -c mount -o remount,ro /system
adb shell su -c mount -o remount,rw /system adb push C:\adb\tv_core_hardware.xml /sdcard/ adb shell su -c cp /sdcard/tv_core_hardware.xml /system/etc/permissions/tv_core_hardware.xml adb shell su -c chmod 644 /system/etc/permissions/tv_core_hardware.xml adb shell su -c chown root:root /system/etc/permissions/tv_core_hardware.xml adb shell su -c rm /sdcard/tv_core_hardware.xml adb shell su -c rm -r /system/priv-app/com.amazon.vizzini adb shell su -c mount -o remount,ro /system
Download the matching zip file and copy it to the sdcard (I use current open_gapps arm64-5.1-tvstock-20180705).
Open GApps for ARM (Fire TV sticks & 1st gen boxes)
Open GApps for ARM64 (Fire TV 4k boxes)
Insert this code to new "gapps-config.txt" and copy it to the same directory as the GApps on the sdcard.
forceclean skipswypelibs skipvendorlibs GoogleAssistant +extsharedstock +keyboardstock +provision +packageinstallerstock +webviewstock +notouchauthdelegate Include gappspico backdrop #castreceiver configupdater googlebackuptransport googlecontactsync gsfcore leanbacklauncher overscan secondscreenauthbridge secondscreensetup tvcustomization tvetc tvframework tvgmscore tvkeyboardgoogle tvvending tvvoiceinput tvwallpaper tvwidget
5. Allow Google registration (NoTouchAuthDelegate)
(Notice: The two bold lines are only needed if you have never installed NoTouchAuthDelegate.apk before.)
adb shell su -c mount -o remount,rw /system adb push C:\adb\Tv-NoTouchGsf.apk /sdcard/ adb shell su -c mkdir /system/app/NoTouchAuthDelegate/ adb shell su -c chmod 755 /system/app/NoTouchAuthDelegate/ adb shell su -c rm /system/app/NoTouchAuthDelegate/NoTouchAuthDelegate.apk adb shell su -c cp /sdcard/Tv-NoTouchGsf.apk /system/app/NoTouchAuthDelegate/NoTouchAuthDelegate.apk adb shell su -c chmod 644 /system/app/NoTouchAuthDelegate/NoTouchAuthDelegate.apk adb shell su -c chown root:root /system/app/NoTouchAuthDelegate/NoTouchAuthDelegate.apk adb shell su -c rm /sdcard/Tv-NoTouchGsf.apk adb shell su -c mount -o remount,ro /system
Now restart the device and then sign in to Google Play Store.
Then search for and install the "Google" app on the Play Store. It'll take a while (I use current Google 126.96.36.199699360).
(Notice: At this point the search in the Play Store should already work with the search button on the remote!)
7. Adjust the Xposed edge key configuration for the search button of the Fire TV remote
Activate the "Keys" in the Xposed edge and add the new KEYCODE_SEARCH key (simply press the search key on the Fire Remote for recognition).
Use "Single Click" with the activity "com.google.android.katniss\.search.SearchActivity " and leave "Long press" empty. This is the standard function, you first have to click and release the microphone, wait until the input is ready ("Speak Now" appears), and then press and hold the microphone and speak, then release.
More useful key assignments for the Leanback Launcher see attached photos:
Alternatively you can easily put my configuration for keys in file /data/data/com.jozein.xedgepro/prefs/prefs (disable temporary Xposed edge in Xposed Installer for it) or simply import my backup file in Xposed edge (copy to /sdcard/Android/data/XEdgePro/).
8. Install Android TV Settings modified for Fire TV
Once you have installed the aftv2atv Fire TV settings (better than the modified settings apk from PlayFire), you can choose which apps the Google Assistant is allowed to search for hits.
(Notice: The two bold lines are only needed if you have never installed TvSettings.apk before.)
adb shell su -c mount -o remount,rw /system adb push C:\adb\TvSettings-2.1.1.apk /sdcard/ adb shell su -c mkdir /system/priv-app/TvSettings adb shell su -c chmod 755 /system/priv-app/TvSettings adb shell su -c rm /system/priv-app/TvSettings/TvSettings.apk adb shell su -c cp /sdcard/TvSettings-2.1.1.apk /system/priv-app/TvSettings/TvSettings.apk adb shell su -c chmod 644 /system/priv-app/TvSettings/TvSettings.apk adb shell su -c chown root:root /system/priv-app/TvSettings/TvSettings.apk adb shell su -c rm /sdcard/TvSettings-2.1.1.apk adb shell su -c mount -o remount,ro /system
Reboot for the last time.
That's all and now you will boot directly in Leanback Launcher and start the voice search by pressing the search button in Leanback Launcher and Kodi.
Google Assistant also now finds hits in Kodi (movies, tv shows and music, if Kodi already is running), along with other sources such as YouTube, Spotify, etc. (directly install these apps from Google Play Store)
10. Optional: Access Amazon settings
If you still need to access the Amazon settings, you can install my modified conFIREator Settings app additionally (More details click here):
Because of the XInstaller, other basic Amazon activities can be called up (which are normally only possible with the Amazon TV Launcher) and I included them in my current version of conFIREator, e.g. screen and sound settings, sdcard menu, Fire TV info, etc.
This allows you to access all Amazon settings even if Amazon Launcher is disabled.
11. Optional: Make room on the system partition - Please only execute if you have no more space on system!
If you should ever need one of the removed apps again, you will find a backup of the removed apps here.
Known issues / FAQ
I need a mouse emulator
As a mouse emulator I can recommend this app: Mouse Toogle for Fire TV. Double click on the play/pause button on the remote to get a mouse arrow.
If you use the build.prop mod for "Nexus Player" of section Hardcore mode use this variant: Mouse Toggle [ROOT] for Android TV
Google Voice Search and Prime Video doesn't work on my box 1
It seems that Google Voice Search and possibly also some DRM components (Prime Video/Netflix) do not work when the bootloader is unlocked on a Fire TV 1 box. You then get the error "Can't reach Google at the moment".
I see no recommendations
The recommendations will not appear until you install apps that give the launcher recommendations, e.g. YouTube, Spotify, Kodi, etc..
I see no settings, info and network buttons
As soon as you have installed the TvSettings correctly, the icons for settings, info and network (if LAN) or the WLAN name will also be added below.
The voice icon in the upper left corner is not working
The voice icon will not work until you have installed the Google app.
Voice search in the Play Store
To enable the voice search button in the Play Store, you have to install Open GApps with "tvvoiceinput".
I get an error while installing TvSettings
The error at adb shell su -c rm /system/app/NoTouchAuthDelegate/NoTouchAuthDelegate.apk is normal if you have never installed such an APK before! I just wanted to rule out all eventualities, so the paragraph includes more than on a case-by-case basis.
It is only important that these 3 go through without errors and you reboot afterwards:
adb shell su -c cp /sdcard/Tv-NoTouchGsf.apk /system/app/NoTouchAuthDelegate/NoTouchAuthDelegate.apk
adb shell su -c chmod 644 /system/app/NoTouchAuthDelegate/NoTouchAuthDelegate.apk
adb shell su -c chown root:root /system/app/NoTouchAuthDelegate/NoTouchAuthDelegate.apk
Although the GApps Castreceiver is displayed and found correctly, no device could connect. Looks like Google has something here against unlicensed Castreceivers!
As a workaround, do not install Castreceiver of GApps but CastReceiver-1.1.2.apk. Then you can use Google Cast directly from your Chrome Browser.
An alternative to CastReceiver is the use of AirScreen v1.6.0 (not a newer version).
Every sideloaded app with Leanback Launcher support is displayed. But if the Leanback Launcher support is missing in the app, you can create an icon and a shortcut to such apps in the Leanback Launcher with an additional tool.
Google Play Store:
TV App Repo 1.1.3
But the open community version is recommended:
TV App Repo 1.1.4
Restrictions in the TvSettings
The apps overview must always be called twice so that the installed apps are displayed. After that you have full control (info, stop, uninstall).
The menu item "Google Cast" cannot be used because I commented out the castreceiver in the gapps-config.txt.
All other settings can be used without restrictions!
How to start apps with voice
Start the Google app with the voice button and say e.g. "Open Kodi"
Apps I use directly from the Google Play Store of Open GApps or per sideload
Can be installed directly from the store
- Google app for Android TV (Android TV)
- Google Play Movies & TV (Android TV)
- Google Play Games (Android TV)
- Google Play Music (Android TV)
- Zattoo - TV Streaming (Android TV)
- YouTube for Android TV (Android TV)
- Spotify Music - for Android TV (Android TV)
- pFolio - Google Fotos (Universal app)
- Total Commander - file manager (Universal app)
Not available in the store, therefore you have to sideload
- Amazon Prime Video (Android TV for NVIDIA Shield) 4.5.17
- AirScreen (Universal app) 1.6.0 - use only this version!
- Aptoide TV (Android TV) 4.0.2
- BusyBox (Universal app) 188.8.131.52
- CastReceiver (Universal app) 1.1.2
- Downloader (Amazon) 1.1.4
- Downloader (Android TV) 1.1.4 - version from NVidia Shield!
- Downloader Browser-Plugin 1.0 - needed for both versions above to browse websites!
- Firefox (Amazon) 2.1
- Netflix (Amazon) 5.1.1 - use only this version!
I use the following stream APIs - Except first one, they are all provided by AirScreen
- Spotify app on iPhone & Android -> Spotify Connect (here Google Cast does not work because Fire TVs are not licensed for "Chromecast Audio")
- Facebook app on Android (video streaming) -> Google Cast (incl. audio)
- Facebook app on iPhone/iPad (video streaming) -> AirPlay (incl. audio)
- Facebook app on Chrome-Desktop-Browser (video streaming) -> Google Cast (incl. audio)
- Chrome-Desktop-Browser screen mirroring -> Google Cast (incl. audio)
- iPhone/iPad screen mirroring -> AirPlay (incl. audio)
- Android screen mirroring -> Miracast or on newer devices also Google Cast (both incl. audio)
Several Fire TV devices in use?
If you have several Fire TV devices in use, you do not have to run the guide again on each additional device.
In this case, just make a backup via TWRP on the modified device to a sdcard and then manually copy all files to the folder with the serial number of the other device.
For example you have two devices:
Serial number of Fire TV 1: G070GV0754520001
Serial number of Fire TV 2: G070GV0754520002
You make a backup on Fire TV 1 and copy all files from the folder /storage/sdcard1/TWRP/BACKUPS/G070GV0754520001 to the folder /storage/sdcard1/TWRP/BACKUPS/G070GV0754520002.
Finally, you only need to change the Android id, bluetooth mac address and device name of Fire TV 2, because these were cloned from Fire TV 1:
adb shell settings get secure android_id adb shell settings put secure android_id 1111111111111111 adb shell settings get secure bluetooth_address adb shell settings put secure bluetooth_address '11:11:11:11:11:11' adb shell settings get global device_name adb shell settings put global device_name 'NAME'
To also change bluetooth name, you have to use this app: Set-BT-Name-1.1.apk.
Attention: On the cloned devices you have to pair the remote control again, because the id do not match anymore. Simply press the home button on the remote for more than 10 seconds and the Fire TV repairs with the remote.
If you want Spotify to display the real device name, the GApps Castreceiver must be installed in addition and the device must be converted to a "Nexus Player" via build.prop (mod-build.prop_nexus.sh). To install the internal Castreceiver, simply remove the # in the line #castreceiver in the gapps-config.txt. The internal Castreceiver is only used for publishing the device name in the network and has no effect on a casting app such as AirScreen.
Want to controll your Fire TV per app?
I tried the official Android Remote TV of the GApps (tvremote), but unfortunately this does not work.
But DroidMote works excellently:
DroidMote server app -> install on your Fire TV and start server
DroidMote client app -> install on your Phone or Tablet
Want better speech support?
Install the Google Text-To-Speech-Engine and select it in the TvSettings/Accessibility/Text-to-Speech instead of PicoTTS.
To check it out: Start the Google app with the voice button and say (in your native language):
- How old is Donald Trump?
- Where was Donald Trump born?
- What does colloquial mean?
- What time is it in Munich?
- Show me videos of the Olympiaturm in Munich? (you need YouTube app installed)
- Do I need an umbrella today?
- What’s the weather like?
- What’s the weather in Munich this weekend?
- Did the Bavarians win today?
- When is the next Bavarians game?
- What movies are playing today?
adb shell su -c mount -o remount,rw /system ! grep -q "net.hostname" /system/build.prop && echo "net.hostname=YOUR-HOSTNAME" >> /system/build.prop ; adb shell su -c mount -o remount,ro /system
adb connect YOUR-HOSTNAME
adb connect Fire-TV-Homeoffice adb connect Fire-TV-Livingroom adb connect Fire-TV-Bedroom adb connect Fire-TV-Hobbyroom
Remove registered Google account so you can login with a new one?
Have a look here.
Convert your Fire TV to Google ADT-1 device
Use build.prop-script: mod-build.prop_adt-1.sh
Convert your Fire TV to NVIDIA Shield device
Use build.prop-script: mod-build.prop_shield.sh
The detection can then be checked in Play Store settings
Please never log out of your Amazon account and log in again after using this guide, as this will destroy the Google Play Store functionality and the Google voice search. In this case you will need to restore either a backup or factory settings.