Xiaomi Mi Note 10 / Mi CC9 Pro (xiaomi-tucana)
Appearance
| This device is supported as part of a generic port. Refer to Generic SM7150 (qcom-sm7150) for installation instructions and more information. |
|
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 The software and version the device was shipped with. |
Android (MIUI) 9 (MIUI 11) |
Extended version The most recent supported version from the manufacturer. |
Android (MIUI) 11 (MIUI 13) |
| FOSS bootloader | partial |
| 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. |
Mainline 6.17.0-rc7 |
Unixbench score Unixbench Whetstone/Dhrystone score. See Unixbench. |
5916.6 |
| Generic port | Generic SM7150 (qcom-sm7150) |
| Device package |
|
| Kernel package |
|
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). |
Works
|
Internal storage eMMC, SD cards, UFS... |
Works
|
Battery Whether charging and battery level reporting work. |
Partial
|
Screen Whether the display works; ideally with sleep mode and brightness control. |
Works
|
Touchscreen |
Works
|
| Multimedia | |
3D Acceleration |
Works
|
Audio Audio playback, microphone, headset and buttons. |
Partial
|
Camera |
Broken
|
Camera Flash |
Works
|
IR TX |
Works
|
| Connectivity | |
WiFi |
Works
|
Bluetooth |
Works
|
GPS |
Untested
|
NFC Near Field Communication |
Works
|
| Modem | |
Calls |
Works
|
SMS |
Works
|
Mobile data |
Works
|
| Miscellaneous | |
FDE Full disk encryption and unlocking with unl0kr. |
Works
|
USB OTG USB On-The-Go or USB-C Role switching. |
Works
|
| Sensors | |
Accelerometer Handles automatic screen rotation in many interfaces. |
Works
|
Magnetometer Sensor to measure the Earth's magnetism |
Works
|
Ambient Light Measures the light level; used for automatic screen dimming in many interfaces. |
Works
|
Proximity |
Broken
|
Haptics |
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. |
Works
|
Internal Storage Whether it is possible to boot from internal storage (e.g. eMMC or UFS). |
Works
|
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. |
Works
|
Display |
Works
|
Buttons Whether it is possible to navigate in boot menu or grub with volume and power buttons. |
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 and buttons.
- Recovery: Power on the device with both and buttons.
Installation
- Make sure pmbootstrap is installed and your bootloader is unlocked
- This device is now a part of SM7150 generic port, and requires an installed U-Boot for EFI environment (systemd-boot is used).
So, install U-Boot as described on the generic port page - Run through
pmbootstrap initand select qcom as the vendor and sm7150 as the device. - [ Optional ] Build the kernel yourself
- Generate the rootfs
- For netbooting pmOS without flashing the phone, run
pmbootstrap --extra-space 1000 install --no-sparseandpmbootstrap 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.imgfrom a rooted shell on your phone and pull it withadb pull /sdcard/dtbo.imgto 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
- Install the kernel
- To flash the EFI partition to the cache partition, run
pmbootstrap flasher flash_kernel --partition cacheand reboot withfastboot reboot
- To flash the EFI partition to the cache partition, 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 initand selectqcom-sm7150as 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 | N | Soft light. Downstream driver adapted here. Dropped recently as no real world usage exists for now. | |
| 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
- Microphones, 3.5 mm jack and a call speaker are broken
- Modem can't work, if there are two SIM cards installed (userspace issue)
- Voice call audio isn't working
Weak WiFi signal, slow speedsSensors work and can checked through(fixed in the latest pmOS snapshots)ssccli, butiio-sensors-proxysegfaults on startup, so no sensors in the userspaceRandomly I/O errors can appear and break everything (kernel bug)(fixed in the 6.13 kernel)Bluetooth works, but needs setting a MAC address manually viabtmgmton every boot (6.9+ kernel issue)