[Guide] Convert Shield Tablet into a dedicated Android TV

5th March 2017 07:51 AM 10 Thanks
tenFootPedal Junior Member
What works
Leanback Launcher
Leanback App Buttons (you may still want Sideload Launcher for some things)
Leanback Recommendations
HDMI-CEC (insofar as my TV supports it YMMV)
Shield Controller, including right thumbstick as mouse
Ten Foot experiences for applications that check for it

What doesn't work
Cast Receiver
Probably other things, this is a work in progress

What's needed
ADB access - If you don't have the Android SDK you can just use Minimal ADB and Fastboot
Stock 5.0 OTA (Android 7.0 Nougat) - I don't know how necessary this is but it's what I used.
Root
TWRP or some means of flashing a zip
Open GApps arm tvstock

Step 1 - Debloat
First we need to get rid of a number of things that we won't need, or will get in the way. Use debloat.zip for this. I actually like to run this initially, as well as after Gapps are installed. The script file inside is copied in the spoiler below.
Code:
mount("ext4", "EMMC", "/dev/block/platform/sdhci-tegra.3/by-name/APP", "/system");
ui_print("System app removals");

delete_recursive("/system/priv-app/BackupRestoreConfirmation");
delete_recursive("/system/priv-app/BlockedNumberProvider");
delete_recursive("/system/priv-app/ConfigUpdater");
delete_recursive("/system/priv-app/CalendarProvider");
delete_recursive("/system/priv-app/Contacts");
delete_recursive("/system/priv-app/ContactsProvider");
delete_recursive("/system/priv-app/DocumentsUI");
delete_recursive("/system/priv-app/GmsCore");
delete_recursive("/system/priv-app/GoogleBackupTransport");
delete_recursive("/system/priv-app/GoogleFeedback");
delete_recursive("/system/priv-app/GoogleLoginService");
delete_recursive("/system/priv-app/GoogleOneTimeInitializer");
delete_recursive("/system/priv-app/GooglePartnerSetup");
delete_recursive("/system/priv-app/GoogleServicesFramework");
delete_recursive("/system/priv-app/MmsService");
delete_recursive("/system/priv-app/Phonesky");
delete_recursive("/system/priv-app/SetupWizard");
delete_recursive("/system/priv-app/TegraOTA");
delete_recursive("/system/priv-app/TeleService");
delete_recursive("/system/priv-app/Telecom");
delete_recursive("/system/priv-app/Velvet");
delete_recursive("/system/priv-app/NvLauncher");
delete_recursive("/system/priv-app/NvCustomize");
#delete_recursive("/system/priv-app/NvRpxService"); needed for controller pairing
delete_recursive("/system/priv-app/nvlasso");
delete_recursive("/system/priv-app/shield_platform_analyzer");
delete_recursive("/system/priv-app/shieldcustomize");
delete_recursive("/system/priv-app/Katniss");

delete_recursive("/system/app/CalendarGoogle");
delete_recursive("/system/app/Chrome");
delete_recursive("/system/app/CloudPrint");
delete_recursive("/system/app/DeskClockGoogle");
delete_recursive("/system/app/Drive");
delete_recursive("/system/app/ExactCalculator");
delete_recursive("/system/app/FaceLock");
delete_recursive("/system/app/Gmail2");
delete_recursive("/system/app/GoogleContactsSyncAdapter");
delete_recursive("/system/app/GooglePrintRecommendationService");
delete_recursive("/system/app/GoogleTTS");
delete_recursive("/system/app/Hangouts");
delete_recursive("/system/app/JusWrite");
delete_recursive("/system/app/Maps");
delete_recursive("/system/app/Music2");
delete_recursive("/system/app/PlayGames");
delete_recursive("/system/app/PrintSpooler");
delete_recursive("/system/app/SoundRecorder");
delete_recursive("/system/app/Tn8Tdc");
delete_recursive("/system/app/Videos");
delete_recursive("/system/app/Write");
delete_recursive("/system/app/idsmonitor");
delete_recursive("/system/app/stylusmobile-oem");
delete_recursive("/system/app/talkback");
delete_recursive("/system/app/trine2");
delete_recursive("/system/app/Twitch");
delete_recursive("/system/app/YouTube");
delete_recursive("/system/app/Music2Pano");
delete_recursive("/system/app/VideosPano");

delete_recursive("/system/vendor/app/CalibNotifier");
delete_recursive("/system/vendor/app/ConsoleSplash");
#delete_recursive("/system/vendor/app/ConsoleUI");
delete_recursive("/system/vendor/app/NvAndroidOSC");
delete_recursive("/system/vendor/app/NvBenchmarkBlocker");
delete_recursive("/system/vendor/app/NvCPLUpdater");
delete_recursive("/system/vendor/app/NvCamera");
delete_recursive("/system/vendor/app/NvEsrd");
delete_recursive("/system/vendor/app/NvGamecast");
delete_recursive("/system/vendor/app/NvRegistration");
delete_recursive("/system/vendor/app/Stats");
delete_recursive("/system/vendor/app/TegraZone");
delete_recursive("/system/vendor/app/Welcome");
delete_recursive("/system/vendor/app/nvbatterymonitorservice");
delete_recursive("/system/vendor/app/nvidiafeedback");
delete_recursive("/system/vendor/app/nvpowerstats");
delete_recursive("/system/vendor/app/watercolor");

ui_print("Finish");


Step 2 - TV Permissions
Some apps with ten foot experiences are packaged and distributed separately from their mobile/tablet counterparts (like Twitch and ESPN). Others, package all experiences together and ask for permissions at runtime (like PBS Video and PBS Kids). The attached tv_permissions.zip file adds these, as well as android.software.picture_in_picture in order to prevent an exception when the home button is double tapped.

Step 3 - Settings activity is now broken
This is because our conflicted device is looking for the ribbon at the top of the settings activity, but it doesn't exist in the tv layout. fixes.zip patches Settings.apk to include the ribbon in the tv layout.
If you have issues with this, try running debloat and tv_permissions, boot the device, then go back to recovery and flash fixes.zip.

Step 4 - Open GApps tvstock
Big thanks to the Open GApps guys for this one. I cheated a bit here and instead of adding the packages one-by-one to be removed in the debloat script, I manually removed a number of tars from the zip file. I'll fix this, I promise but in the meantime open up the zip file and remove the following:
GApps/castreceiver-arm.tar.lz
GApps/gamepadpairing-arm.tar.lz
GApps/livechannels-arm.tar.lz
GApps/talkback-arm.tar.lz
GApps/tvmovies-arm.tar.lz
GApps/tvmusic-arm.tar.lz
GApps/tvplaygames-arm.tar.lz
Core/bugreport-all.tar.lz
Core/googlebackuptransport-all.tar.lz
Core/googlecontactssync-all.tar.lz
Core/gsfcore-all.tar.lz
Core/notouch-all.tar.lz
Core/setupwraith-all.tar.lz

...or don't if you want to experiment with Google Play Services, but that's not my cup of tea on a TV device. Early builds saw hangouts messages popping up while my wife and I were watching tv (ugh). By the way anything you do with any of this knowledge your sole responsibility.

Other Minutiae

Use the SPMC fork if you use Kodi. You will get recommendations/now playing, among other things.

Some apps may look for Play Services at runtime (I had this with Twitch, for example). If you don't want GPS/GSF I can verify that microG works for this. I used Lanchon's Haystack for signature spoofing. This required Linux and the Android SDK, but there are other ways to accomplish signature spoofing, I just didn't try them.

You'll need some means of downloading app packages without Play Store on your device. I used Raccoon and DummyDroid with the build.prop from Shield Android TV and this user agent string:
Code:
'Android-Finsky/6.5.08.D-all (versionCode=80650800,sdk=23,device=foster,hardware=foster_e,product=foster,build=NRD90M:user)'
Originally, I wanted to do this as a custom AOSP or Lineage-based rom. Some of the issues I ran into were beyond my reckoning and I decided to cut bait and use stock. Lineage does work though, you'll just be sacrificing HDMI-CEC and Granular HDMI audio volume (Steel01 got HDMI audio working though, so big props there).

One thing that was bugging me was that the Shield Controller won't wake the tablet when the tablet is on batter power, even if you have it set to leave wifi on when sleeping. The following setting will fix this:
Code:
adb shell settings put system com.nvidia.blakepairing.agoAlwaysOn 1
Edit 3/6
Guide skeleton, can't attach zips, screens, or post links
Setting to wake device on battery power

Edit 3/9
Screens and flashable zips added
Attachments:
debloat.zip 362.91 kB / 566 downloads
tv_permissions.zip 364.25 kB / 612 downloads
fixes.zip 12.61 MB / 610 downloads
5th March 2017 09:22 AM 0 Thanks
Bryanx86 Senior Member
Quote:
Originally Posted by tenFootPedal

Title seems sudden, but actually it's been a bit of a task. If anyone's interested I'll put some details and flashables up in here.

Put em up, I was just thinking about converting mine with my Chromecast for mobdro, TV portal, and terrarium app. I already have a roku box and a Chromecast, but I'm curious how you converted yours. Thanks!
5th March 2017 09:48 AM 0 Thanks
LenAsh Retired Forum Moderator
Quote:
Originally Posted by tenFootPedal

Title seems sudden, but actually it's been a bit of a task. If anyone's interested I'll put some details and flashables up in here.

It's a GOOD IDEA to add the method rather than just a passing comment...

Thanks
5th March 2017 11:58 AM 0 Thanks
hunterd13 Member
set my spare shield up with kodi and its fine, i even still game on it occasionally. it's always hooked up so, why not?
5th March 2017 05:01 PM 1 Thanks
tenFootPedal Junior Member
Quote:
Originally Posted by LenAsh

It's a GOOD IDEA to add the method rather than just a passing comment...

Thanks

Yeah I'm planning on sharing but I wanted to gauge interest. Also I've never posted here and either I don't have permissions or I'm having PEBKAC issues with posting attachments.
6th March 2017 09:49 PM 0 Thanks
tenFootPedal Junior Member
Edit 3/6
Guide skeleton, can't attach zips, screens, or post links
Setting to wake device on battery power
9th March 2017 10:53 PM 5 Thanks
tenFootPedal Junior Member
Edit 3/9
Screens and flashable zips added

I'll be trying this with 5.1 OTA next
13th March 2017 02:58 AM 0 Thanks
brandonlee96 Account currently disabled
i have gotton the sheild game hub from the stock nvidia sheild tv firmware to install and work with this mod. i also use the ps4 controller via bluetooth for my remote in console mode. i cant figure out how to install the Google play store on this mod. can someone help me get it to install and work.
Attachments:
13th March 2017 02:34 PM 0 Thanks
tenFootPedal Junior Member
Quote:

i have gotton the sheild game hub from the stock nvidia sheild tv firmware to install and work with this mod. i also use the ps4 controller via bluetooth for my remote in console mode.

nice. Thanks for the feedback.

I haven't been down the play store road, but I would start by installing the tvstock gapps package without removing gsfcore (maybe others?) and don't run the debloat zip after you do so.
13th March 2017 06:50 PM 0 Thanks
brandonlee96 Account currently disabled
Quote:
Originally Posted by tenFootPedal

nice. Thanks for the feedback.

I haven't been down the play store road, but I would start by installing the tvstock gapps package without removing gsfcore (maybe others?) and don't run the debloat zip after you do so.

the tv gapps dont even have google play within the zip so we have too figure out how to install the android tv google play store on this mod we will be all set to go. i have all the system files from the stock nvidia shield tv on my pc trying to swap files to see what i can mimic. but the shield games for the nvidia shield tv works perfectly on this mod.im also trying to see if i can install the stock shield tv firmware on the shield k1. i can get the boot,recovery,system img's to flash successfully but it taking forever to boot. so it seems it dont work but i will keep trying.
close
Advanced Search
close