--- name: android-fastboot description: Use for fastboot operations, flashing partitions, bootloader unlocking, recovery mode, or partition management. Triggers on "fastboot", "flash boot.img", "unlock bootloader", "recovery mode", "TWRP", "Magisk", "partition", "sideload", "A/B slots". WARNING - These operations can brick devices if done incorrectly. --- # Android Fastboot Operations ⚠️ **DANGER ZONE** - Fastboot operations write directly to device partitions. Wrong images or interrupted operations can brick devices. Always verify: 1. Correct device (check `fastboot getvar product`) 2. Correct images for exact device model 3. Bootloader is unlocked (for flashing) 4. Battery > 50% --- ## Entering Fastboot Mode ```bash # From ADB (device running) adb reboot bootloader # Hardware buttons (most devices) # Power + Volume Down (hold until fastboot screen) ``` ## Basic Commands ```bash fastboot devices # List connected devices fastboot getvar all # All device variables fastboot reboot # Reboot to system fastboot reboot bootloader # Stay in bootloader fastboot reboot recovery # Boot to recovery fastboot reboot fastboot # Boot to fastbootd (Android 10+) ``` ## Check Before Flashing ```bash # ALWAYS run these first fastboot devices # Verify connection fastboot getvar product # Verify device model fastboot getvar unlocked # Must be "yes" for flashing fastboot getvar current-slot # Know current A/B slot fastboot getvar battery-level # Should be > 50 ``` --- ## Bootloader Unlocking ### Google Pixel ```bash # 1. Enable OEM unlocking in Developer Options # 2. Boot to fastboot adb reboot bootloader # 3. Unlock fastboot flashing unlock # 4. Confirm on device with volume keys + power # WARNING: This wipes all data! ``` ### Other Manufacturers | Brand | Process | | -------- | ------------------------------------------------------- | | OnePlus | `fastboot oem unlock` | | Xiaomi | Mi Unlock Tool (waiting period) | | Samsung | Uses Odin, not fastboot | | Motorola | Request code from website, `fastboot oem unlock ` | | Sony | Request code from website | ### Check Unlock Status ```bash fastboot getvar unlocked # yes/no fastboot getvar device-state # locked/unlocked fastboot getvar unlock_ability # Can be unlocked? ``` --- ## Flashing Partitions ### Individual Partitions ```bash fastboot flash boot boot.img fastboot flash recovery recovery.img # Non-A/B only fastboot flash dtbo dtbo.img fastboot flash vbmeta vbmeta.img # Disable verification (for custom ROMs) fastboot flash --disable-verity --disable-verification vbmeta vbmeta.img ``` ### Bootloader & Radio (Extra Careful!) ```bash # These can hard-brick if wrong! fastboot flash bootloader bootloader.img fastboot reboot bootloader # REQUIRED after bootloader flash fastboot flash radio radio.img fastboot reboot bootloader # Recommended after radio flash ``` ### Temporary Boot (No Flash) ```bash # Test before committing - reboots to normal after restart fastboot boot recovery.img fastboot boot patched_boot.img ``` --- ## A/B Slot Devices Modern devices have two copies of each partition (A and B). ```bash # Check current slot fastboot getvar current-slot # Returns: a or b # Set active slot fastboot set_active a fastboot set_active b # Flash to specific slot fastboot flash boot_a boot.img fastboot flash boot_b boot.img # Flash to both slots fastboot --slot=all flash boot boot.img ``` --- ## Dynamic Partitions (Android 10+) Large partitions (system, vendor, product) live inside a "super" partition. ### Fastbootd Mode ```bash # Enter userspace fastboot fastboot reboot fastboot # Check if in fastbootd fastboot getvar is-userspace # Should return: yes ``` ### Flash Dynamic Partitions ```bash # Must be in fastbootd mode! fastboot reboot fastboot fastboot flash system system.img fastboot flash vendor vendor.img fastboot flash product product.img ``` ### Virtual A/B Snapshots ```bash # Check snapshot status fastboot getvar snapshot-update-status # Cancel stuck update (CAREFUL!) fastboot snapshot-update cancel ``` --- ## Recovery Operations ### Enter Recovery ```bash adb reboot recovery # Or: Power + Volume Up (varies by device) ``` ### ADB Sideload ```bash # 1. In recovery, select "Apply update from ADB" # 2. Run: adb sideload update.zip ``` ### Flash Custom Recovery (TWRP) ```bash # Test first (temporary boot) fastboot boot twrp.img # If it works, flash permanently # Non-A/B devices: fastboot flash recovery twrp.img # A/B devices (recovery in boot): fastboot flash boot twrp.img ``` --- ## Magisk (Root) ### Installation ```bash # 1. Extract boot.img from your firmware # 2. Transfer to device, patch with Magisk app # 3. Pull patched image adb pull /sdcard/Download/magisk_patched_*.img # 4. Flash patched boot fastboot flash boot magisk_patched_*.img # 5. Reboot fastboot reboot ``` ### Useful Magisk Commands (after rooted) ```bash adb shell su -c "magisk --version" adb shell su -c "resetprop ro.debuggable 1" ``` --- ## Factory Reset / Wipe ```bash fastboot erase userdata # Wipe user data fastboot erase cache # Wipe cache (if exists) fastboot -w # Format data + cache # Full flash with wipe fastboot -w flashall fastboot -w update image.zip ``` --- ## Danger Levels | Level | Operations | | ----------- | ----------------------------------------------------------------- | | ✅ SAFE | `devices`, `getvar`, `reboot`, `boot` (temp) | | ⚠️ MEDIUM | `flash boot/recovery/dtbo`, `set_active` | | 🔴 HIGH | `flash system/vendor`, `erase`, `-w` | | ☠️ CRITICAL | `flash bootloader`, `flash radio`, `flashing lock` with custom OS | --- ## Brick Prevention **Never:** - Flash images from different device models - Interrupt a flash operation - Lock bootloader with custom ROM installed - Flash bootloader/radio without matching versions **Always:** - Verify device with `fastboot getvar product` - Keep stock images available for recovery - Use `fastboot boot` to test before `fastboot flash` - Maintain battery > 50% --- ## Recovery from Soft Brick ```bash # 1. Enter fastboot (Power + Vol Down) fastboot devices # 2. Flash stock boot fastboot flash boot boot.img # 3. For dynamic partitions fastboot reboot fastboot fastboot flash system system.img fastboot flash vendor vendor.img # 4. Wipe if needed fastboot -w # 5. Reboot fastboot reboot ``` For hard bricks (no fastboot access), you need EDL mode (Qualcomm) or manufacturer service tools. --- ## Quick Reference | Task | Command | | ----------------- | ------------------------------ | | Check connection | `fastboot devices` | | Device info | `fastboot getvar all` | | Unlock bootloader | `fastboot flashing unlock` | | Flash boot | `fastboot flash boot boot.img` | | Test recovery | `fastboot boot twrp.img` | | Current slot | `fastboot getvar current-slot` | | Switch slot | `fastboot set_active a` | | Wipe data | `fastboot -w` | | Reboot | `fastboot reboot` |