Jump to content

Xiaomi Redmi 9C NFC (xiaomi-angelican)

From postmarketOS Wiki
Xiaomi Redmi 9C NFC
Redmi 9C NFC starting postmarketOS
Redmi 9C NFC starting postmarketOS
Manufacturer Xiaomi
Name Redmi 9C NFC
Codename xiaomi-angelican
Released 2020
Type handset
Hardware
Chipset MediaTek Helio G35 (MT6765G)
CPU 4 x 2.3 GHz Cortex-A53
4 x 1.8 GHz Cortex-A53
GPU PowerVR GE8320
Display IPS LCD, 720x1600 6.53", 20:9 ratio (~269 ppi density)
Storage 32/64/128 GB
Memory 2/3/4 GB
Architecture aarch64
Software
Original software
The software and version the device was shipped with.
Android (MIUI) 10 (MIUI 12)
Extended version
The most recent supported version from the manufacturer.
Android (MIUI) 11 (MIUI 12)
postmarketOS
Mainline
Instead of a Linux kernel fork, it is possible to run (Close to) Mainline.
no
pmOS kernel
The kernel version that runs on the device's port.
4.9.190
Features
Flashing
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).
Works
Battery
Charging and battery level reporting works
Untested
Screen
Display works. Ideally with sleep mode and brightness control.
Partial
Touchscreen
Works
Multimedia
3D Acceleration
Broken
Audio
Audio playback, microphone, headset and buttons.
Untested
Camera
Untested
Camera Flash
Untested
IR TX
Untested
IR RX
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-A
Full-sized USB-A port works (Usually applicable to SBCs and laptops).
Untested
USB OTG
USB On-The-Go or USB-C Role switching
Untested
Sensors
Accelerometer
Auto screen rotation works in desktops e.g. Phosh or Plasma Mobile
Untested
Magnetometer
Sensor to measure magnetism
Untested
Ambient Light
Untested
Proximity
Untested
Hall Effect
Also known as flip cover sensor
Untested
Haptics
Untested
Barometer
Sensor to measure air pressure
Untested
Power Sensor
Sensor to monitor current, voltage and power. Not fuel gauge!
Untested

Contributors

Users owning this device


How to enter flash mode

Bootloader Unlocking

MIUI way

Like other Xiaomi devices, the user will have to acquire the bootloader unlock key: https://en.miui.com/unlock

The device will not unlock if the device isn't 7 days old (from the time when your device connects to internet and powered on, and linked with Mi Account)

MTK way

If you don't want to wait a week, you can use the MTK unlock method

  • Install mtkclient USB drivers - mtkclient#Install
  • Clone mtkclient and redmi 9c binaries:
    git clone https://github.com/bkerler/mtkclient
    cd mtkclient
    pip -r install requirements.txt
    git clone https://github.com/coloredmarble/redmi_blossom
    cp redmi_blossom/* .
    
  • Run mtkclient:
    python mtk.py da seccfg unlock --preload preloader_k62v1_64_bsp.bin --loader n.bin
    
  • Turn the device off
  • Hold Volume Up and Volume Down buttons at same time
  • Connect the USB cable

Read more: Mtkclient#Bootloader_Unlocking

Recovery mode

  • Turn the device off (or restart also works)
  • Hold Volume Up and Power button
  • Once you feel vibration and phone turns on, release Power button
  • Keep holding Volume Up until you get to recovery.

Fastboot (Flashing, Download) mode

  • Same as recovery, but this time hold the Volume Down and Power keys.

FastbootD mode

  • Enter normal fastboot mode
  • Unplug the USB cable
  • Run command: fastboot reboot fastboot
  • Connect the USB on message: <waiting for any device>
  • Wait for the FastbootD logo

Preparing

First of all, you need to flash the latest MIUI firmware (v12.0.16.0) with MiFlashTool

Disable vbmeta

Patch vbmeta yourself: https://github.com/libxzr/vbmeta-disable-verification

Or download prebuilt vbmeta image:

wget https://github.com/MeexReay/pmos-xiaomi-angelican/raw/refs/heads/main/vbmeta_disabled.img

Then flash it:

fastboot flash vbmeta vbmeta_disabled.img
fastboot flash vbmeta_system vbmeta_disabled.img
fastboot flash vbmeta_vendor vbmeta_disabled.img

Installation

Add the device to pmaports

This port is still in development, so it can only be added via this repository: https://github.com/MeexReay/pmos-xiaomi-angelican

Build images

Pmbootstrap/Using_pmbootstrap

pmbootstrap install

Flashing

Enter fastboot mode, then run these commands:

pmbootstrap flasher flash_kernel
fastboot reboot fastboot # to enter fastbootd mode
pmbootstrap flasher flash_rootfs

Known issues

  • There are no GPU drivers (PowerVR Rogue GE8320), so I dont know how to run xorg/wayland without them. Disabling GLX extension makes the phone rebooting after loading any UI. Maybe its because of weak CPU (MT6765G) that cant even work with llvmpipe, or its just some downstream specific kernel panic. The only UI that loaded successfully was i3wm since it doesnt require any GLX by default and can actually work in modesetting or fbdev mode.
  • Buffyboard acts really strange. It doesnt actually show you the terminal. Somehow I made it to show me clickable keyboard, but it couldnt show the terminal. Maybe it is a bug of the downstream kernel, or the buffyboard, but I can only say that the framebuffer itself actually works, you can check it with:
    cat /dev/random > /dev/fd0
    
  • pmbootstrap cant build bootable images on the stable branch (v24.11), only on edge.

Troubleshooting

  • If your fastboot command got stuck, try just unplug usb and plug it on <waiting for any device> or enter fastbootd (fastboot reboot fastboot) where the issue doesn't appear.

See also