Hi all,
I am back on my Kompakt!
I successfully rooted my device and added Google Services so I can use the transit and bike apps I was missing. I relied heavily on Claude for this process and went through many iterations of the plan to make sure it was as solid as possible before beginning.
Following is a guide to the process, written by Claude and reviewed by me to make it as accurate, complete, user-friendly, and (relatively) safe as possible. However, please note that this is an inherently dangerous process and I cannot provide support of any kind. This is entirely AT YOUR OWN RISK and WILL VOID YOUR WARRANTY.
![]()
Be sure to read the guide thoroughly before you begin.
DISCLAIMER
Rooting modifies your device at a low level. Worst-case outcomes include a soft brick
requiring BROM recovery, or in rare circumstances a hard brick requiring hardware repair
or rendering the device permanently unusable. While this guide documents steps that
worked on one device, there is no guarantee they will work on yours.Rooting voids your Mudita warranty. Mudita may refuse service on any device that
has been rooted or has had its bootloader unlocked.This guide is provided as-is. The author cannot be held responsible for any damage to
your device, data loss, or any other consequences of following these instructions. No
support is offered — if something goes wrong, you are on your own. Proceed only if you
accept these risks.
Method: mtkclient BROM exploit + fastboot OEM unlock + Magisk + LiteGApps (optional)
This guide roots the Mudita Kompakt without replacing the OS. After rooting you keep the
stock Mudita interface; Magisk runs underneath it and lets you install modules (like GApps).
Tested on: firmware 1.5.0, build tagged dev-keys, active boot slot _b
Data wipe: Phase 4 (bootloader unlock) factory-resets the phone. Back up everything
you care about before starting.
Platform: This guide is written for Linux. If you are on Windows or macOS, see the
Platform notes section at the bottom before starting.
What you need
Hardware
- Mudita Kompakt (charged to 100% before you begin — the phone cannot charge in BROM mode)
- Computer running Linux, Windows, or macOS
- USB cable with USB-C on the phone end (the computer end depends on your ports — USB-A and USB-C both work)
Software (all free)
- Python 3 and pip
- Android tools:
adb,fastboot - mtkclient (downloaded in Phase 0)
- Magisk v30.7 APK (downloaded in Phase 0)
- LiteGApps SuperLite arm64 Android 12 zip (optional, downloaded in Phase 0)
Before you touch the phone: back up your data
Phase 4 (bootloader unlock) factory-resets the phone. Any data not backed up will be gone.
The easiest option: use Mudita Center (the official desktop app, available for Windows, macOS, and Linux). It backs up contacts, messages, call history, and notes in one step.
Beyond what Mudita Center covers, also back up:
- Any messaging apps — most end-to-end encrypted apps (Signal, WhatsApp, etc.) require explicit action to move data to a new device. Check whether the app has a built-in backup/export option before you start. If the Kompakt is your primary device for one of these, transfer the account to another phone first, following that app’s own instructions.
- Photos and files — copy
/sdcard/to your computer:adb pull /sdcard/ ./kompakt-backup/
(this requires ADB — USB debugging must be enabled first; see Phase 1. If you haven’t
done that yet, come back to this command at the end of Phase 1 before proceeding to Phase 2.)
Phase 0 — Stage everything before touching the phone
Do not proceed to Phase 1 until this checklist is complete.
Open a terminal. All commands below are for Linux — Windows and macOS users, see the Platform notes section at the bottom for what differs.
0a — Install Android tools
# Fedora:
sudo dnf install android-tools python3-pip
# Ubuntu/Debian:
sudo apt install adb fastboot python3-pip
0b — Download and install mtkclient
git clone https://github.com/bkerler/mtkclient
cd mtkclient
pip3 install -r requirements.txt
sudo cp Setup/Linux/50-android.rules Setup/Linux/51-edl.rules Setup/Linux/52-mtk.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger
cd ..
Verify it works:
cd mtkclient
python mtk.py --help
You should see a list of subcommands including r, w, reset, da, and dumppreloader.
If you don’t, stop and troubleshoot the install before continuing.
All subsequent commands that start with cd mtkclient assume you are running from the
directory that contains the mtkclient folder. After the verify step above you are
inside it — run cd .. to return to the parent before continuing.
0c — Download files
Download these and put them in your working directory (your project folder or
wherever you are running commands from):
- Magisk v30.7 APK: Releases · topjohnwu/Magisk · GitHub
→ file:Magisk-v30.7.apk(check for newer stable version) - LiteGApps SuperLite arm64 Android 12 (optional — only if you want Google Play):
LiteGapps - Browse /litegapps/arm64/31/superlite at SourceForge.net
→ file:LiteGapps-arm64-12.0-20241023-official-SuperLite.zip(56.7 MB)
0d — Charge the phone to 100%
The Kompakt cannot charge while in BROM mode. A dead battery mid-process means
a bricked phone until you can restore via BROM, which is recoverable but painful.
Phase 1 — Prepare (phone booted, connected via USB)
Boot the phone normally. Enable USB debugging if you haven’t already:
- Settings → About → tap Build number 7 times in a row
(you’ll see an entry showing something like “MuditaOS K 1.5.0”; a message will appear
confirming Developer options are now enabled) - Settings → System → Developer options → enable USB debugging
Plug the USB cable into the Kompakt, then into your computer.
Accept the “Allow USB debugging?” dialog on the phone screen. Check “Always allow from
this computer” before tapping OK — this prevents the dialog from appearing every time
you reconnect the cable.
Confirm ADB sees the phone:
adb devices
You should see a device ID and the word device. If it says unauthorized, unplug and
replug the cable and accept the dialog again.
Install Magisk:
adb install Magisk-v30.7.apk
Open the launcher on the phone and confirm Magisk appears. If it doesn’t, something
went wrong with the install — stop and check the adb output before continuing.
Phase 2 — Dump the boot partition via BROM
BROM (Boot ROM) is a low-level recovery mode built into MediaTek chips. You reach it
with a specific button sequence while plugging in USB. Once in BROM, mtkclient can read
and write partitions without needing the phone to boot.
Important: Do not unplug or power off the phone between commands while in BROM mode.
The phone stays in BROM and each command reconnects automatically.
Enter BROM and verify the partition table
Run this command first — it waits for the phone to connect in BROM mode:
cd mtkclient
python mtk.py printgpt
Now enter BROM mode on the phone:
- Power off the Kompakt completely. Wait for the screen to go dark.
- Unplug the USB cable from the Kompakt (the cable is still connected from Phase 1 —
leave the computer end plugged in, just disconnect the Kompakt end). - Press and hold both Volume Down and Volume Up on the Kompakt at the same time.
- While still holding both buttons, plug the USB cable into the Kompakt.
- Release both buttons when you see mtkclient respond in the terminal.
Note: It’s both volume buttons simultaneously — not just one.
The terminal should print the partition table. Look for boot_b in the list and confirm
it is present before running the next commands. boot_b is the active boot partition
on this device.
Dump the active boot partition
Still in BROM mode (do not unplug):
python mtk.py dumppreloader
python mtk.py r boot_b boot_b.img
python mtk.py reset
dumppreloader— some MT6761 devices need this first; it’s harmless if it failsr boot_b boot_b.img— reads the active boot partition and saves it toboot_b.imgreset— boots the phone back into Android and ends the BROM session
If a command fails to connect (mtkclient hangs on “waiting for device” or reports an
error), the phone has exited BROM — this can happen if there’s a delay between commands.
Power off the Kompakt (hold the power button until the screen goes dark), then re-run the
failed command and re-enter BROM using the same button sequence. You do not need to re-run
commands that already completed successfully.
After reset: unplug the USB cable from the Kompakt and let the phone boot fully to the
home screen. Once the home screen is visible, plug the USB cable into the Kompakt, then
into your computer, and confirm ADB is working:
adb devices
Keep boot_b.img. This is your recovery backup. Do not delete it until everything
is confirmed working.
Phase 3 — Patch the boot image with Magisk
Push the boot image to the phone:
adb push boot_b.img /sdcard/Download/
Push to /sdcard/Download/, not to /sdcard/ directly — Magisk’s file picker navigates
standard Android folders and won’t see a file sitting at the root of storage.
On the phone:
- Open the Magisk app
- On the home screen, tap Install on the Magisk card
- Select “Select and Patch a File”
- Navigate to Downloads and tap
boot_b.img - Wait for the patching to complete
Magisk saves the patched file to /sdcard/Download/ with a name like
magisk_patched-30700_XXXXX.img. Check the exact filename:
adb shell ls /sdcard/Download/
Then pull it using the exact filename you see (replace the X’s):
adb pull /sdcard/Download/magisk_patched-30700_XXXXX.img ./magisk_patched_boot_b.img
Confirm magisk_patched_boot_b.img is now in your working directory before continuing.
Phase 4 — Unlock the bootloader (point of no return)
This step factory-resets the phone. Everything on the phone will be erased.
Complete the backup steps above before continuing.
The Kompakt’s Developer options hides the “OEM unlocking” toggle unless you change
the display density first. You also need a WiFi connection.
On the Kompakt:
- Connect to WiFi (required for OEM unlocking to appear)
- Settings → System → Developer options → Smallest width
- Change the value to 399 (default is 360; the OEM unlocking toggle is hidden at the
default value; you can set it back to 360 after enabling OEM unlocking if you want to
restore the default — the control won’t go above 399) - Still in Developer options: enable OEM unlocking
On your computer:
adb reboot bootloader
The phone enters fastboot mode. The screen may appear blank or show minimal text —
this is normal for this device. Verify the phone is visible in fastboot before continuing:
fastboot devices
This should show a device ID. If it shows nothing, the phone didn’t enter fastboot — run
adb reboot bootloader again. (A Power + Volume Up combo may also work to enter fastboot
on some devices, but this has not been confirmed on the Kompakt.)
fastboot flashing unlock
The screen will not show a visible dialog, but one is there. Press Volume Up on the
Kompakt to confirm the unlock.
The phone wipes all data and stays in fastboot mode. Wait for it to finish.
Phase 5 — Flash the patched boot image
The phone should still be in fastboot mode from Phase 4. Confirm before flashing:
fastboot devices
If it shows nothing, the phone exited fastboot. A Power + Volume Up combo may enter fastboot
on some devices but has not been confirmed on the Kompakt — if it doesn’t work, use BROM
to flash the patched boot image instead (see Re-rooting after a factory reset, step 3, for
the BROM flash sequence). Then flash:
fastboot flash boot_b magisk_patched_boot_b.img
fastboot reboot
The phone reboots. On the first boot you will see a warning screen about the bootloader
being unlocked — this is normal and harmless; it disappears after a few seconds. (Phase 6
explains this in full.) Work through the setup wizard minimally — skip Google account
sign-in, skip WiFi if you can. You will set things up properly after verifying root.
Once on the home screen, re-enable Developer options and USB debugging:
- Settings → About → tap Build number 7 times
- Settings → System → Developer options → enable USB debugging
- Unplug the USB cable from the Kompakt (it is still connected from Phase 4), then plug
it back into the Kompakt, then into your computer - Accept the “Allow USB debugging?” dialog on the phone — check “Always allow from
this computer” before tapping OK (the factory reset cleared the previous authorization)
Phase 6 — Verify root
The orange/unlock warning is normal
On first boot and on every subsequent boot, you will see a warning screen saying the
device has been unlocked (the Android spec calls this “Orange State”; on this e-ink
screen it appears in black and white). This is expected and harmless. It disappears
on its own after a few seconds.
Do not try to remove this warning by blanking or patching vbmeta. Doing so
causes a bootloop on this device that cannot be fixed via fastboot — recovery would
require BROM and the original vbmeta partition image from flapke’s Proton Drive folder.
Leave it alone.
Complete Magisk installation
Open the Magisk app. If it prompts you to finish installation:
- Tap Let’s Go
- Tap Direct Install
- Let Magisk complete
- Tap Reboot when prompted
If Magisk opens without any installation prompt, it is already installed correctly —
skip straight to Enable Superuser access below.
Enable Superuser access
Open Magisk and tap Superuser in the bottom navigation bar. Check what you see:
- “Superuser access: Apps and ADB” — already configured, proceed to Confirm root via ADB, no reboot needed.
- A toggle that is off — enable it, then reboot the device before testing root.
Confirm root via ADB
Plug the USB cable into the Kompakt, then into your computer if it isn’t already connected.
If a reboot just happened (Magisk installation or Superuser toggle), the cable will have
been disconnected — replug it now. Accept the “Allow USB debugging?” dialog if it appears.
Then:
adb shell su -c id
Expected output: uid=0(root) gid=0(root) ...
If you see that, root is working.
Phase 7 — Install LiteGApps (optional — adds Google Play)
Skip this phase if you don’t want Google Play.
The stock Mudita OS has no pre-installed Google apps, so there’s no conflict risk.
LiteGApps installs systemlessly via Magisk — it does not modify system partitions.
With the USB cable connected from Phase 6, push the zip to the phone:
adb push LiteGapps-arm64-12.0-20241023-official-SuperLite.zip /sdcard/
On the phone:
- Open Magisk → tap Modules (bottom navigation bar)
- Tap Install from storage
- Navigate to
/sdcard/and select the LiteGApps zip
(unlike Magisk’s patch-file picker, this uses the Android system file picker which
can see the storage root — you don’t need to put it in Downloads) - Wait for installation to complete
- Tap Reboot — the button is at the very bottom of the screen and may be partially
cut off; scroll down as far as possible to reach it
After reboot, Play Store should appear on the launcher. Sign in to a Google account
and download a test app to confirm it works.
OTA updates after rooting
Root will be lost after an OTA update, but the device will not be bricked.
The Kompakt uses A/B partitions. An OTA update writes new firmware to the inactive slot
and switches the active slot on next boot. That newly booted slot has an unpatched stock
boot image — root is gone, but the phone works normally.
Brick risk:
- Hard brick: extremely unlikely. Magisk is systemless and does not modify system
partitions, so the OTA has clean system data to update. BROM access provides a backstop
regardless. - Soft brick: low but unknown. It is not documented whether Mudita’s OTA process checks
bootloader lock state or attempts to re-lock it. If it does re-lock, you would need to
run through Phase 4 again before re-rooting. Watch the bootloader state after any OTA.
To re-root after an OTA update:
The bootloader stays unlocked across OTA updates (unless Mudita’s OTA re-locks it —
see above). You do not need to repeat Phase 4.
-
Check which slot is now active:
adb shell getprop ro.boot.slot_suffixThe result will be
_aor_b. Use that slot name in the commands below. -
Dump the new boot partition (replace
boot_awith your active slot if different):cd mtkclient python mtk.py printgptEnter BROM (see Phase 2 for the full sequence), then:
python mtk.py r boot_a boot_a.img python mtk.py reset -
Patch the new boot image with Magisk (repeat Phase 3 using
boot_a.img). -
Flash the patched image via fastboot:
adb reboot bootloader fastboot flash boot_a magisk_patched_boot_a.img fastboot reboot -
Verify root (repeat Phase 6).
There is no confirmed way to disable automatic OTA updates on the Kompakt. Be aware that
an update may install and switch slots without warning — check for root after any reboot
following a system update.
Rollback and recovery
If the phone won’t boot after Phase 5
A hardware button combo to enter fastboot has not been confirmed on the Kompakt. Try
the following, and if fastboot entry fails, use BROM recovery instead (see below).
- Plug the USB cable into the Kompakt, then into your computer.
- Try entering fastboot by holding Power + Volume Up for 10 seconds.
- Run
fastboot devicesto confirm the phone is in fastboot. If nothing shows,
skip to the BROM recovery section below instead. - If fastboot is confirmed:
fastboot flash boot_b boot_b.img
fastboot reboot
If fastboot is unreachable (deep bootloop)
Use BROM to restore the original boot image.
-
Run this command first — it will wait for the phone to connect:
cd mtkclient python mtk.py w boot_b boot_b.img -
Force the phone off: hold the power button until the screen goes dark. In a deep
bootloop you can’t power off normally — hold it down anyway and wait; it will
eventually shut down, or catch it mid-bootloop the moment the screen goes dark. -
Plug the USB cable into your computer (leave the Kompakt end unplugged).
-
Press and hold both Volume Down and Volume Up on the Kompakt simultaneously.
-
While still holding both buttons, plug the USB cable into the Kompakt.
-
Release both buttons when mtkclient responds in the terminal. If mtkclient doesn’t
respond within a few seconds, the BROM entry failed — unplug the cable from the Kompakt
and try again from step 2. In a deep bootloop you may need several attempts to catch the
right moment. -
Wait for the write to complete, then run:
python mtk.py reset -
Unplug the USB cable from the Kompakt and let the phone boot normally.
Full OTA recovery (removes root, restores stock firmware)
Plug the USB cable into the Kompakt, then into your computer. Try entering fastboot by
holding Power + Volume Up for 10 seconds (unconfirmed on Kompakt — if fastboot devices
shows nothing, use adb reboot bootloader if the phone can boot, or BROM if it cannot),
then:
fastboot reboot recovery
# once in recovery, from your computer:
adb sideload <path-to-ota.zip>
The OTA zip and partition images are available in flapke’s Proton Drive folder:
https://drive.proton.me/urls/FMK9ZC2E6C#UtqGgQw8jDsV
If you can’t find the file, the OTA URL can also be retrieved from device logcat while
the phone is booted.
Re-rooting after a factory reset
If you factory-reset the phone after rooting (Settings → System → Factory reset),
follow these steps to re-root without going through the full process:
- Enable USB debugging: Settings → About → tap Build number 7 times →
Settings → System → Developer options → USB debugging. Plug the USB cable into
the Kompakt, then into your computer. Accept the “Allow USB debugging?” dialog. adb install Magisk-v30.7.apk— confirm Magisk appears on the launcher- In your mtkclient directory, run:
python mtk.py w boot_b magisk_patched_boot_b.img
(this waits for the phone). Then enter BROM: unplug the USB cable from the Kompakt
(leave the computer end plugged in), press and hold both Volume Down and Volume Up on
the Kompakt, plug the USB cable into the Kompakt while holding both buttons, release
when mtkclient responds. After the write completes, runpython mtk.py reset, then
unplug the USB cable from the Kompakt. - Let the phone boot. Open Magisk → complete installation if prompted (Let’s Go → Direct
Install → Reboot; “Let’s Go” may not appear). Then tap Superuser in the bottom nav bar —
if it shows “Superuser access: Apps and ADB” it is already configured; if there is a
toggle, enable it and reboot. - Plug the USB cable into the Kompakt, then into your computer. Accept the “Allow USB
debugging?” dialog. Then:
adb push LiteGapps-arm64-12.0-20241023-official-SuperLite.zip /sdcard/ - Magisk → Modules → Install from storage → select zip → reboot
Known quirks and warnings
- Both volume buttons for BROM — confirmed by community. Vol Down alone does not work.
da seccfg unlockdoes not work on this device — other MT6761 guides use this mtkclient
command to unlock the bootloader via BROM. It fails here because the Kompakt uses the V4
lockstate algorithm, which mtkclient does not support. The correct method is fastboot OEM
unlock (Phase 4). Don’t waste time on seccfg.- OEM unlocking hidden at default density — changing Smallest width to 399 reveals it (the control maxes out at 399).
- Fastboot unlock dialog is invisible — press Vol Up to confirm.
- No confirmed hardware key combo for recovery mode — on most Android devices you can
hold a button combination to reach recovery. On the Kompakt, no such combo has been
confirmed in official documentation. If the device can boot, factory reset via
Settings → System → Factory reset (Settings only — no hardware key combo confirmed). If it can’t boot, use BROM to restore the original
boot image first (see Rollback section), get it booting, then factory reset from Settings. - Orange State warning on every boot — this is permanent and normal. Do not patch vbmeta; it causes a bootloop recoverable only via BROM with the original vbmeta image.
- ADB permission errors pushing files — try downgrading to an older version of adb.
- Magisk reboot button in Modules is off-screen — scroll all the way down to reach it.
- Do not touch nvram, md1img, or modem partitions — they are unique to your device
and cannot be restored if overwritten. mtkclient can write to them; don’t.
Platform notes: Windows and macOS
The commands in this guide are written for Linux, but mtkclient runs on Windows and macOS
as well. The phone-side steps (button combos, Magisk, fastboot) are identical on all platforms.
Only the setup and how you run terminal commands differs.
Windows
-
Install Python from python.org (3.9 or later).
Do not use the Microsoft Store version — it will fail during setup.
During install, check “Add Python to PATH.” -
Install Git from git-scm.com.
-
Install WinFsp (required by mtkclient):
Download from winfsp.dev/rel and run the installer. -
Clone mtkclient and install dependencies — open Command Prompt or PowerShell:
git clone https://github.com/bkerler/mtkclient cd mtkclient pip3 install -r requirements.txt -
Install UsbDk (replaces udev rules on Windows):
Download the.msiinstaller from github.com/daynix/UsbDk/releases and install it.
After installing, runUsbDkController -nwith the Kompakt connected in BROM mode —
you should see a device with vendor0x0E8Dand product0x0003. -
Install Android Platform Tools (for
adbandfastboot):
Download from developer.android.com/tools/releases/platform-tools,
extract the zip, and add the folder to your PATH (or run commands from inside the folder). -
Replace
pythonwithpython3if that’s what your install uses. Replacesudowith
nothing (Windows doesn’t use sudo). All other commands in this guide are the same.
If you hit build errors during
pip3 install, install Visual Studio Build Tools
(Desktop development with C++ workload) from visualstudio.microsoft.com/visual-cpp-build-tools.
macOS
-
Install Homebrew if you don’t have it:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -
Install macFUSE, OpenSSL, and Android tools:
brew install macfuse openssl android-platform-toolsReboot after installing macFUSE — the kernel extension requires it.
-
Clone mtkclient and install dependencies using a Python virtual environment:
git clone https://github.com/bkerler/mtkclient cd mtkclient python3.9 -m venv mtk_venv source mtk_venv/bin/activate pip3 install --pre --no-binary capstone capstone pip3 install PySide6 libusb pip3 install -r requirements.txtActivate the virtual environment (
source mtk_venv/bin/activate) each time you open
a new terminal before runningpython mtk.pycommands. -
No udev rules on macOS — skip the
sudo cp ... /etc/udev/rules.d/step from the Linux guide.
Run mtkclient commands withoutsudo. -
All other commands in this guide are the same.
Resources
- Mudita Forum: Rooted Kompakt Power User thread — community experience reports (login required)
- Mudita Forum: MicroG thread, post #43 — short root guide by flapke (login required)
- Mudita Forum: LineageOS GSI guide — BL unlock steps applicable even without GSI (login required)
- XDA: Nokia 2.2 MT6761 A/B guide — same SoC and A/B partition scheme; useful reference
- mtkclient GitHub — BROM exploit tool