BlackBerry Key2 & Key2LE
NOTE: The tutorial is meant for the blackberry key2(le) but will work for other android devices.
You have ADB and fastboot installed
Your device is running LineageOS, if it's not see the article below
The APatch app is installed from either github or F-Droid.
Get the boot.img from the rom you currently have installed and copy it to your devices's internal storage
Open the APatch app and select the left most icon in the top bar
Press 'Select a boot image to patch' and point it to your boot.img file
Enter a password into the SuperKey box
NOTE: Make sure to write it down somewhere as you will need it later
Move the outputted .img file to you computer.
Power off your phone.
Once you phone is fully powered off hold the power and volume down buttons until the bootloader is shown.
Connect your phone to your computer
Run the following commands:
fastboot flash boot /path/to/apatch_patched_{random_text}.imgfastboot rebootOnce the device finishes booting open the APatch app
Enter your SuperKey you set earlier into the superkey box then select 'Install Android Patch'
Download Integrity-Box from here, you need '{version}-Integrity-Box-{DD}-{MM}-{YYYY}.zip'.
Download NeoZygisk from here, you need 'NeoZygisk-{version}-release.zip'.
Download TEESimulator from here, you need 'TEESimulator-{version}-Release.zip'.
Download Zygisk-Assistant from here, you need 'Zygisk-Assistant-{version}-{commitID}-release.zip'.
Open APatch and enter the APModule tab. (second from the right)
Press the floating button, it will open a file browser, open one of the downloaded zip files.
Once the restart button appears press the back key. DO NOT PRESS RESTART.
If you get a /data/adb/apd: inaccessible or not found error reboot you phone then try again
Repeat the previous to instructions until you have installed all 4 downloaded zip files.
Reboot device and once it finishes open the APModule tab again
On the card for .Integrity Box tap the 'Action' button
(Optional): Configure Integrity Box, you can open it's configuration utility by pressing the 'Open' button on it's card in APModule
If you need to hide all system modifications from an app go into APatch's superuser(center) tab and tap on the app's name then enable the 'Exclude modifications' toggle.
You may need to disable the Zygisk Assistant module for google wallet tap to pay to work properly.
NOTE: If you have any questions or issues you can ask in the BlackBerry Android hideout discord server, the invite is https://discord.gg/BuJURQD6Qb
A Windows or linux computer
You have the android platform tools installed, if you don't you can get them for windows here and on linux it's packaged as android-tools on most distros and as android-sdk-platform-tools on debian linux and it derivatives.
(Windows): You have the BlackBerry USB drivers installed
NOTE: If you don't know the path of a file you can drag it from your filemanager into a terminal window
Remove your lockscreen password and google account from your device
If the option to remove you passcode or google account is grayed out factory reset from settings
If you do not remember your password follow theses instructions from the device setup.
For the Key2 (Athena) download the ACQ160 Autoloader.
For the Key2LE (Luna) download the ACT575 Autoloader.
Power off your device then boot into the bootloader, you do so by holding volume down and the power button until this green menu appears.
You now need to flash the autoloader, to do so extract the downloaded 7z file and run the included 'flashall.bat' file
NOTE: A linux version of the flashall.bat script is available here.
If you get any error: cannot load messages you can ignore them.
The phone will now reboot to either the android 8.1 setup, an 'Error!' screen or the bootloader, it does not matter which.
Reboot to the bootloader then run flashall.bat again
Power off your device then boot into the bootloader.
Download the windows unlock tool from here and extract the zip file, if you don't already have it installed you may need to install the microslop VC++ redists.
Open the unlock tool.
Press the scan in the upper right corner, once your devices is found press the 'Unlock BootLoader' button
NOTE: The progress bar will stay at 75% even once the bootloader unlock finishes
If the unlock was successful, on the phone MODE: will change from PRODUCT to FACTORY
Power off you device
Download kibo from Bochenek's github page and extract the zip file you downloaded.
Mark the kibo binary included with the zip file as executable.
Open a terminal where kibo is located and run ./kibo unlock
If the unlock was successful, on the phone MODE: will change from PRODUCT to FACTORY
Power off you device
Alpha and beta builds are *NOT* ready for daily use and are for TESTING PURPOSES ONLY.
If you have a Key2 (Athena) download the latest build of your preferred rom varient
NOTE: If you intend to use as your main phone or are not sure which you version want, use standard android 15
If you have a Key2LE (Luna) download android 15 build 20260615.
The package for gapps(Google Services) is not included with the rom download, if you want them you will need to download it seperately.
The recommended gapps package for android 15 is MindTheGapps 15, and MindTheGapps 16 for android 16.
Once your rom download finishes extract it's .zip file, and enter the directory it extracted to.
Boot into the bootloader by holding volume down and the power button.
Run the following commands:
fastboot -wfastboot flash recovery /path/to/recovery.imgfastboot flash boot /path/to/recovery.imgfastboot rebootNOTE: You navigate the recovery by using the volume keys to move the cursor and the power button the select.
Once the recovery menu appears select Advanced -> Enable ADB
From a computer run adb shell wipe-frp
Then select 'Apply update' -> 'Apply update from adb'
NOTE: If your flashing android 16 you need to cancel out of the apply update menu then go back in for it to work
If you have a Key2 run adb sideload /path/to/lineage-{lineageVersion}-{date}-UNOFFICIAL-krab-{version}-athena.zip
If you have a Key2LE run adb sideload /path/to/lineage-22.2-{build}-UNOFFICIAL-luna.zip
If you have any additional zips you want to flash(ie: gapps, magisk) go into 'Apply update' -> 'Apply update from adb' and run adb sideload /path/to/package.zip, once the signature verification failed messages appears select yes.
If you get a not enough space on system partion error when flashing gapps go into 'Factory reset/Format data' and format the system partition, then re-flash lineageOS and gapps.
Select the 'Reboot system'
If you get set back to recovery and sideloading the rom again does not fix it you may have a 'bcb recovery' unit, to get around that boot into the bootloader and run fastboot flash recovery boot.img
NOTE: The first boot can take up to 10-15 minutes
The ALT key does not work in the Key2LE's setup so you will need to open the on-screen keyboard by pressing Alt then the ABC button in the bottom left corner
(Optional, Key2) Once you have finished the setup set the IME switcher shortcut to Alt + Enter in Settings -> System -> BlackBerry keyboard. Doing this makes the SYM key work properly instead of opening the keyboard switcher.
You have ADB and fastboot installed
NOTE: If you need to downgrade you can do so with the recovery update method.
NOTE: Updating this way does not keep root, you must use the recovery update method if your going to change version
If you have a Key2 download the latest build for your rom version
If you have a Key2LE download build 20260615 (local update)
NOTE: You can get around the file too large popup by enabling the show desktop site option in your browser's settings
If you have a Key2 extract the zip file you downloaded, you don't need too on a Key2LE
Go to Settings -> System -> System Update.
Tap the 3 dots in the top corner and select Local update.
If you have a Key2 select the zip file following lineage-{lineageVersion}-{date}-UNOFFICIAL-krab-{version}-athena.zip naming format.
If you have a Key2LE select the zip file following lineage-22.2-{build}-UNOFFICIAL-luna.zip naming format.
NOTE: Alpha and beta builds are *NOT* ready for daily usage, do not update to one unless you really want to test it.
If you have a Key2 download the latest build for your rom version
If you have a Key2LE download build 20260615
NOTE: If you are switching to a version with a different kernel or downgrading to an older android version you must wipe your data.
Once your rom download finishes extract it's .zip file, and enter the directory it extracted to.
NOTE: If your updating to android 16 and want google services you need to use MindTheGapps 16.
If your phone is rooted patch the boot.img file included with the new build.
Power off you device then hold volume down and power until the bootloader menu is shown
Run the following commands:
fastboot flash recovery /path/to/recovery.imgfastboot flash boot /path/to/recovery.imgfastboot rebootIf your switching to a different version select 'Factory Reset' -> 'Format data / factory reset'
Select 'Apply update' -> 'Apply update from adb'
NOTE: If your flashing android 16 you need to cancel out of the apply update menu then go back in for it to work
If you have a Key2 run adb sideload /path/to/lineage-{lineageVersion}-{date}-UNOFFICIAL-krab-{version}-athena.zip
If you have a Key2LE run adb sideload /path/to/lineage-22.2-{build}-UNOFFICIAL-luna.zip
If you have google services installed go into 'Apply update' -> 'Apply update from adb' and run adb sideload /path/to/gapps.zip once the signature verification failed messages appears select yes.
If it's not rooted select 'Reboot system'
If your rooted select 'Advanced' then 'Reboot to bootloader', once the bootloader appears flash your modified boot.img file and boot up the system.
If you get set back to recovery boot into the bootloader and run fastboot flash recovery boot.img
Boot into recovery
NOTE: The easiest way to get into recovery is by using the adb reboot recovery command
Once the recovery menu appears select Advanced -> Enable ADB
From a computer run adb shell wipe-frp
Power off your device or reboot it using the options in the recovery menu
Key2: Android 16 Alpha
FIXED: BT-sound lags upon device unlock (every time after going into deep-sleep for the first time);
FIXED: Nav-buttons backlight turn-off on good-light conditions;
Fixed: Convenience key;
Fixed: Wi-Fi disabled upon device sleep;
Fixed: Low-latency pin entering on unlocking;
Fixed: Slow LCD enabling after sleep;
Fixed: Device hang on blackberry screen upon reboot (sometimes);
Low performance and lags after wake from sleep;
TRY-FIX: Gcam88 camera hangs-up device under load;
TRY-FIX: BT-sound lags under cpu pressure;
Haptics/Vibro more precise (but not as accurate as needed);
Performance and memory tunings;
Fixed. K12KB: Back-button not work in text inputs;
Voip better;
ired head-set sound fixed;
Fixed: Virtual nav-buttons settings toggle;
TRY-FIX: Gcam88 preview freeze on some boots;
Fixed: Keyboard-press was waking device;
Led breathing and setting fixed;
Keyboard backlight timeouts controlled both with nav-btns;
Swappiness 60->100 (better swap->zram usage);
Low-light adaptive brightness flickering fixed;
NFC better;
USB-OTG and MMC-flashes, including exFAT, NTFS;
Recovery activated restore "choose from disk";
USB mode changes via preferences unlocked;
Camera fixed (was broken by selinux);
Fingerprint better;
GPS better;
Darkening GUI-colors on Synaptics LCD temporary hacky fix;
VOIP better;
Laggy wakeups/Deep sleep better;
Shed/CPU freq scaling better tnx @Wumbomumbo;
Keyboard-backlight from LOS22-krab-v1.8 tnx @Sadako
recovery adb sideload fixed;
Unlocking performance issue fixed;
Selinux: enforced
Android 16 and kernel 4.19
Key2: Android 15
Fixed: Shed/powerhint spamming in logcat;
Fixed: Aperture camera crash on taking shot;
Better: Shutter 1080p60
Fixed: qwertz/qzerty
Swappiness 100
Todo: Good solution for Synaptics LCD colors/saturation
Todo: Suppress "Serial console enabled" warning
Mobile-hotspot fixed;
Wired-headset on VOIP fixed;
Battery and performance tunings;
Todo: Good solution for Synaptics LCD colors/saturation
Todo: Suppress "Serial console enabled" warning
May security patches
VOIP fixed
Fixed: Haptic logcat errors
Todo: Good solution for Synaptics LCD colors/saturation
Todo: Suppress "Serial console enabled" warning
FIXED: BT-sound lags upon device unlock (every time after going into deep-sleep for the first time)
Todo: Good solution for Synaptics LCD colors/saturation
Todo: Suppress "Serial console enabled" warning
Update to linux kernel 4.19 from 4.4
Significant battery life improvements;
Gcam stability improvements;
Todo: Good solution for Synaptics LCD colors/saturation
Keyboard-blacklight Sadako's algo implemented,
Car-bt: music - voice-call glitches try-fix
5Ghz hotspot,
Camera black preview sometimes
April 01 security patches,
qwertz/azerty fix re-applied,
Lokker app v1.2a updated performance,
K12KB app v3.1c updated performance,
GPS/xtra fixes,
Wi-Fi micro enhancements (NOT WPA3)
March 01 security patches,
Camera stability - less crashes,
qwertz/azerty fixed - retail kl/kcm behavior,
Keyboard settings -> show virtual keyboard toggle,
Lokker app v1.1 updated,
Widevine L3 OK, L1 Widevide disabled (will not work)
NFC fixes,
Battery drains on heavy renderings,
QWERTZ, AZERTY fixes
Voip fix (tested on Telegram),
Svindleds speakers in-call changes fix,
Touchpad-pagings sensivity -10%, inertion +10%,
App-links domains verification auto-approve (for microg)
Bugfix capacitive nav-buttons toggling,
Keyboard and nav-btns backlight adaptive levels,
Custom-keyboard preferences rearranged,
Keyboard touch paging mode sensivity decreased
Selinux enforcing,
Encryption,
Dt2w, button fixes on syna and focal,
Volume curve fixes,
RCS HAL crash fix,
Bluetooth mac address loader,
Touch keypad now usable,
Keyboard working on all apps,
Wifi hotspot fixes,
Init fixes,
Lineage KeyDisabler support,
USB init fix,
USB tethering fix
Key2LE: Android 15
FIXED: Camera and flashlight
FIXED: Video/media audio through phone speakers
Configure currency key to type "$" instead of "4"
Change Updater URL to Github Lineage-BBKey2LE/distribution repository for future OTA updates
June 2026 Android platform security patch
May 2026 security patch
SELinux and encryption both enabled
Changed input method switcher shortcut from SYM key to Alt + Enter to avoid interfering with SYM key function in keyboard apps
SYM key and speed key returned to their default functions as in stock BB-Android (SYM key now works to pull up symbols in the bundled Pastiera keyboard app)
Serial console disabled (should improve performance)
Build no longer signed with public keys (should improve security)
Pastiera: A foss keyboard app built for android phones with hardware keyboards. It's the default on Bochenek's rom builds.
K12KB: The keyboard app bundled with the rom. Currently requires enableing 'Allow on-screen keyboard' in Settings -> System -> BlackBerry keyboard to work properly
Krab-ubica's BlackBerry Keyboard: The blackberry keyboard but with working keyboard gestures. Chloejp has made a version with all language packs available here & one with only vietnamese added available here.
Hazem's BlackBerry Keyboard: A heavily modified version of the blackberry keyboard with material you colors, working keyboard gestures, newer emojis and a ton of various fixes. It's language packs are available here.
Krab-ubica's BlackBerry Launcher: The default launcher from android 8.1 with performance improvements and modifications to make it work on LOS. The default 8.1 wallpaper set is also available on this archive.org page.
Torchlight Launcher (PAID): A clone of blackberry OS 7 as an android launcher
KISS: A blazingly fast launcher focused on search
Kvaesitso: A seach-focused launcher, currently needs the enable-blurs magisk module for wallpaper blur effects to work.
Lawnchair: An open-source clone of google's pixel launcher
BigKaka 8.8 mod: A build of the BigKaka GCam mod with changes to work with key2's hardware. If your using a rom build with the 4.19 kernel use this version instead.
Hail: Freeze certain apps to stop them from running in the background
Shelter/Insular/Island: Add apps to a work profile to isolate them from other apps, stop them from auto starting or install multiable versions at once.
KeyMapper: Remap any button and set custom key binds easily
Aliucord: A light-weight discord client based on a version from before it was a wrapper for the mobile website
Key2 Tweaks: A small utility app to enable keyboard passcode entry, disable the nav keys when the keyboard is open and replace the built in EQ.
k2prodfix: A magisk module by wumbomumbo lets you download BlackBerry services from the play store and make them think that they're running on an unmoddified Key2, it also adds more volume steps and hardware bluetooth A2DP offload. If you have bluetooth issues after installing use the lite version instead.
NOTE: Do NOT install this, I'm currently in the process of rewriting it into a magisk module
Enable 'USB debugging' and 'Rooted debugging' in developer options
Run adb root
If you want 2gb of swap run this command
adb shell "mkdir -p /data/adb/service.d && echo '#!/system/bin/sh echo 3 > /proc/sys/vm/drop_caches swapoff /dev/block/zram0 echo 1 > /sys/block/zram0/reset echo 2147483648 > /sys/block/zram0/disksize mkswap /dev/block/zram0 swapon /dev/block/zram0' > /data/adb/service.d/99_delayed_zram.sh && chmod 755 /data/adb/service.d/99_delayed_zram.sh"
If you want 4gb of swap run this command
adb shell "mkdir -p /data/adb/service.d && echo '#!/system/bin/sh echo 3 > /proc/sys/vm/drop_caches swapoff /dev/block/zram0 echo 1 > /sys/block/zram0/reset echo 4294967296 > /sys/block/zram0/disksize mkswap /dev/block/zram0 swapon /dev/block/zram0' > /data/adb/service.d/99_delayed_zram.sh && chmod 755 /data/adb/service.d/99_delayed_zram.sh"
NOTE: You will need the recovery.img file from the LineageOS rom, if you don't have it you can download one for the Key2 here and one for the Key2LE here.
Run the following commands:
fastboot flash recovery /path/to/recovery.imgfastboot flash boot /path/to/recovery.imgfastboot rebootOnce the recovery menu appears select Advanced -> Enable ADB
From a computer run adb shell wipe-frp
On the phone select Advanced -> Reboot to bootloader
Next follow the locking the bootloader section for your operating system
or if you have a Key2 you can boot with an unlocked bootloader instead
Download the windows unlock tool from here and extract the zip file, if you don't already have it installed you may need to install the microslop VC++ redists.
Open the unlock tool.
Press the scan button in the upper right corner, once your devices is found press the 'Relock BootLoader' button.
NOTE: The progress bar may stay at 75% even once the bootloader relock finishes.
If the relock was successful, on the phone MODE: will change from FACTORY to PRODUCT.
Download kibo from Bochenek's github page and extract the zip file you downloaded.
Mark the kibo binary included with the zip file as executable.
Open a terminal where kibo is located and run ./kibo unlock
If the relock was successful, on the phone MODE: will change from FACTORY to PRODUCT.
If you have a Key2 download ACQ160 Autoloader.
If you have a Key2LE download ACT575 Autoloader.
Once your rom download finishes extract the zip file it downloads as
Make sure device is fully powered off then hold power and volume down until the bootloader appears
Run the flashall.bat script from the autoloader.
NOTE: A linux version of the flashall.bat script is available here.
If you did not lock the bootloader follow the section below
Download the modded boot file from here.
Open a terminal where you downloaded the file and run fastboot flash boot acq160-mfi-boot.img.
If your going to root patch the acq-160-mfi-boot.img boot file not the one from ACQ160 itself.
NOTE: This section is on how to fix a rare bug, you will most likely not experience it when reverting.
If you relocked the bootloader unlock it again as shown in the install guide.
NOTE: You need to use the same LineageOS recovery file you used earlier.
Run the following commands:
fastboot flash recovery /path/to/recovery.imgfastboot flash boot /path/to/recovery.imgfastboot rebootOnce the recovery menu appears select 'Advanced' -> 'Enable ADB'
Download the persist partition patch from here then extract the downloaded 7z file.
Open a terminal where you extracted the file persist to, then run the following commands:
adb push persist /tmp/adb shell dd if=/tmp/persist of=/dev/block/by-name/persistadb reboot bootloaderLock your bootloader again then redo the section flashing android 8.1 of the guide