mirror of
https://github.com/sudoxnym/resumd.git
synced 2026-04-14 19:46:48 +00:00
516 lines
10 KiB
Markdown
Executable file
516 lines
10 KiB
Markdown
Executable file
# NVIDIA Shield TV 2019 Pro: Complete Root Walkthrough
|
|
|
|
**Stock Android → LineageOS + microG + Magisk Root**
|
|
|
|
Device: NVIDIA Shield TV 2019 Pro (mdarcy/foster/t210ref)
|
|
Tested: December 8, 2025
|
|
Time required: ~45 minutes
|
|
|
|
---
|
|
|
|
## What You Need
|
|
|
|
### Hardware
|
|
- NVIDIA Shield TV 2019 Pro
|
|
- USB-A to USB-A cable (Shield uses USB-A port)
|
|
- PC (Windows, Mac, or Linux)
|
|
- USB keyboard for Shield (for bootloader unlock confirmation)
|
|
|
|
### Software (Download These First)
|
|
|
|
1. **ADB/Fastboot** - Platform tools from Google
|
|
- Windows: https://developer.android.com/studio/releases/platform-tools
|
|
- Extract somewhere and add to PATH
|
|
|
|
2. **LineageOS for microG** (latest foster build)
|
|
```
|
|
https://download.lineage.microg.org/foster/
|
|
```
|
|
Download: `lineage-22.1-2024XXXX-microG-foster.zip` (latest date)
|
|
|
|
3. **TWRP Recovery**
|
|
```
|
|
https://dl.twrp.me/foster/
|
|
```
|
|
Download: `twrp-3.7.0_9-0-foster.img` (or latest)
|
|
|
|
4. **Magisk v28.0** (this specific version works)
|
|
```
|
|
https://github.com/topjohnwu/Magisk/releases/download/v28.0/Magisk-v28.0.apk
|
|
```
|
|
|
|
---
|
|
|
|
## Part 1: Prepare the Shield
|
|
|
|
### Step 1.1: Enable Developer Options
|
|
|
|
1. On your Shield, go to:
|
|
```
|
|
Settings > Device Preferences > About
|
|
```
|
|
|
|
2. Scroll down to **Build number**
|
|
|
|
3. Click it **7 times** until you see "You are now a developer"
|
|
|
|
### Step 1.2: Enable USB Debugging
|
|
|
|
1. Go back to:
|
|
```
|
|
Settings > Device Preferences > Developer options
|
|
```
|
|
|
|
2. Enable **USB debugging**
|
|
|
|
3. Enable **OEM unlocking**
|
|
|
|
### Step 1.3: Connect to PC
|
|
|
|
1. Connect Shield to PC with USB cable
|
|
|
|
2. On Shield, you'll see "Allow USB debugging?" - check "Always allow" and click OK
|
|
|
|
3. On PC, open terminal/command prompt and verify connection:
|
|
```bash
|
|
adb devices
|
|
```
|
|
|
|
You should see:
|
|
```
|
|
List of devices attached
|
|
1323923031371 device
|
|
```
|
|
(Your serial number will be different)
|
|
|
|
---
|
|
|
|
## Part 2: Unlock Bootloader
|
|
|
|
⚠️ **WARNING: This erases ALL data on your Shield!**
|
|
|
|
### Step 2.1: Reboot to Bootloader
|
|
|
|
```bash
|
|
adb reboot bootloader
|
|
```
|
|
|
|
Wait for Shield to show the bootloader screen (NVIDIA logo with text)
|
|
|
|
### Step 2.2: Verify Fastboot Connection
|
|
|
|
```bash
|
|
fastboot devices
|
|
```
|
|
|
|
You should see:
|
|
```
|
|
1323923031371 fastboot
|
|
```
|
|
|
|
### Step 2.3: Unlock the Bootloader
|
|
|
|
```bash
|
|
fastboot oem unlock
|
|
```
|
|
|
|
### Step 2.4: Confirm on Shield
|
|
|
|
1. The Shield screen will show an unlock confirmation
|
|
|
|
2. Use USB keyboard (or gamepad) to select **YES**
|
|
|
|
3. Shield will factory reset and reboot (takes a few minutes)
|
|
|
|
### Step 2.5: Skip Setup
|
|
|
|
1. After reboot, go through minimal setup (skip accounts, etc.)
|
|
|
|
2. Re-enable Developer options and USB debugging (repeat Steps 1.1 and 1.2)
|
|
|
|
---
|
|
|
|
## Part 3: Flash TWRP Recovery
|
|
|
|
### Step 3.1: Reboot to Bootloader
|
|
|
|
```bash
|
|
adb reboot bootloader
|
|
```
|
|
|
|
### Step 3.2: Flash TWRP
|
|
|
|
Replace the path with where you downloaded TWRP:
|
|
|
|
```bash
|
|
fastboot flash recovery /path/to/twrp-3.7.0_9-0-foster.img
|
|
```
|
|
|
|
You should see:
|
|
```
|
|
Sending 'recovery' (31564 KB) OKAY
|
|
Writing 'recovery' OKAY
|
|
Finished. Total time: X.XXXs
|
|
```
|
|
|
|
### Step 3.3: Boot into TWRP
|
|
|
|
```bash
|
|
fastboot reboot recovery
|
|
```
|
|
|
|
Or use the bootloader menu: Volume keys to navigate to "Recovery", Power to select
|
|
|
|
TWRP should now load (blue/gray interface)
|
|
|
|
---
|
|
|
|
## Part 4: Flash LineageOS
|
|
|
|
### Step 4.1: Wipe Device in TWRP
|
|
|
|
1. In TWRP, tap **Wipe**
|
|
|
|
2. Tap **Format Data**
|
|
|
|
3. Type `yes` and confirm (this wipes encryption)
|
|
|
|
4. Go back, tap **Advanced Wipe**
|
|
|
|
5. Check these boxes:
|
|
- ☑ Dalvik / ART Cache
|
|
- ☑ System
|
|
- ☑ Cache
|
|
|
|
6. Swipe to wipe
|
|
|
|
### Step 4.2: Push LineageOS to Device
|
|
|
|
On your PC:
|
|
```bash
|
|
adb push /path/to/lineage-22.1-20241006-microG-foster.zip /sdcard/
|
|
```
|
|
|
|
Wait for transfer to complete (about 1-2 minutes)
|
|
|
|
### Step 4.3: Install LineageOS
|
|
|
|
1. In TWRP, tap **Install**
|
|
|
|
2. Navigate to `/sdcard/`
|
|
|
|
3. Tap the LineageOS zip file
|
|
|
|
4. Swipe to confirm flash
|
|
|
|
5. Wait for installation (2-3 minutes)
|
|
|
|
### Step 4.4: Reboot to LineageOS
|
|
|
|
1. Tap **Reboot System**
|
|
|
|
2. If asked about installing TWRP app, tap **Do Not Install**
|
|
|
|
3. **First boot takes 5-10 minutes** - the Shield will show LineageOS boot animation, be patient!
|
|
|
|
---
|
|
|
|
## Part 5: Setup LineageOS
|
|
|
|
### Step 5.1: Complete Setup Wizard
|
|
|
|
1. Select language, WiFi, etc.
|
|
|
|
2. Skip Google account (microG handles this later if needed)
|
|
|
|
3. Complete the wizard
|
|
|
|
### Step 5.2: Re-enable Developer Options
|
|
|
|
1. Go to:
|
|
```
|
|
Settings > About tablet
|
|
```
|
|
|
|
2. Tap **Build number** 7 times
|
|
|
|
### Step 5.3: Enable USB Debugging
|
|
|
|
1. Go to:
|
|
```
|
|
Settings > System > Developer options
|
|
```
|
|
|
|
2. Enable **USB debugging**
|
|
|
|
3. On PC, verify connection:
|
|
```bash
|
|
adb devices
|
|
```
|
|
|
|
---
|
|
|
|
## Part 6: Install Magisk (Two-Step Process)
|
|
|
|
**⚠️ THIS IS THE CRITICAL PART - FOLLOW EXACTLY**
|
|
|
|
### Step 6.1: Push Magisk Files to Device
|
|
|
|
```bash
|
|
# Push the APK
|
|
adb push /path/to/Magisk-v28.0.apk /sdcard/Download/
|
|
|
|
# Create a copy as ZIP for TWRP
|
|
cp /path/to/Magisk-v28.0.apk /path/to/Magisk-v28.0.zip
|
|
adb push /path/to/Magisk-v28.0.zip /sdcard/Download/
|
|
```
|
|
|
|
### Step 6.2: Install Magisk App
|
|
|
|
```bash
|
|
adb install /path/to/Magisk-v28.0.apk
|
|
```
|
|
|
|
---
|
|
|
|
## Part 7: Flash Magisk via TWRP (Step 1 of 2)
|
|
|
|
### Step 7.1: Reboot to Recovery
|
|
|
|
```bash
|
|
adb reboot recovery
|
|
```
|
|
|
|
### Step 7.2: Flash Magisk ZIP
|
|
|
|
In TWRP terminal or via ADB:
|
|
```bash
|
|
adb shell "twrp install /sdcard/Download/Magisk-v28.0.zip"
|
|
```
|
|
|
|
Or manually in TWRP:
|
|
1. Tap **Install**
|
|
2. Navigate to `/sdcard/Download/`
|
|
3. Select `Magisk-v28.0.zip`
|
|
4. Swipe to flash
|
|
|
|
### Step 7.3: IMPORTANT - Read the Output
|
|
|
|
You will see something like:
|
|
```
|
|
***********************
|
|
Magisk 28.0 Installer
|
|
***********************
|
|
- Mounting /system
|
|
- Device is system-as-root
|
|
- Legacy SAR, force kernel to load rootfs
|
|
- System-as-root, keep dm-verity
|
|
- Target image: /dev/block/LNX
|
|
- Device platform: arm64-v8a
|
|
- Constructing environment
|
|
- Adding addon.d survival script
|
|
- Unpacking boot image
|
|
- Checking ramdisk status
|
|
- Stock boot image detected
|
|
- Patching ramdisk
|
|
- Repacking boot image
|
|
- Flashing new boot image
|
|
- Unable to find preinit dir ← THIS WARNING IS NORMAL!
|
|
- Unmounting partitions
|
|
- Done
|
|
```
|
|
|
|
**"Unable to find preinit dir" is EXPECTED. Do not panic. Continue to next step.**
|
|
|
|
### Step 7.4: Reboot to Android
|
|
|
|
```bash
|
|
adb shell reboot
|
|
```
|
|
|
|
Or in TWRP: Reboot > System
|
|
|
|
---
|
|
|
|
## Part 8: Complete Magisk Install (Step 2 of 2)
|
|
|
|
**THIS IS THE MAGIC STEP THAT MAKES IT WORK**
|
|
|
|
### Step 8.1: Wait for Boot
|
|
|
|
Wait for LineageOS to fully boot (1-2 minutes)
|
|
|
|
### Step 8.2: Open Magisk App
|
|
|
|
1. Open the Magisk app from your app drawer
|
|
|
|
2. You will see a dialog:
|
|
```
|
|
Requires Additional Setup
|
|
|
|
Your device needs reflash Magisk to work properly.
|
|
Please reinstall Magisk within app, recovery mode
|
|
cannot get correct device info.
|
|
|
|
[CANCEL] [OK]
|
|
```
|
|
|
|
3. **Click OK**
|
|
|
|
### Step 8.3: Select Direct Install
|
|
|
|
1. You're now on the Install screen
|
|
|
|
2. You'll see two options:
|
|
- Select and Patch a File
|
|
- **Direct Install (Recommended)** ← SELECT THIS ONE
|
|
|
|
3. Select **Direct Install (Recommended)**
|
|
|
|
4. Click **LET'S GO →**
|
|
|
|
### Step 8.4: Watch the Magic
|
|
|
|
You'll see:
|
|
```
|
|
- Target image: /dev/block/platform/sdhci-tegra.3/by-name/boot
|
|
- Device platform: arm64-v8a
|
|
- Installing: 28.0 (28000)
|
|
- Unpacking boot image
|
|
- Checking ramdisk status
|
|
- Magisk patched boot image detected
|
|
- Patching ramdisk
|
|
- Pre-init storage partition: mmcblk0p32 ← THIS IS THE KEY!
|
|
- Repacking boot image
|
|
- Flashing new boot image
|
|
- All done!
|
|
```
|
|
|
|
**"Pre-init storage partition: mmcblk0p32" means it worked!**
|
|
|
|
### Step 8.5: Reboot
|
|
|
|
Click the **Reboot** button
|
|
|
|
---
|
|
|
|
## Part 9: Verify Root
|
|
|
|
### Step 9.1: Check Magisk Status
|
|
|
|
1. After reboot, open Magisk app
|
|
|
|
2. You should see:
|
|
```
|
|
Magisk
|
|
Installed 28.0 (28000)
|
|
Zygisk No
|
|
Ramdisk Yes
|
|
```
|
|
|
|
3. **No more "Requires Additional Setup" dialog!**
|
|
|
|
### Step 9.2: Test Root Access
|
|
|
|
1. Install Termux from F-Droid or Aurora Store
|
|
|
|
2. Open Termux
|
|
|
|
3. Type:
|
|
```bash
|
|
su
|
|
```
|
|
|
|
4. Magisk will show a **Superuser Request** popup
|
|
|
|
5. Select **GRANT**
|
|
|
|
6. Your prompt should change to `#` (root)
|
|
|
|
7. Verify with:
|
|
```bash
|
|
id
|
|
```
|
|
|
|
Should show:
|
|
```
|
|
uid=0(root) gid=0(root) groups=0(root)...
|
|
```
|
|
|
|
---
|
|
|
|
## 🎉 DONE!
|
|
|
|
Your NVIDIA Shield TV 2019 Pro is now running:
|
|
- **LineageOS 22.x** (Android 15 base)
|
|
- **microG** (Google services replacement)
|
|
- **Magisk 28.0** (root access)
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### Bootloop after Part 7?
|
|
|
|
You need to complete Part 8. The TWRP install alone doesn't work - you MUST do Direct Install from the app.
|
|
|
|
To recover:
|
|
1. Get into fastboot (hold A+B on gamepad while plugging in power)
|
|
2. Reflash clean boot image
|
|
3. Start again from Part 7
|
|
|
|
### Magisk app "Select and Patch a File" crashes?
|
|
|
|
LineageOS doesn't have a proper document picker. This is why we use the two-step TWRP + Direct Install method instead.
|
|
|
|
### fastboot reboot says "unknown reason"?
|
|
|
|
Use this instead:
|
|
```bash
|
|
fastboot oem continue
|
|
```
|
|
or
|
|
```bash
|
|
fastboot continue
|
|
```
|
|
|
|
### Can't get into bootloader/fastboot?
|
|
|
|
Method 1: `adb reboot bootloader`
|
|
|
|
Method 2: Hold **A+B buttons** on gamepad while plugging in Shield power
|
|
|
|
Method 3: Use Android phone as USB HID keyboard (advanced)
|
|
|
|
### "No command" in recovery?
|
|
|
|
You booted to stock recovery, not TWRP. Reflash TWRP per Part 3.
|
|
|
|
---
|
|
|
|
## Why This Two-Step Process?
|
|
|
|
After 2 years of failed attempts, here's why this works:
|
|
|
|
1. **CLI magiskboot patching** - Causes bootloop on Shield (unknown incompatibility)
|
|
|
|
2. **TWRP-only Magisk install** - Can't find the preinit storage partition, so Magisk doesn't persist properly
|
|
|
|
3. **Magisk app Direct Install** - Has Shield-specific detection code that correctly identifies mmcblk0p32 as preinit storage
|
|
|
|
The solution: Use TWRP to get Magisk partially installed (enough for the app to see "Magisk patched boot image detected"), then use the app to complete the installation properly.
|
|
|
|
---
|
|
|
|
## Keep These Files
|
|
|
|
Save backups of:
|
|
- Your clean `boot.img` (before any Magisk patching)
|
|
- TWRP recovery image
|
|
- Magisk v28.0 APK
|
|
- LineageOS ZIP
|
|
|
|
---
|
|
|
|
*Guide created after mass profanity and 2 years of bootloops.*
|
|
*Now go enjoy your rooted Shield.*
|