Lineage GSI for Kompakt

How to Install LineageOS 20 GSI on the Kompakt

WARNING This is a fairly extensive guide, please make sure you understand what you are doing before proceeding. It will require you wiping your device and all data. There is a backup tool provided but I won’t be able to help with all the platform and software oddities of the tools used here.

This guide details the process of installing LineageOS 20 (Android 13) GSI build (lineage-20.0-X-UNOFFICIAL-arm64_X.img) on the Mudita Kompakt. This version has been tested and is known to work on a global Kompakt. The latest security patch is from October, 2025.

Note: I’ve tried LineageOS 20 but LineageOS 21 or 22 may work too, but have not been tested. To try a newer version, follow these same steps using the newer image.

This should provide a vanilla Android experience: notifications, configurability, Google app support, and root access if you desire. Third party apps are more likely to work as well.

This is a fairly generic way to do this. If you’re worried, there will be further development down the line to make this a bit easier and more of and “out of the box experience” for Lineage on this device - stay tuned.

Prerequisites

  • A Mudita Kompakt on version 1.1.1
    • Unfortunately, something around the versions Mudita provided after this release make it difficult to install Android GSI. I would love to hear if there’s a solution to this from Mudita. In order to downgrade you will use mtkclient (or adb works too - but since you will want to backup it will be easier)
    • (GitHub - bkerler/mtkclient: MTK reverse engineering and flash tool) and its requirements (Windows, Linux or macOS) installed
  • ADB & Fastboot installed on your computer.
  • The GSI Image: lineage-20.0-X-UNOFFICIAL-arm64_X.img
  • Three files from this drive:
    • 1.1.1_partitions.zip - boot, dtbo, vbmeta, and vendor_boot images
    • 1.1.1_ota.zip - The OTA image you will flash after
    • vbmeta.img.empty - Required to disable verified boot, rename it to vbmeta.img
    • (Patched Magisk boot.img if you want to root with Magisk.)

Step 0: Backup your device and rollback to 1.1.1

This is essential! If anything goes wrong you can always re-write your original firmware, data, IMEI, etc back to your device. I won’t get too deep into the details of how to do it, as a lot of the explanation is included in the GitHub repository.

macOS Detail

If you are on macOS you will need to run the client with sudo like sudo python mtk_gui.py after following all the install requirements and activating the Python virtual environment.

The backup will take a long time if you backup your user partition (expect to wait an hour or so).

Using mtkclient

This is assuming you have updated to a later firmware > 1.1.1.

While I’m not entirely sure if there is any compatibility issue, this partition backup was created on with an NA version (thanks a lot Jordan!). I didn’t have any trouble installing and proceeding with my Kompakt global version. And big thanks to @flapke for the OTA and Magisk boots!

Backing up

  1. Open python mtk_gui.py (or sudo python mtk_gui.py on macOS).
  2. Turn off the Kompakt
  3. Press and hold power and volume down and hold while you plug in a USB-C cable
  4. Wait until the GUI detects the phone and shows the partitions
  5. Go to dump (to backup your phone) and dump all partitions.

Go get a coffee :slight_smile:

Rollback partitions to 1.1.1

  1. Afterwards, unzipped the 1.1.1_partitions.
  2. Instead of selecting all partitions, select only a select few partitions (e.g. boot, dtbo, vbmeta, vendor_boot) to write from mtkclient gui
  3. Write them!
  4. Once done, unplug and power on with the power button + volume up. You should get to a menu that lets you select fastboot mode to boot to.
  5. fastboot reboot recovery to get to recovery
  6. Select “Apply update from ADB”
  7. Flash the OTA update:
    adb sideload ./1.1.1_ota.zip
    

Afterwards on first boot you will see “Your device is corrupt, you need to reset” - this is expected.

Reset it and boot into a vanilla 1.1.1.

Step 1: Enable ADB and OEM Unlocking

Now you’re ready to actually do the install of Lineage.

Because we’ve rolled back to a generic, fresh state, we’ll need to unlock again.

  1. On the device, go to Settings > About phone.
  2. Tap Build number 7 times to enable Developer Options.
  3. Go to System > Developer options.
  4. Enable USB debugging.
  5. Enable OEM unlocking.
    • Note: An internet connection may be required for this option to appear.
    • If the “OEM unlocking” option is missing at the top, try changing the “Smallest width” (DPI) in Developer Options from 360 to 420. You can revert this change after enabling the option. For some reason the settings layout hides it.

Step 2: Unlock Bootloader

  1. Connect the Kompakt to your computer.
  2. Reboot to the bootloader:
    adb reboot bootloader
    
  3. Unlock the device:
    fastboot flashing unlock
    
  4. Press Volume Up on the device to confirm (there will be no visible prompt)

Stay on the same screen and proceed.

Step 3: Flash the GSI

  1. Disable Verified Boot (AVB):
    Flash the empty vbmeta image while in the bootloader to prevent the device from refusing to boot the custom image.

    fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img
    
  2. Reboot to fastbootd:

    fastboot reboot fastboot
    

    The screen should change to a menu with “fastbootd”.

  3. Flash LineageOS:
    Erase the current system partition and flash the new image.

    fastboot erase system
    fastboot flash system lineage-20.0-20251021-UNOFFICIAL-arm64_bvN.img
    
  4. Wipe Data:
    To ensure a clean install and avoid migration issues:

    • Enter recovery.
    • Select Wipe data / factory reset from the fastbootd menu on your device.
    • Or you can fastboot -w to wipe data.
  5. Reboot:
    Select Reboot system now or run:

    fastboot reboot
    

You should now boot to Lineage!

Step 4: Post-Install Setup

Necessary System & Phh Treble Settings

Due to this being a generic build of Lineage, there are a few settings that need to be enabled in order to avoid crashes and more complete functionality. Below are the necessary settings.

System Settings:

  • Notifications > Notification Light > Disabled
  • Accessibility > Color and Motion > Remove animations

Phh Treble Settings:

Go to Settings > Phh Treble Settings to configure these recommended options:

Misc features:

  • Force navigation bar disabled > Enabled
  • Disable “Voice Call In” router > Enabled

IMS features:

  • Install IMS APK for MeditaTek S vendor > Install
  • Force the presence of 4G Calling setting > Enabled

Other Recommendations

Matt has a nice repo where all of the settings they enabled are saved!

Please let us know if you find any issues with these or have any suggestions!

Notable ones:

  • Rotation performance hint instead of touch > Enabled
  • Dynamic FPS > Enabled
  • Mediatek GED KPI support > Enabled
  • Disable SF GL backpressure > Enabled
  • Disable SF HWC backpressure > Enabled

Known Issues

  • eSIMs: Existing eSIMs persist, but adding/removing them is untested.
  • Notification Light: Will crash if activated.

Step 5: Appendix

You can find more support at the Dumbphones & More Discord server where there are more conversations happening about all things Dumbphone.

With full Android there’s a lot you can do depending on whether you installed Lineage with Google apps or not. You might be interested in installing these additional apps or getting root access.

  • Aurora Store: Access apps from the Google Play Store (I would spoof a Redmi 12 4G)
  • Droidify: A modern F-Droid client for open-source apps.

microG and Google support

  • microG: Install here. Setup instructions via their documentation, this will allow you to recieve push notifications from Google service enabled apps.

Root Access

  • Magisk: For root access, patch the boot.img from your stock firmware and flash the resulting magisk_patched.img via fastboot. You can use the included patched boot and flash it via fastboot.

Recovery

If for any reason you’ve run into an issue or you want to roll back to your stock firmware, it’s quite easy to do once you’ve made a backup with mtkclient.

  • Open mtkclient the same way - python mtk_gui.py
  • Go to “Write”
  • Select the folder where you saved the backup (all partitions should then automatically be selected)
  • Click write & wait some time
13 Likes

My modded kompakt runs LineageOS 20 and with the settings mentioned here it has been stable! I have not had any issues. I would suggest using inkos as there is a function you can enable that will do a eink refresh/wipe when you go home which is very handy. I personally dont really have a issues where I need to constantly wipe the screen though.

6 Likes