A professional partition management tool for Nintendo Switch SD cards with dual-mode operation: Migration and Cleanup.
NX Migrator Pro provides two powerful modes for managing your Nintendo Switch SD card partitions:
Migrate partitions from a smaller SD card to a larger one with automatic FAT32 expansion.
Remove unwanted partitions (Linux/Android/emuMMC) from a single SD card and reclaim space for FAT32.
- FAT32 (hos_data) - Main Nintendo Switch data partition
- Linux (L4T) - Single Linux partition for Lakka/Ubuntu
- Android - Both Dynamic (Android 10+) and Legacy (Android 7-9)
- emuMMC - Single or Dual emuMMC partitions
- Smart Scanning - Automatically detects partition layout
- Selective Migration - Choose which partitions to migrate
- Auto-Expand FAT32 - Automatically expand FAT32 to use free space
- Safe - Source disk is never modified (read-only access)
- Fast - Optimized sector-by-sector copying with 32MB chunks
- Single-Disk Operation - Works on one SD card (no target needed)
- Selective Removal - Choose which partitions to remove
- FAT32 Preservation - Backs up FAT32 data temporarily during cleanup
- Auto-Expand - Automatically expands FAT32 to reclaim freed space
- Safe Backup - Prompts for backup confirmation before proceeding
- Modern dark-themed interface built with ttkbootstrap
- Visual partition layout display
- Real-time progress tracking with detailed status
- Pre-migration validation and warnings
- Detailed partition information and size calculations
- OS: Windows 10/11 (64-bit)
- RAM: 512MB minimum
- Permissions: Administrator privileges required
- Disk Space: Minimal (application is ~10MB)
- Source SD Card (your current smaller card)
- Target SD Card (must be larger than source)
- SD card reader(s) - can use one or two readers
- Download
NXMigratorPro.exefrom the Releases page - Double-click
NXMigratorPro.exe - Follow the on-screen instructions
If you want to run from Python source:
- Install Python 3.8+ from python.org
- Install dependencies:
pip install -r requirements.txt
- Run as Administrator:
python main.py
Choose your operation mode at the top of the window:
- Migration Mode - Migrate from small SD to large SD
- Cleanup Mode - Remove partitions from single SD
- Insert both source and target SD cards
- Click "Refresh Disks" to detect SD cards
- Select your Source SD Card (smaller, original)
- Select your Target SD Card (larger, destination)
WARNING: Target disk will be COMPLETELY ERASED!
- Click "Scan Source SD Card"
- Wait for the scan to complete
- Review the detected partition layout
The tool will automatically detect:
- FAT32 partition (hos_data)
- Linux partition (L4T) if present
- Android partitions (Dynamic or Legacy) if present
- emuMMC partitions (Single or Dual) if present
Choose what to migrate:
- FAT32 Partition (always migrated, will be expanded to use free space)
- Linux Partition (optional)
- Android Partitions (optional)
- emuMMC Partitions (optional)
- Click "Calculate New Layout"
- Review the new partition layout
- Check the comparison dialog showing:
- Source vs Target sizes
- How much space FAT32 will gain
- Free space after migration
- Click "Start Migration"
- Confirm the warning dialogs
- Wait for migration to complete
DO NOT remove SD cards or power off during migration!
Migration Progress:
- Preparing Disk (5%)
- Copying Partitions (10-80%)
- Writing Partition Tables (85-90%)
- Updating emuMMC Config (95-99%)
- Complete (100%)
Once complete:
- Safely remove both SD cards
- Insert target SD card into your Nintendo Switch
- Boot normally - all data and partitions preserved
- Insert the SD card you want to clean up
- Click "Refresh Disks" to detect SD cards
- Select the SD card
- Click "Scan SD Card"
- Wait for the scan to complete
- Review the detected partition layout
Choose what to remove:
- Remove Linux - Delete Linux (L4T) partition
- Remove Android - Delete all Android partitions
- Remove emuMMC - Delete emuMMC partition(s)
- Click "Calculate Preview" (happens automatically)
- Review the "After Cleanup" layout
- Verify FAT32 expansion size
- IMPORTANT: Make sure you have a backup of your SD card!
- Click "Start Cleanup"
- Confirm the warning dialogs
- Wait for cleanup to complete (10-30 minutes)
DO NOT remove SD card during cleanup!
Cleanup Process:
- Backing up FAT32 data (5-35%)
- Cleaning disk (40-45%)
- Writing new partition table (50-55%)
- Creating FAT32 filesystem (60-70%)
- Restoring FAT32 data (75-95%)
- Updating configs (97-99%)
- Complete (100%)
Once complete:
- Safely remove the SD card
- Insert into your Nintendo Switch
- Boot normally - unwanted partitions removed, FAT32 expanded
[MBR] Partition 0: FAT32 (hos_data)
[MBR] Partition 0: FAT32 (hos_data)
[MBR] Partition 1: Linux (l4t)
[MBR] Partition 0: FAT32 (hos_data)
[MBR] Partition 1: emuMMC
[MBR] Partition 0: FAT32 (hos_data)
[MBR] Partition 1: emuMMC
[MBR] Partition 2: emuMMC2
[MBR] Partition 0: FAT32 (hos_data)
[MBR] Partition 1: emuMMC
[MBR] Partition 2: emuMMC2
[MBR] Partition 3: GPT Protective
[GPT] Entry 0: hos_data (FAT32)
[GPT] Entry 1: l4t (Linux)
[GPT] Entry 2-8: Android partitions (boot, recovery, dtb, misc, cache, super, userdata)
[GPT] Entry 9: emummc
[GPT] Entry 10: emummc2
- Backup your SD card data (recommended)
- Ensure target SD card is larger than source
- Use a good quality SD card for target
- Close all programs accessing the SD cards
- Run as Administrator
- DO NOT remove SD cards
- DO NOT power off your computer
- DO NOT cancel the migration
- Wait patiently (30-60 minutes for 128GB, longer for larger cards)
- Verify partition layout in the tool
- Test target SD card in Nintendo Switch
- Keep source SD card as backup until verified working
- Run as Administrator (right-click → Run as Administrator)
- Make sure SD cards are properly inserted
- Click "Refresh Disks"
- Try different USB ports
- Check Device Manager for SD card readers
- Ensure target SD card is actually larger than source
- Some SD cards report slightly different sizes
- Check SD card connections
- Try different SD card reader
- Verify target SD card is not write-protected
- Check for bad sectors on target SD card
- The tool automatically updates emuMMC sector offsets in the
raw_basedfiles - If issues persist, verify the emuMMC/RAW1 or emuMMC/RAW2 folders contain correct offsets
- Check nx_migrator_pro_*.log for any emuMMC update errors
"Temporary backup directory full"
- Cleanup mode backs up FAT32 data to your system temp folder
- Ensure you have enough free space on your system drive (C:)
- Required space = size of your FAT32 partition
- Alternative: Free up space on C: drive before cleanup
"Cleanup failed during restore"
- If cleanup fails during FAT32 restore, your temp backup is still safe
- Check temp folder (C:\Users\YourName\AppData\Local\Temp\nx_partition_backup_*)
- Manually copy files back if needed
- Always keep original SD backup before cleanup!
- Creates 100% hekate-compatible partition tables
- MBR for simple layouts (no Android)
- MBR + GPT for complex layouts (with Android)
- Exact same structure as hekate's partition manager
- 16MB alignment for optimal SD card performance
Dynamic (Android 10+): 7 partitions
- boot (64MB), recovery (64MB), dtb (1MB), misc (3MB)
- cache (60MB), super (5922MB), userdata (variable)
Legacy (Android 7-9): 9 partitions
- vendor (1GB), APP (3GB), LNX (32MB), SOS (64MB)
- DTB (1MB), MDA (16MB), CAC (700MB), MSC (3MB), UDA (variable)
Migration speed depends on SD card quality and reader:
- Average: 30-50 MB/s transfer rate
- 128GB card: ~45-60 minutes
- 256GB card: ~90-120 minutes
- 512GB card: ~3-4 hours
Performance optimizations:
- 32MB chunk size for optimal throughput
- Direct sector-level I/O bypassing filesystem overhead
- Parallel operations where possible
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
GPL-2.0 License - same as hekate bootloader
Copyright (c) 2024
- CTCaer - Original hekate bootloader and partition manager
- ttkbootstrap - Modern GUI framework
- Open an issue on GitHub
- Check existing issues for solutions
- Review this README and troubleshooting section
If you find this project useful, please consider supporting me by buying me a coffee!
Made for the Nintendo Switch homebrew community
