# 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.*
