Xiaomi Mi Note 10 / Mi CC9 Pro (xiaomi-tucana)
Mi Note 10 / Mi CC9 Pro | |
Manufacturer | Xiaomi |
---|---|
Name |
Mi Note 10 / Mi CC9 Pro |
Codename | xiaomi-tucana |
Model |
|
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 |
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
- SanyaPilot (Notes: Second phone)
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: You need to use this pmaports fork instead of the mainline one: https://github.com/sm7150-mainline/pmaports. |
- Make sure pmbootstrap is installed and your bootloader is unlocked
- Run through
pmbootstrap init
and select xiaomi as the vendor and tucana as the device. - Build the kernel yourself
- Generate the rootfs
- For netbooting pmOS without flashing the phone, run
pmbootstrap --extra-space 1000 install --no-sparse
andpmbootstrap initfs hook_add netboot
- If you want to flash pmOS to the phone, run
pmbootstrap install
- For netbooting pmOS without flashing the phone, run
- 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
- Run
dd if=/dev/block/by-name/dtbo of=/sdcard/dtbo.img
from a rooted shell on your phone and pull it withadb pull /sdcard/dtbo.img
to your computer. - Boot into bootloader mode
- Erase the dtbo partition with
fastboot erase dtbo
- To restore the partition flash it with
fastboot flash dtbo dtbo.img
- 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
- If you decided to go with netbooting, start the server with
- 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 withfastboot reboot
- To boot temporarily, without flashing run
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: The latest kernel is under active development and things might not work as expected. |
- 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.
- Go through
$ pmbootstrap init
and select xiaomi-tucana as the device. The UI can be choosen as desired. - Clone the sm7150-mainline kernel fork:
$ cd ~/Downloads && git clone https://github.com/sm7150-mainline/linux.git && cd linux
. - Prepare envkernel:
$ source ~/.local/share/pmbootstrap/helpers/envkernel.sh
- Generate the kernel config:
$ make defconfig sm7150.config
- Build the kernel:
$ make -j$(nproc)
- 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
, butiio-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