Zinwa Q25 (zinwa-q25)
Appearance
| This device is supported as part of a generic port. Refer to MediaTek MT6789 (mediatek-mt6789) for installation instructions and more information. |
| This device has been tested with postmarketOS, but its device package has not yet been added to the postmarketOS repositories. This means that it cannot be selected in pmbootstrap. Status: Work in progress |
| Manufacturer | Zinwa |
|---|---|
| Name | Q25 |
| Codename | zinwa-q25 |
| Model | Q25 |
| Released | 2025 |
| Type | keyboard handset |
| Hardware | |
| Chipset | MediaTek Helio G99 (MT6789) |
| Display | 720x720 (IPS LCD) |
| Storage | 256 GB |
| Memory | 12 GB |
| Architecture | aarch64 |
| Software | |
Original software The software and version the device was shipped with. |
Android 14 |
Extended version The most recent supported version from the manufacturer. |
Android |
| FOSS bootloader | yes |
| postmarketOS | |
| Category | testing |
Mainline Instead of a Linux kernel fork, it is possible to run (Close to) Mainline. |
yes |
pmOS kernel The kernel version that runs on the device's port. |
7.0 |
| Generic port | MediaTek MT6789 (mediatek-mt6789) |
Initial MR Initial merge request. |
pmaports!8365 |
Flashing Whether it is possible to flash the device with pmbootstrap flasher. |
Works
|
|---|---|
USB Networking After connecting the device with USB to your PC, you can connect to it via telnet (initramfs) or SSH (booted system). |
Untested
|
Internal storage eMMC, SD cards, UFS... |
Works
|
SD card Also includes other external storage cards. |
Untested
|
Battery Whether charging and battery level reporting work. |
Partial
|
Screen Whether the display works; ideally with sleep mode and brightness control. |
Partial
|
Touchscreen |
Partial
|
Keyboard Whether the built-in physical keyboard works. |
Partial
|
| Multimedia | |
3D Acceleration |
Untested
|
Audio Audio playback, microphone, headset and buttons. |
Untested
|
Camera |
Untested
|
Camera Flash |
Untested
|
| Connectivity | |
WiFi |
Untested
|
Bluetooth |
Untested
|
GPS |
Untested
|
NFC Near Field Communication |
Untested
|
| Modem | |
Calls |
Untested
|
SMS |
Untested
|
Mobile data |
Untested
|
| Miscellaneous | |
FDE Full disk encryption and unlocking with unl0kr. |
Untested
|
USB OTG USB On-The-Go or USB-C Role switching. |
Untested
|
Primary Bootloader Whether it is possible to replace stock bootloader with U-Boot. |
Works
|
|---|---|
Secondary Bootloader Whether it is possible to chainload U-Boot from stock bootloader. |
Works
|
Mainline Whether latest upstream versions of U-Boot are not broken and it is possible to use them. |
Partial
|
Internal Storage Whether it is possible to boot from internal storage (e.g. eMMC or UFS). |
Works
|
SD card Whether it is possible to boot from SD card. |
Broken
|
USB Host Whether it is possible to boot from a USB storage or connect a keyboard. |
Partial
|
USB Peripheral Whether it is possible to use device as a peripheral in U-Boot, e.g. for fastboot mode. |
Partial
|
Display |
Works
|
Keyboard |
Untested
|
Buttons Whether it is possible to navigate in boot menu or grub with volume and power buttons. |
Untested
|
This device is a reworked BlackBerry_Classic with updated SoC, cameras and other hw.
Contributors
Users owning this device
- Ayakael
- DALEK 77 (Notes: MP full device, running LineageOS 23.2)
- Deathmist (Notes: Bright kb test & MP models)
- LongnoseRob (Notes: waiting for port, running droidian atm)
- Shymega (Notes: Two, one MP, one development unit.)
Installation
During this early stage of porting many manual steps are needed
U-Boot
| This section assumes an aarch64 build system (real or VM) or installed cross-compiler-suite |
| WARNING: development ongoing, beneath might be dragons and trip-wires |
- Clone This U-boot repo
- Adjust
configs/mt6789_defconfigto match the requirements for use with pmOS:
CONFIG_BLKMAP=y
CONFIG_CMD_BLKMAP=y
$ make O=output mt6789_defconfig
$ make O=output -j$(nproc)
patching lk.img (like from the Android recovery image(s))
$ xxd -p "lk.img" | sed -E "s/05fd600100b4fd7bbfa9/05fd60008052c0035fd6/g" | xxd -p -r > "lk_patched.img"
// install liblk
$ pip3 install --upgrade git+https://github.com/R0rt1z2/liblk --break-system-packages
// create the image:
$ ./gimme-uboot.py lk_patched.img ./output/u-boot.bin u-boot-lk-q25.img
flashing U-Boot
Put the device in fastboot-mode (By pressing Power&Vol+ if powered off)
$ fastboot flash lk_b u-boot-lk-q25.img
$ fastboot flash lk_a u-boot-lk-q25.img
$ fastboot reboot
building images with pmbootstrap
In pmboostrap init select mediatek and device g99.
For the current state, early in the mainline phase, it might be recommended to select X11 based UI like XFCE4, mate.
$ pmbootstrap install
$ pmbootstrap export
At the moment its recommended to manually flash the image to userdata
$ ./antumbra --da DA_BR.bin --pl preloader_q20_v12_factory.bin dl userdata /tmp/postmarketOS-export/mediatek-g99.img