Xiaomi Mi A2 (xiaomi-jasmine)

== Contributors ==
* robante15
* Profmagija
== Maintainer(s) ==
== Users owning this device ==
== Notes ==
This device is quite similar to the Xiaomi Redmi Note 7 (xiaomi-lavender) and Xiaomi Redmi Note 8T (xiaomi-willow), and many of the issues were solved with steps from that devices pages, so if you're hacking on the Mi A2 it's a good idea to read the xiaomi-lavender and the xiaomi-willow page closely.
=== LED / Torch / Screen brightness / Vibrator ===
Write brightness or boolean value to specific sysfs files:
* Front panel LED light [0-255]: /sys/class/leds/white/{brightness,blink}
* Torch light [0-255]: /sys/class/leds/flashlight/brightness (torch_0 is cold light, torch_1 is warm light)
* Screen brightness [0-255]: /sys/class/leds/lcd-backlight/brightness
* Vibrator [Miliseconds]: /sys/class/timed_output/vibrator/enable
Example:
echo 255 > /sys/class/leds/lcd-backlight/brightness
That maximizes the brightness of the screen
== How to enter flash mode ==
=== Bootloader Unlocking ===
Unlocking the bootloader will erase all your data, so make sure you have backed up all your data before proceeding with unlocking the bootloader.
Because this device is an Android One device, it can be unlocked using fastboot oem unlock and then fastboot flashing unlock_critical from fastboot mode.
=== Recovery mode ===
* Turn the device off (or restart also works)
* Hold and button
* Once you feel vibration and phone turns on, release button
* Keep holding until you get to recovery.
=== Flashing (Download, Fastboot) mode ===
* Same as recovery, but this time hold the and keys.
== Installation ==
* Install pmbootstrap first on your PC
* pmbootstrap -y zap; pmbootstrap init, choose xiaomi-jasmine_sprout as your device
** GNOME have been successfully tested.
* pmbootstrap install
* Enter fastboot, plug USB into computer
* pmbootstrap flasher flash_kernel
* pmbootstrap flasher flash_rootfs
* pmbootstrap flasher flash_vbmeta
* Reboot, sometimes fastboot reboot works, otherwise hold down until it reboots.
* In addition to the GUI, you can also connect via SSH ssh user@172.16.42.1
== Hardware ==
Touchscreen 	Novatek NT36672
Main cameras (front/back) 	Sony IMX376
Secondary back camera 	Sony IMX486
Proximity sensor 	Liteon LTR-579ALS
Gyroscope 	Bosch BMI120
Compass 	AKM AK09918
IR Blaster 	Willsemi WNM2046
WiFi/Bluetooth 	Qualcomm WCN3980
RFFE 	Qualcomm QET4101
Audio amplifier 	Texas Instruments TAS2555
Quick Charge Controller (PMIC?)	Qualcomm SMB1351
== UART == 
Bootloader UART logs:
Format: Log Type - Time(microsec) - Message - Optional Info
Log Type: B - Since Boot(Power On Reset), D - Delta, S - Statistic
S - QC_IMAGE_VERSION_STRING=BOOT.XF.1.4-00262-S660LZB-1
S - IMAGE_VARIANT_STRING=Sdm660LA
S - OEM_IMAGE_VERSION_STRING=c3-bsp-builder-job004.bj
S - Boot Interface: eMMC
S - Secure Boot: On
S - Boot Config @ 0x00786070 = 0x000001c1
S - JTAG ID @ 0x00786130 = 0x0008c0e1
S - OEM ID @ 0x00786138 = 0x00000000
S - Serial Number @ 0x00784138 = 0xf688ea69
S - Feature Config Row 0 @ 0x007841a0 = 0x0050200010f80000
S - Feature Config Row 1 @ 0x007841a8 = 0x00000000000000c0
S - Core 0 Frequency, 3715 MHz
S - PBL Patch Ver: 5
S - I-cache: On
S - D-cache: On
B - 0 - PBL, Start
B - 7027 - bootable_media_detect_entry, Start
B - 80724 - bootable_media_detect_success, Start
B - 80730 - elf_loader_entry, Start
B - 82294 - auth_hash_seg_entry, Start
B - 109960 - auth_hash_seg_exit, Start
B - 160810 - elf_segs_hash_verify_entry, Start
B - 210662 - elf_segs_hash_verify_exit, Start
B - 210678 - auth_xbl_sec_hash_seg_entry, Start
B - 239734 - auth_xbl_sec_hash_seg_exit, Start
B - 239736 - xbl_sec_segs_hash_verify_entry, Start
B - 246449 - xbl_sec_segs_hash_verify_exit, Start
B - 246494 - PBL, End
B - 272487 - SBL1, Start
B - 387960 - usb: hs_phy_nondrive_start
B - 388295 - usb: hs_phy_nondrive_finish
B - 391162 - boot_flash_init, Start
D - 0 - boot_flash_init, Delta
B - 398513 - sbl1_ddr_set_default_params, Start
D - 122 - sbl1_ddr_set_default_params, Delta
B - 406473 - boot_config_data_table_init, Start
B - 425810 - Using default CDT
D - 14823 - boot_config_data_table_init, Delta - (0 Bytes)
B - 427732 - CDT Version:3,Platform ID:8,Major ID:1,Minor ID:0,Subtype:0
B - 433191 - Image Load, Start
D - 17660 - Auth Metadata
D - 488 - Segments hash check
D - 28091 - PMIC Image Loaded, Delta - (34240 Bytes)
B - 464545 - pm_device_init, Start
B - 471774 - PM: PON REASON: PM0=0x8000028000000001:0x0 PM1=0x8000088000000020:0x0 
B - 513986 - PM: SET_VAL:Skip
D - 45079 - pm_device_init, Delta
B - 515907 - pm_driver_init, Start
B - 523075 - PM: OCP Clearing for L4A is Skipped :PM660 is not supported the LDO4
D - 4239 - pm_driver_init, Delta
B - 530120 - pm_sbl_chg_init, Start
B - 535549 - PM: Trigger FG IMA Reset
B - 537013 - PM: Trigger FG IMA Reset.Completed
B - 541893 - PM: EntryVbat: 4202; EntrySOC: -1
B - 545065 - PM: BATT TEMP: 27 DegC
D - 16226 - pm_sbl_chg_init, Delta
B - 552843 - vsense_init, Start
D - 0 - vsense_init, Delta
B - 608749 - Pre_DDR_clock_init, Start
D - 396 - Pre_DDR_clock_init, Delta
D - 0 - sbl1_ddr_set_params, Delta
B - 620309 - DSF version = 35.0, DSF RPM version = 22.0
B - 620309 - Max Frequency = 1804 MHz
B - 624426 - do_ddr_training, Start
B - 636840 - Bootup frequency set to 1296000
D - 8814 - do_ddr_training, Delta
B - 656756 - clock_init, Start
D - 274 - clock_init, Delta
B - 659227 - Image Load, Start
D - 2501 - APDP Image Loaded, Delta - (0 Bytes)
B - 664808 - usb: EMMC Serial - 2a2bca61
B - 669536 - usb: fedl, vbus_low
B - 676764 - PM: 0: PON=0x1:HARD_RESET: ON=0x80:PON_SEQ: POFF=0x2:PS_HOLD: OFF=0x80:POFF_SEQ
B - 676856 - PM: 1: PON=0x20:PON1: ON=0x80:PON_SEQ: POFF=0x8:GP1: OFF=0x80:POFF_SEQ
B - 685152 - PM: SMEM Chgr Info Write Success
B - 692533 - alloc smem for SMEM_ID_VENDOR2 successful
B - 697077 - sbl1_efs_handle_cookies, Start
D - 762 - sbl1_efs_handle_cookies, Delta
B - 706166 - Image Load, Start
D - 19764 - Auth Metadata
D - 1037 - Segments hash check
D - 27481 - QSEE Dev Config Image Loaded, Delta - (42084 Bytes)
B - 736148 - Image Load, Start
D - 579 - SEC Image Loaded, Delta - (4096 Bytes)
B - 744993 - Image Load, Start
D - 57127 - Auth Metadata
D - 18269 - Segments hash check
D - 98362 - QSEE Image Loaded, Delta - (1946008 Bytes)
B - 845216 - Image Load, Start
D - 19764 - Auth Metadata
D - 4026 - Segments hash check
D - 34038 - QHEE Image Loaded, Delta - (273136 Bytes)
B - 881297 - Image Load, Start
D - 19856 - Auth Metadata
D - 2196 - Segments hash check
D - 33184 - RPM Image Loaded, Delta - (219340 Bytes)
B - 917226 - Image Load, Start
D - 4331 - STI Image Loaded, Delta - (0 Bytes)
B - 925065 - Image Load, Start
D - 19764 - Auth Metadata
D - 1586 - Segments hash check
D - 28273 - ABL Image Loaded, Delta - (146000 Bytes)
B - 955656 - Image Load, Start
D - 20374 - Auth Metadata
D - 13969 - Segments hash check
D - 50843 - APPSBL Image Loaded, Delta - (1792000 Bytes)
B - 1008879 - SBL1, End
D - 741302 - SBL1, Delta
S - Flash Throughput, 95000 KB/s (4462116 Bytes, 46962 us)
S - DDR Frequency, 1296 MHz
UEFI Start [ 1182] SEC
PROD Mode : On
DEBUG Mode : On
ASLR : On
Timer Delta : +7 mS
RAM Entry 0 : Base 0x0000000080000000 Size 0x0000000080000000
RAM Entry 1 : Base 0x0000000100000000 Size 0x000000007E4C0000
UEFI Ver : 4.2.181123.BOOT.XF.1.4-00262-S660LZB-1
Build Info : 64b Nov 23 2018 20:52:46
Boot Device : eMMC
DALLOG Device [0x2000145]: Cannot turn on source[ACPL
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, PmicDxe:: PmicSchgSetChargerDefaultSetting Setting ICL = 500 mA 
1, PmicDxe:: PmicSchgInitialChargerCheckup APSD done status: 0, Port Type = 8 
1, 1, 1, 1, QcomChargerDxe:: ChargerPlatform_Init Enabled WDOG.
Setvariable returned Success
zjl haptic_on
zjl haptic_off
[CheckPanel] panel reg[0xc] value: 0x00000007, uReponseSize:2
Panel_CDP_GetID: temp1 =0;temp2 =1
Display:jdi nt36672!
ReadKeyInternal: gEfiSimpleTextInputExProtocolGuid handles = 3
ReadKeyInternal: Read KEY = 0x0
 bootstate = 0
PanelWidth=1080,PanelHeight=2160
ImageWidth=1080,ImageHeight=2160,LogoPosX=0,LogoPosY=0
Avoid flicking for 2160x1080 images 
PanelWidth=1080,PanelHeight=2160
Render Splash [ 1913]
EnvDxe Render Callback
LoadSecureApps: Load app from partition(keymaster): Status = 0x0, AppId = 65537
APC1 IDDQ WC 0 , L2:0, CPU[0]:175, CPU[1]:175, CPU[2]:175, CPU[3]:175
 APC1 Total 700
Load CPU 0 Slp: 0x8A, Int: 0xA
Load CPU 1 Slp: 0x1, Int: 0x0
Load CPU 2 Slp: 0xB3, Int: 0x1F
Load CPU 3 Slp: 0x1, Int: 0x0
GLD IDDQ WC 0
CPU PART GOOD [0x0] SUB_BIN[0x0]
-----------------------------
Platform Init [ 2073] BDS
UEFI Ver : 4.2.181123.BOOT.XF.1.4-00262-S660LZB-1
Platform : MTP
Chip Name : SDM660
Chip Ver : 1.0
Core 0 Freq: 1382400 MHz
-----------------------------
2, ChargerLib:: ChargerLib_GetErrors Battery Presence = 1 
ChargerLib:: ChargerLib_GetBatteryID BATT_ID_2 = 68589 
2, PmicDxe:: PmicFgCommon_GetBatteryStatus StateOfCharge = 98, VBat = 4206 mV Current = 205 mA Temperature = 27 C
2, PmicDxe:: PmicFgCommon_GetBatteryStatus StateOfCharge = 98, VBat = 4206 mV Current = 205 mA Temperature = 27 C
ChargerLib::ChargerLib_GetErrors ERROR Charging source not detected 
2, 2, 2, 2, 2, 2, 2, ChargerLib:: ChargerLib_GetErrors Battery Presence = 1 
ChargerLib:: ChargerLib_GetBatteryID BATT_ID_2 = 68589 
2, PmicDxe:: PmicFgCommon_GetBatteryStatus StateOfCharge = 98, VBat = 4206 mV Current = 205 mA Temperature = 27 C
2, PmicDxe:: PmicFgCommon_GetBatteryStatus StateOfCharge = 98, VBat = 4206 mV Current = 205 mA Temperature = 27 C
ChargerLib::ChargerLib_GetErrors ERROR Charging source not detected 
2, PmicDxe:: PmicFgCommon_GetBatteryStatus StateOfCharge = 98, VBat = 4206 mV Current = 205 mA Temperature = 27 C
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, PmicDxe:: PmicFgSram_ReadBattID: BATT_ID_2 = 68589 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, PmicDxe:: PmicFgSram_CondRestart VShadw = 4206 mv VEmpty = 2843 mv VPred = 4191 mv VBattEst = -15 mv 
2, 2, 2, 2, 2, 2, 2, 2, ChargerLib:: ChargerLib_GetErrors Battery Presence = 1 
ChargerLib:: ChargerLib_GetBatteryID BATT_ID_2 = 68589 
2, PmicDxe:: PmicFgCommon_GetBatteryStatus StateOfCharge = 98, VBat = 4206 mV Current = 205 mA Temperature = 27 C
2, PmicDxe:: PmicFgCommon_GetBatteryStatus StateOfCharge = 98, VBat = 4206 mV Current = 205 mA Temperature = 27 C
ChargerLib::ChargerLib_GetErrors ERROR Charging source not detected 
2, ChargerLib:: ChargerLib_GetErrors Battery Presence = 1 
ChargerLib:: ChargerLib_GetBatteryID BATT_ID_2 = 68589 
2, PmicDxe:: PmicFgCommon_GetBatteryStatus StateOfCharge = 98, VBat = 4206 mV Current = 205 mA Temperature = 27 C
2, PmicDxe:: PmicFgCommon_GetBatteryStatus StateOfCharge = 98, VBat = 4206 mV Current = 205 mA Temperature = 27 C
ChargerLib::ChargerLib_GetErrors ERROR Charging source not detected 
2, PmicDxe:: PmicFgCommon_GetBatteryStatus StateOfCharge = 98, VBat = 4206 mV Current = 205 mA Temperature = 27 C
2, 2, 2, PmicDxe:: PmicFgCommon_GetBatteryStatus StateOfCharge = 98, VBat = 4206 mV Current = 205 mA Temperature = 27 C
2, 2, 2, PmicDxe:: PmicSchgSetChargerDefaultSetting Setting ICL = 500 mA 
zjlz 3333 QcomChargerApp:: ChargerLib_Exit Error getting platform type 
2, UEFI Total : 915 ms
POST Time [ 2097] OS Loader
Loader Build Info: Dec 6 2018 19:53:30
VB: RWDeviceState: Succeed using rpmb!
KeyPressed = (0x9CE58000)
Reboot reason: 0
Platform version : 0x10000
Booting from slot (_b)
Loading Image Start : 2115 ms
Loading Image Done : 2115 ms
Total Image Read size : 512 Bytes
Loading Image Start : 2116 ms
Loading Image Done : 2285 ms
Total Image Read size : 28921856 Bytes
No dtbo partition is found, Skip dtbo
VB: DeviceInit: Device is unlocked! Skipping verification!
ReadKeyInternal: gEfiSimpleTextInputExProtocolGuid handles = 3
ReadKeyInternal: Read KEY = 0x0
 bootstate = 4
var = UNLOCK splash update
Cannot find GraphicsHandles.
ImageWidth=1080,ImageHeight=2160,LogoPosX=0,LogoPosY=0
Avoid flicking for 2160x1080 images 
Cannot find GraphicsHandles.
Render Splash [ 2351]
VB: VerifyImage: Image verification done! boot state is: ORANGE
Exit key detection timer
No Ffbm cookie found, ignore: Not Found
Memory Base Address: 0x80000000
Decompressing kernel image start: 12539 ms
Decompressing kernel image done: 13023 ms
BootLinux: failed to get dtbo image
Best match DTB tags 317/00000008/0x00000000/0/1001B/102001A/0/0/(offset)0x99F32B30/(size)0x0005C540
Using pmic info 0x1001B/0x102001A/0x0/0x0 for device 0x2001B/0x102001A/0x0/0x0
Memory Base Address: 0x80000000
smem protocol = 9C2FD0A0
board_id1 is 1
 board_id2 is 0
 board_id3 is 1
board_id is 1
get_boardid_from_smem,SUCCESS ,board_id=0x102
 PON Reason is 0x200001 cold_boot:1 charger path: 0
GetCheckPanelPressGuid:checkPanel = 0x1;Status:0x0
panel is Exist
get_hwconfig_cmdline, board_id=0x102
get_hwconfig_cmdline, hwlevel=0x1
get_hwconfig_cmdline, maxcount=0x30
aaaaaa
get_hwconfig_cmdline, i=0x15
Cmdline: ttyMSM0,115200,n8 androidboot.console=ttyMSM0 earlycon=msm_serial_dm,0xc170000 androidboot.hardware=qcom user_debug=31 msm_rtb.filter=0x37 ehci-hcd.park=3 lpm_levels.sleep_disabled=1 sched_enable_hmp=1 sched_enable_power_aware=1 service_locator.e
RAM Partitions
Add Base: 0x0000000080000000 Available Length: 0x0000000080000000 
Add Base: 0x0000000100000000 Available Length: 0x000000007E4C0000 
WARNING: Could not find mem-offline node.
kaslr-Seed is added to chosen node
pureason = 40001
Shutting Down UEFI Boot Services: 13118 ms
BDS: LogFs sync skipped, Unsupported
App Log Flush : 14 ms
Exit BS [13139] UEFI End
* Pins GPIO_4 and GPIO_5 from U201 are connected to TP11 and TP10.
* GPIO4 = TP11 = UART TX
* GPIO5 = TP10 = UART RX
* UART interface is 1.8v. Not sure if RX is working yet, because there's no voltage on this pin.
== Additional Info ==
Info from the Xiaomi Redmi Note 7, and Redmi Note 8 port that also applies to the Mi A2:
* Xiaomi Redmi Note 7 (xiaomi-lavender)
* Xiaomi Redmi Note 8T (xiaomi-willow)
* USB Internet
== Photos ==
File:Xiaomi-jasmine_sprout-uart.jpg|200px|thumb|right|UART pins location
== See also ==
* Chat room: SDM660 devices development
* Kernel used as downstream kernel source for jasmine_sprout
* Xiaomi Mi A2 Linux and Device Package