Xiaomi Mi Note 10 / Mi CC9 Pro (xiaomi-tucana)

From postmarketOS Wiki
Xiaomi Mi Note 10 /
Mi CC9 Pro
Mi Note 10 / Mi CC9 Pro
Mi Note 10 / Mi CC9 Pro
Manufacturer Xiaomi
Name Mi Note 10 /
Mi CC9 Pro
Codename xiaomi-tucana
Model
  • Mi Note 10: M1910F4G
  • Mi CC9 Pro: M1910F4E
Released 2019
Type handset
Hardware
Chipset Qualcomm Snapdragon 730G (SM7150-AB)
CPU Octa-core (2x2.2 GHz Kryo 470 Gold & 6x1.8 GHz Kryo 470 Silver)
GPU Adreno 618
Display 1080 x 2340 AMOLED
Storage 128/256 GB
Memory 6/8 GB
Architecture aarch64
Software
Original software Android (MIUI)
Original version 9 (MIUI 11)
Extended version 11 (MIUI 13)
FOSS bootloader no
postmarketOS
Category testing
Pre-built images no
Mainline yes
postmarketOS kernel Mainline 6.10.3
Unixbench Whet/Dhry score 5916.6
Features
Flashing
Works
USB Networking
Works
Internal storage
Works
Battery
Partial
Screen
Works
Touchscreen
Works
Multimedia
3D Acceleration
Works
Audio
Partial
Camera
Broken
Camera Flash
Works
IR TX
Broken
IR RX
Broken
Connectivity
WiFi
Works
Bluetooth
Works
GPS
NFC
Works
Modem
Calls
Works
SMS
Works
Mobile data
Works
Miscellaneous
FDE
Works
USB OTG
Works
Sensors
Accelerometer
Works
Magnetometer
Works
Ambient Light
Works
Proximity
Broken
Haptics
Works
This device is based on the Snapdragon 730G.
See the SoC page for common tips, guides and troubleshooting steps

Maintainer(s)

Users owning this device


How to enter flash mode

  • Bootloader: Power on the device with both Power and Volume Down buttons.
  • Recovery: Power on the device with both Power and Volume Up buttons.

Installation

Note Note: You need to use this pmaports fork instead of the mainline one: https://github.com/sm7150-mainline/pmaports.
  1. Make sure pmbootstrap is installed and your bootloader is unlocked
  2. Run through pmbootstrap init and select xiaomi as the vendor and tucana as the device.
  3. Build the kernel yourself
  4. Generate the rootfs
    • For netbooting pmOS without flashing the phone, run pmbootstrap --extra-space 1000 install --no-sparse and pmbootstrap initfs hook_add netboot
    • If you want to flash pmOS to the phone, run pmbootstrap install
  5. Backup and erase the dtbo partition
    To boot Linux, you'll have to erase the dtbo partition. It is recommended to back it up first if you want to boot Android again
    1. Run dd if=/dev/block/by-name/dtbo of=/sdcard/dtbo.img from a rooted shell on your phone and pull it with adb pull /sdcard/dtbo.img to your computer.
    2. Boot into bootloader mode
    3. Erase the dtbo partition with fastboot erase dtbo
    To restore the partition flash it with fastboot flash dtbo dtbo.img
  6. Flash the rootfs
    • If you decided to go with netbooting, start the server with pmbootstrap netboot serve
    • If you want to install pmOS to the phones internal storage, run pmbootstrap flasher flash_rootfs
  7. Boot the kernel
    • To boot temporarily, without flashing run pmbootstrap flasher boot
    • To flash the kernel to the boot partition, run pmbootstrap flasher flash_kernel and reboot with fastboot reboot

After successfully following this guide, your phone should boot postmarketOS! If you have problems installing, feel free to ask in #sm7150-mainline:matrix.org

Building the latest kernel yourself

Note Note: The latest kernel is under active development and things might not work as expected.
  1. Make sure you installed pmbootstrap from git, as the packaged versions do not include envkernel.sh, which needed for compiling the kernel. Follow this guide to install pmbootstrap from git.
  2. Go through $ pmbootstrap init and select xiaomi-tucana as the device. The UI can be choosen as desired.
  3. Clone the sm7150-mainline kernel fork: $ cd ~/Downloads && git clone https://github.com/sm7150-mainline/linux.git && cd linux.
  4. Prepare envkernel: $ source ~/.local/share/pmbootstrap/helpers/envkernel.sh
  5. Generate the kernel config: $ make defconfig sm7150.config
  6. Build the kernel: $ make -j$(nproc)
  7. After the build has finished, package the built kernel for postmarketOS: $ pmbootstrap build linux-postmarketos-qcom-sm7150 --force --envkernel

Now you can follow the installation guide above.

Mainline

A work in progress mainline kernel is being developed here.

Hardware status

Feature table for SM7150
Device feature table:

Component Model Status Notes
Display Visionox G2647FB105 Y Works from here
Tianma TA065FXWF01 N Probably exists only as a spare part
Touchscreen STMicroelectronics FTS Y Connected via I2C. Downstream driver adapted here
Goodix GT9886 Should work, driver exists, needs testing
Charging Texas Instruments bq2597x N
Fuel gauge qcom,pm6150-qg P
Accelerometer and gyroscope STMicroelectronics LSM6DSO Y Managed by SSC
Ambient light AMS TCS3701 Y
Magnetometer Asahi Kasei AK0991X Y
Proximity sensor Elliptic Labs virtual sensor N Requires a driver and a proper sound support (uses ultrasonic)
Haptics / Vibrator Texas Instruments drv2605l Y
Speakers NXP tfa9874 (SPK) Y
? (EAR) N
Fingerprint sensor Goodix Optical FOD N
Camera flash qcom,pm6150l-flash-led Y Main
Awinic AW3644 Y Soft light. Downstream driver adapted here
Camera sensors Samsung S5KHMX N Main
Samsung S5K2L7 N Tele 2x
OmniVision OV08A10 N Tele 3.7x
Sony IMX350 N Ultrawide
? 2 MP N Macro
Samsung S5KGD1 N Front
NFC NXP NCI Y

Known issues

  • Sensors work and can checked through ssccli, but iio-sensors-proxy segfaults on startup, so no sensors in the userspace
  • Modem can't work, if there are two SIM cards installed (userspace issue)
  • Randomly I/O errors can appear and break everything (kernel bug)
  • Bluetooth works, but needs setting a MAC address manually via btmgmt on every boot (6.9+ kernel issue)
  • Microphones, 3.5 mm jack and all speakers, excluding the main one, are broken

See also