Xiaomi Redmi Note 10 Pro (xiaomi-sweet)

From postmarketOS
Jump to navigation Jump to search
Xiaomi Redmi Note 10 Pro
Xiaomi Redmi Note 10 Pro
Xiaomi Redmi Note 10 Pro
Manufacturer Xiaomi
Name Redmi Note 10 Pro
Codename xiaomi-sweet
Released 2021
Original software Android
Original version 11 (MIUI 12)
Extended version 13 (MIUI 14)
Hardware
Chipset Qualcomm Snapdragon 732G (SM7150-AC)
CPU Octa-core (2x2.3 GHz Kryo 470 Gold & 6x1.8 GHz Kryo 470 Silver)
GPU Adreno 618
Display 1080 x 2400, 20:9, 6.67", AMOLED, 120Hz, 450/1200 nits
Storage 64/128 GB
Memory 6/8 GB
Architecture aarch64
Features
USB Networking
Works
Flashing
Partial
Touchscreen
Display
WiFi
FDE
Mainline
Works
Battery
3D Acceleration
Audio
Bluetooth
Camera
GPS
Mobile data
SMS
Calls
USB OTG
NFC
Sensors
Accelerometer
Magnetometer
Ambient Light
Proximity
Hall Effect
Barometer
Power Sensor
Misc
Camera Flash
Keyboard
Touchpad
USB-A
HDMI/DP
Ir TX
Ir RX
Stylus
Haptics
Ethernet
FOSS bootloader



This device is based on the Snapdragon 732G.
See the SoC page for common tips, guides and troubleshooting steps

Contributors

  • Zephyr1112
  • Etn40ff

Maintainer(s)

Users owning this device


Port status

Downstream kernel compiles with pmOS's build system but the resulting artifact does not boot. The same source code compiles also using android's build system and the resulting artifact boots. (See below for the required steps.)

Flash modes

  • Fastboot mode: Power + Volume Down (adb reboot bootloader)
  • Fastbootd mode: adb reboot fastboot
  • Recovery mode: Power + Volume Up (adb reboot recovery, fastboot reboot recovery)

Installation Instructions

Unlock Bootloader (if not done)

  • First unlock your device (if not done yet). Use MiUnlock to unlock (Windows only)'. // If MiUnlock doesn't detect your device, follow this: Google USB Drivers install guide
  • Follow the Instructions on the selected site
  • Note: After that do not log off your Mi Account on your phone or it won't work! It may take 7 days or more to be able to unlock your device!

Install TWRP on Redmi Note 10 Pro

  • Follow these Instructions.
  • Turn the device off (or restart also works)
  • Note: You may need to connect your device to a computer with a USB cord or the phone will skip boot to recovery.
  • Hold Volume Up and Power button
  • Keep holding Volume Up until you see the TWRP recovery Logo.

Install pmOS

For some reason, even though the downstream kernel compiles without errors with pmOS's build system, the phone is unable to boot the resulting boot.img. Specifically if one tries to run pmbootstrap flasher boot (or the equivalent fastboot boot boot.img) the phone's screen turns black, there is no vibration and the phone remains in fastboot mode (albeit a crippled one in which subsequent boot commands fail). Suggestions are appreciated on how to fix this issue!

Due to this issue, booting pmOS is not straightforward; here is a rough outline of how to do so.

  • assumption: ANDROID, TMP and PMOS are some directories of your choice.
  • install pmbootstrap
  • add git@gitlab.com:etn40ff/pmaports.git as a remote to $PMOS/cache_git/pmaports and switch to the branch xiaomi-sweet
  • initialize pmbootstrap to build for xiaomi/sweet in $PMOS
  • install pmOS on an SD-card and move it to the phone: pmbootstrap install --sdcard=/dev/mmcblk0
  • build pmOS's boot.img: pmbootstrap build linux-xiaomi-sweet
  • export pmOS's boot.img: pmbootstrap export
  • extract pmOS's ramdisk (split_bootimg.pl from https://github.com/sweesineng/extract_tool worked well for me, YMMV): cd $TMP; cp /tmp/postmarketOS-export/boot.img pmos_boot.img; split_bootimg.pl pmos_boot.img
  • install android's repo
  • clone PixelExperience's sources: mkdir $ANDROID; cd $ANDROID; repo init -u https://github.com/PixelExperience/manifest -b twelve
  • make sure that the git repository at $ANDROID/kernel/xiaomi/sweet is at the same commit as the one specified in linux-xiaomi-sweet/APKBUILD
  • apply patches: cd $ANDROID/kernel/xiaomi/sweet; patch -p1 < $PMOS/cache_git/pmaports/device/testing/linux-xiaomi-sweet/fix_compilation.patch
  • copy over the kernel configuration: cp $PMOS/cache_git/pmaports/device/testing/linux-xiaomi-sweet/config-xiaomi-sweet.aarch64 $ANDROID/kernel/xiaomi/sweet/arch/arm64/configs/sweet_defconfig
  • build kernel:
source build/envsetup.sh
lunch aosp_sweet-userdebug  
mka kernel
mka bootimage
  • extract android's kernel: cd $TMP; cp $ANDROID/out/target/product/sweet/boot.img android_boot.img; split_bootimg.pl android_boot.img;
  • put your phone in fastboot mode and boot:
fastboot boot \                                                                                                            :(
--dtb $PMOS/cache_git/pmaports/device/testing/linux-xiaomi-sweet/prebuilt/sweet.dtb \
--header-version 2 \
--cmdline "androidboot.hardware=qcom androidboot.memcg=1 lpm_levels.sleep_disabled=1 video=vfb:640x400,bpp=32,memsize=3072000 msm_rtb.filter=0x237 service_locator.enable=1 swiotlb=1 androidboot.usbcontroller=a600000.dwc3 androidboot.selinux=permissive buildvariant=eng" \
$TMP/android_boot.img-kernel \
$TMP/pmos_boot.img-ramdisk.gz
  • profit

Tips and tricks

If pmOS is installed on a removable SD card android will continuously want mount and to reformat it. Unfortunately it does not look like it is possible to prevent this within android. A somewhat heavy duty workaround is to unbind the device, this requires root:

  • First find out which is the driver responsible for the sdcard:
  
 # readlink /sys/block/mmcblk0
 ../devices/platform/soc/8804000.sdhci/mmc_host/mmc0/mmc0:0001/block/mmcblk0
 
  • then unbind it
 
 # echo 8804000.sdhci > /sys/bus/platform/drivers/sdhci_msm/unbind
 

Mainlining

NOT VERIFIED: sourced from deviceinfohw, status from sm7150-xiaomi-sweet DTS

Hardware type Chip Mainline status
WiFi chip wcn3990 Y
Charging IC bq2597x (early units) / ln8000 (new units) ? (bq26xx/bq25980 drivers available)
Fuel gauge ? ?
GNSS ? ?
NFC ? (nq-nci driver on Android) N/A
Audio aw882xx, sm6150idpsndcar ?
Accelerometer TDK icm4x6xx N/A
Touchscreen ? (gtx8 driver on Android) ?
Display panel Samsung E3 Super AMOLED (dsi_k6_38_0c_0a_fhd_dsc_video_display interface on Android) No driver
Ambient Light Sensor rohm_bu27030 ?
Gyroscope icm4x6xx ?
Magnetometer ak0991x ?
Video Adreno 618 N/A
UFS ? (64GB) / Micron MT128GASAO4U21 (128GB) Y / Y
Memory SK Hynix H9HQ15AFAMBDAR Should work OOTB
Haptics Awinic AW8624 ?
SD Card Slot ? Y
USB ? Y (untested)

Sources and links

Other