A full-featured MediaTek flash & repair desktop tool built with Python and PyQt6
MTK Client is an open-source desktop GUI for flashing, repairing, and managing MediaTek (MTK) Android devices on Windows. It provides a clean dark-themed interface covering everything from low-level BROM communication to IMEI management — with a built-in terminal for operations that go beyond what a GUI can cover.
Built as a Python/PyQt6 desktop app, it wraps the mtkclient library with a user-friendly interface suitable for both beginners and experienced technicians.
- Auto-scan COM/USB ports with live refresh
- Connect in BROM, Preloader, or Download Agent (DA) mode
- Load custom DA binary and scatter files
- Live device info panel: Chip ID, HW code, HW version, secure boot state, serial number, battery voltage
- Load scatter file or firmware ZIP to populate partition table
- Per-partition selection with checkboxes
- Options: format before flash, verify after write, auto-reset, erase userdata
- Live progress bar with write speed indicator
- Quick presets: Full backup, Boot, Recovery, NVRAM, Persist
- Custom address range reads (hex start + length)
- Named partition reads
- Checksum verification on read
- Targeted erase: userdata, cache, NVRAM, persist, or full chip
- Custom partition or raw address range
- Confirmation dialog before any destructive operation
- Split-pane browser: device filesystem ↔ local PC
- Mount/unmount device filesystem
- Push files to device, pull files to PC
- Local directory browser
- Auth bypass methods: Kamakiri, DA auth skip, SLA auth skip
- Bootloader unlock / lock
- FRP lock removal
- Secure boot state check
- RSA key read
- Read and write IMEI 1 & 2
- Full NVRAM backup, restore, repair, reset
- EFS / modem partition backup and restore
- Modem NV read
- Full interactive shell embedded in the app
- Runs any system command as a real subprocess
- Command history (↑ / ↓ arrow keys)
- Color-coded output, clear, copy-all
- Ideal for direct
mtkclientCLI commands and advanced operations
- Windows 10 or 11
- Python 3.10 or newer → python.org
- MediaTek USB VCOM driver (install from your device vendor or use Zadig)
Option 1 — Batch launcher (easiest)
Double-click launch_mtk.bat
It installs all dependencies automatically and launches the app.
Option 2 — Manual
git clone https://github.com/lowi-kr/mtk-client.git
cd mtk-client
pip install -r requirements.txt
python mtk_client.pypip install mtkclientWithout this, the GUI runs in simulation mode (useful for UI testing without a device).
- Put your MTK device in BROM mode: power off → hold Vol Down → plug USB
- Open the Connection tab
- Click ↺ Refresh to scan ports
- Select the correct COM port and click Connect Device
- Connect the device first
- Go to the Flash tab
- Click Load Scatter… and select your
MT6xxx_Android_scatter.txt - Check the partitions you want to flash
- Click Flash Selected
The Terminal tab gives you a direct shell. Examples using mtkclient CLI:
# Auth bypass
python -m mtkclient.mtk payload
# Read boot partition
python -m mtkclient.mtk r boot boot.bin
# Write boot partition
python -m mtkclient.mtk w boot boot.bin
# Read full flash
python -m mtkclient.mtk rf full_backup.bin
# Unlock bootloader
python -m mtkclient.mtk da seccfg unlockmtk-client/
├── mtk_client.py # Main application (all tabs, theme, logic)
├── launch_mtk.bat # Windows one-click launcher
├── requirements.txt # Python dependencies
├── .gitignore
└── README.md
- Real mtkclient backend integration (replace simulation stubs)
- Linux & macOS support
- Scatter file parser with auto partition detection
- Firmware OTA ZIP unpacker
- TWRP / Magisk auto-installer
- Theme switcher (light / dark)
- Session logging to file
- Drag-and-drop firmware loading
- Multi-device support
Pull requests are welcome. For major changes, open an issue first to discuss what you'd like to change.
- Fork the repo
- Create a feature branch (
git checkout -b feature/my-feature) - Commit your changes (
git commit -m 'Add my feature') - Push to the branch (
git push origin feature/my-feature) - Open a Pull Request
This tool is intended for device repair, development, and educational purposes only. Use it only on devices you own or have explicit permission to work on. The author is not responsible for bricked devices, voided warranties, or any other damage.
MIT © 2025
Made with Python + PyQt6