Jump to content

Zinwa Q25 (zinwa-q25)

From postmarketOS Wiki
Note This device is supported as part of a generic port. Refer to MediaTek MT6789 (mediatek-mt6789) for installation instructions and more information.
Zinwa Q25
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
Features
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
U-Boot
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

Note This section assumes an aarch64 build system (real or VM) or installed cross-compiler-suite
Warning WARNING: development ongoing, beneath might be dragons and trip-wires
  1. Clone This U-boot repo
  2. Adjust configs/mt6789_defconfig to 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


See also

U-boot fork

Manufacturer

Droidian on Zinwa Q25

Drodian wiki with flashing instructions and more